个人现在逐渐认为真正的程序员需要懂:
 1:数学:          懂得了数学才能真正的很好的解决在很多行业应用里的实际的专业技术问题。
 2: 数据结构,算法: 写高效程序的基本条件,真正懂得计算机。
 3: 设计模式,软件架构,这样才能写出优越的,可维护的,可扩展的,高效的好软件出来。
 4:当然最基本了,精通编程语言。如果是在windows下编程,windows消息机制,GUI编程,熟悉windows API这些基本的就肯定要会了.
欢迎大家讨论!!!!!!!!!!!!

解决方案 »

  1.   

    算法,浮云的东西。
    很多东西都是用现成,不见得你自己去写个算法。
    说难听点,研究新的算法,没那本事。
    ctrl+c
    ctrl+v
    很好,很强大
      

  2.   

    ctrl+c 
    ctrl+v 
    很好,很强大
      

  3.   

    我来说一下我的看法:
    我的观点:真正的程序员在任何时候,任何年龄都应该有很强的竞争力.君不见,微软,google,IBM等大公司的的真正的高级程序员,技术骨干都是写老家伙!   那么为什么现在很多人都说程序员是吃青春饭的.很多人干了几年程序员后都觉得累,迷茫,彷徨,想转行.为什么干了5,6年后反而觉得自己的比刚干2,3年的时候竞争力下降了呢?为什么年龄大了就想转行呢.原因我觉得如下:
       1:年龄大了后,身体不如年轻时好了.
       2:在有了家庭孩子后,负担重了.
       3:那么自己的技术和经验呢?比工作2,3年的时候有质的提高吗?答案是大多数的人没有什么质的提高.
    虽然多做了两个项目,都熟悉了些API.
      特别是有部分程序员长期比如就做什么MIS系统,OA系统等,一个又一个类似项目都
      重复着建表,sql新增,删除,操作,然后统计出报表等. 那么做1个项目和做十个项目对你的能力提高又有多大的差别呢?
      那么又比如我,我做过一MIS系统,还做个完全类似Excel的电子表格,AutoCAD的ObjectArx二次开发( 建筑涵洞设计软件 ),类似CoreDraw的矢量图软件
     那么这些下来我熟悉了什么,反复的熟悉着gdi,gdi+,数据结构都用stl,反复的重复着在屏幕上画线,画点,画面。计算几何图形的面积,体积
    等等。于是呼,曾几何时,我也迷茫了,原来,程序员就不过如此?
      曾几何时,我热情的去拥抱com,atl,sdk,mfc, .net ,本想,如果我懂了这些,我就是真正的高手程序员了。等我逐渐懂了后,我发现原来不是,
    我更加迷茫了。
       
    所以大家麻木了,迷茫了,甚至觉得原来传说中的聪明的程序员原来也就如此而已:照样天天做着那枯燥重复的简单劳动?  那么程序员真的就那么一回事,那么简单,那么吃青春饭吗?后来我渐渐醒悟了:实际上我觉得在技术行业,程序员是一个最具有不管你
    学多少,都可以致用的职业,也就是说你可以学习一辈子,然后把你学习到的所有东西都应用到你的软件中去的职业。
      1:你认真的审视过你做过的项目中你写的代码和设计吗?你是不是曾经觉得自己做的项目,有什么bug,而别人怎么也找不到,而你一下就找到
      了而骄傲,觉得自己的价值得到很好体现:嘿,这公司还真离不开我,(我有过).有没有你想从一个公司走,而公司怕你走后你的代码无人维护
      而极力挽留你的事呀(自己还好得意,向朋友炫耀)(我有过).那么,现在我要说:这说明你的代码写得太烂了.你没有设计,没有文档.你的代码
      随心所欲,天马行空.简直就是一堆垃圾. 如果你的代码有好的设计文档,代码排版工整,注释详细,那么会发生我以上说的那些吗,如果你的设计
      有好的可扩展性,可维护性,高效率,那么老板需要那么紧张你的走吗? 所以我觉得这句话很正确的:好的程序员是特"懒"的程序员,他从来都不想
      维护自己写的代码,直接把自己的"艺术品"交给别人,别人就可以维护了.  如果你和我一样,那么请注重系统架构(文档化),系统设计(文档化),
      代码注释,代码编排等.   请学习系统架构,设计模式,编码规范吧.
      2: 对于数据结构.也许你和我一样认为,需要很深入的学习吗?stl不是很好吗?基本数据结构都有了.是的。我也这样认为过。那么baidu,google能直接
      用stl搞定所有问题?也许你说了,我又不去搞那玩意!那么类似excel的电子表格,这个简单吧.那么就比如我自己做的那个吧.是的,我可以做得表面上
      和excel一模一样,但是在极限情况下: 65535行* 256列时,Excel依然速度流畅,而我的就没那么快了.那么这个时候我就只能说我确实比Microsoft的程序员是
      技不如人了.  所以不要说效率不重要,数据结构不重要!!!!!!!
      3:再说数学吧.我曾经也觉得那玩意和我的程序没太大关系,大不了我最常用的就是中学那点数学知识,什么sin,cos,y = kx+b, y =  a * x *x + b * X + c就足够.
      不,就比如说我现在遇到的工作情况吧,需要绘制一幅数据图.图的y坐标要求用"概率的正态分布"来刻画.这不就用到了大学的概率统计.还有矢量图中大名鼎鼎的
      贝塞尔曲线,如果你为了局部刷新,那么你需要计算一贝塞尔曲线的包围盒吧,那你得计算贝塞尔曲线的最值吧.那贝塞尔曲线方程可是三次方程,求最值就要用到大学里
      的求导来找呀. 还有在很多行业的专业软件里,比如石油地址勘探软件,用户的资料都是离散的点.你的软件最后要通过算法把它模拟出面,模拟出体.这不就要大量用到
      数学吗? 我觉得最基本的需要好好学习高数,概率统计,数值算法,线性代数!
      4: 当然还有就是和你软件相关的行业知识.
      5: 计算机基本知识:什么编程语言,com,.net,atl,stl等等.
      
      
      如果你我做到了以上5点:其实以上5点每一点一直到你老你都可以不停的学习.那么你我就一直都会有很强的竞争力.
      而很多人(当然也包括现在的我)都主要就懂第点,所以....
      让我们一起努力吧!!!!!!!!!!!!
      
      
      
       
      
     
      
       
      

  4.   

    真正的程序员需要什么不知道
    不过要达到高水平的程序员,一定要懂数学和物理,参考贝尔实验室那些,比如c之父,c++之父,Unix之父
    数据结构上面的树,图等等全是数学分支,所有的算法都是数学公式.离散数学就更不用说了
    至于设计模式和软件工程什么的, 如果你能很快理解相对论,量子力学,那几个模式也很容易就理解了.顺便一说,模式和工程是经验总结相关,单纯学习是学不好的.现在回想,计算机大学本科,还是主要抓数学和物理比较重要.稍带些电子电路,基础编程等.至于操作系统,编译原理,网络协议什么的,简单一学,到了工作中再慢慢研究就行了.不信看看你们身边刚毕业的同学,能理解OS的进程线程,能分清七层协议是怎么回事,用C来读写个文本文件,能达到这个水平绝对达不到1/3.
    开了那么多科目学不会,还不如少学点,学精了.如果做算法相关的编程,比如图像处理,视频压缩,物理或数学系毕业生应该比计算机专业毕业生做的更好.
      

  5.   

    同意楼主的看法。只是我觉得一个程序员不应该是知识驱动的,而是目标驱动的,希望做什么样的东西就学什么样的东西。想做架构当然要把设计模式摸透,想做算法当然要把数学基础和数据结构学精,想做操作系统当然就要把硬件和汇编搞清楚,等等。另外,一个好的程序员我觉得还有一点很重要的就是要知其然亦知其所以然,这是指导学习路线的天然方式,我们可以放心的使用stl,但是不明白其内幕就不能成其为高手,在使用时我们都希望别人把东西封装好,但是封装只是限制我们的代码访问别人的内部代码,封装从来也不曾要限制我们的眼睛去访问别人的内部代码。感觉如果没有必要,那么从自己的既有知识去扩展相关部分比跳出自己的知识域从0开始学习一个新东西要省时省力的多,而相比之下,大部分情况扩展的知识更能够及时应用到手头的工作中。