Oo缘来是你oO


posts - 120,comments - 125,trackbacks - 0
对于程序员来说,什么最重要? 

对于程序员来说,最重要的莫过于对技术的掌握,可是应该还有更重要的东西,那就是思考的能力。 

作为有一定经验的程序员来说,会发现学到的并运用的知识大体上分为两类,就是比较具体的知识和相对来说不那么具体的知识,例如 

Oracle 的性能优化有关的设置项目 

Java 语言里面字符串的各种 method 的使用 

Unix 负载测量的方法。 

    这些都可以说是比较具体的知识,基本上的类型都是 how to 。学习这样的知识,最好的方法就是读书,上网读读文档,也就是说经过一定的学习和训练就能掌握的知识。通过一定的学习,每个人对这些知识的掌握不会有太大差别,换句话说,这些知识就是属于那种查一下书就知道的那种。当然了,还有另外一种,看看下面的例子。 

    从客户那里获取需求的方法。 

    项目的进行中顺利的进行沟通的方法。 

    对于业务信息化的要求,决定采取什么样的技术的思考能力。 

这些知识相对来说不是很具体,比较抽象,正因为比较抽象,所以获取这些知识的途径和方法并不是很明确。而且,同样的学习每个人的所掌握得程度也不一样。就拿顺利沟通来说,不和很多人进行实际的交往和沟通,不经历过一些失败和挫折,不尝试一些好的沟通方法和技巧,并不断的总结,光看书是不会学习到如何沟通的。 

     那么这两种知识哪一种更有价值就不言自明了,一百个程序员里面有一百个人会说第二种更有价值,更有用。那么我们不妨再考虑一下,换一个角度,不作为程序员而作为公司的管理者来来考虑这个问题。对公司来说,熟练使用 java 和 oracle 的人有很多,光考虑这一点的话, A,B 两个人,雇谁都一样,也就是说,如果光具有前面所说的具体的知识的话,你跟别人没有任何差别,没有差别说白了也就是没有竞争优势。你可能会想,那么我学点 .net, 再来点 python,这样总算可以了吧。其实,只要是技术,存在即有其存在的价值和理由,那么就肯定会有人掌握这些东西 , 也就是说,只要出钱,公司一样能找到这样的人来代替你。 

    中国那么多程序员,但是熟悉这个行业的人都清楚地知道,好的程序员还是很少,大家都去学习 java, 都去学习 stuts,spring,hibernate, 每个人好像都是很了不起,当你骄傲的时候,不妨想一想,你是不是不可替代的,你能不能做别人不能做的事情?要做一个一流的程序员,具体的知识当然要学习,同时更应该去学习那些抽象的知识。对于一个项目来说,那些只懂技术的程序员就是一个标准件,标准件对公司的好处就是替换起来很容易。那么,好的程序员,在项目中起到举足轻重的作用,别人无法替代,做这样的程序员才应该是我们的目标。 

    再举一个例子,我们都有过参加这种会议的经验,负责企划的部门和负责技术的部门一起开会,企划一方经常会提出各种方案并向技术部门询问其可行性,而技术部门的人,马上就说不能实现,并且用各种各样技术词汇来解释为什么不行,企划的一方,根本不懂这些技术词汇,会议也就不欢而散了。在这种情况下,一个好的程序员就会说,这个根据目前的情况还不能判断能不能实现,在我们做出 Yes 或者 No 这样的结论之前,不妨好好想想怎么才能实现。这样的话,会议的气氛就会向思考“怎么做才能实现”这样的积极的方向发展,大家也都会更有兴趣。 

    写程序,写设计书,管理自己的日程这些都是最最基本的素质,仅有这些并不会成为一个好的程序员。好的程序员应该是不断地考虑,如何让项目顺利的进行,如何让对方积极的回应你的意见,并付诸于实践,而且能够实现。这样的程序员,才具有了别人不可替代的价值。 

    那么如何成为这种不可替代的程序员呢?没有特别好的方法,建议到有一个。就是在日常的工作中有意识的要求自己去具有这种能力,不断的考虑,现在的自己应该如何思考才能成为一个不可替代的人,自己在哪些方面还有所欠缺,不断的想这些问题,不知不觉也就有了去深入思考的潜意识,具有了这种潜意识之后,你平常所作的事情都会不知不觉地向这个目标靠拢,一切都是在不知不觉中进行的,这是第一步,也是最关键的一步。 


   写到这里,我不禁想起了前一阵在一个 Forum 里面听的一个人力资源方面的讲座,讲座的老师就提出了一个社会人要有能不依赖于公司的能力,这种能力是什么,说简单了就是离了公司你能活的很好,再进一步的话,就是公司离了你损失很大。成为这种人,人生的选择就会更加自由了。我想具有不依赖公司的能力与这里面所说的做一个好的别人无法替代的程序员的提法是比较统一的,只是从不同的角度阐述而已。 

    如果从谈技术的角度来看的话,做一个好的程序员并不是会使用最新的技术,会使用什么什么框架,而是有良好,全面,扎实的基础。技术的发展并不是跳跃的,而是连续的,任何的一个所谓的新技术,无非是某一个旧知识的重新包装和整合,东西还是那么多东西,只不过用的方法和方式不一样了。如果有一个好的基础,无论什么东西,你都会快速理解,看透其本质,掌握其精髓。但是任何一个人,都不可能一开始就把基础打得天衣无缝,一个好的程序员的学习曲线我想应该是上上下下的,学习上面的新技术的同时,静下心来好好学习一下相关的底层的基础知识,不断的循环往复,不断的积累,并且不浮躁,应该是一个成为好的程序员的途径。


马嘉楠
jianan.ma@gmail.com

posted on 2006-08-28 11:10 马嘉楠 阅读(266) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: