从最最基本的层面上讲,每个员工都应该为最求两种基本的能力而奋斗,它们是:编程技能和做员工的技能。
编程技能是指能写出好的,稳定的,有效率的,可维护的,以及所有其它褒义形容词能描绘的代码的能力。这些是程序员们喜欢花时间反复唠叨,讨论,阅读的东西。
做员工的技能是指做一个好的雇员和同事的能力。它意味着有求必应,善于交流,能够按期完成,善于接受反馈,有能力把复杂的事情解释清楚,以及其它一些类似的技能。
一个极端的例子
对两个人的形象描绘:
Rodrigo毕业于麻省理工,他在业余时间开发编译器。他是Haskell语言的核心代码捐助者,他开发了很多非常有名的Python程序库。他写出的代码都是非常健壮的代码,可读性好,能够优雅的处理各种程序上的临界计算场景。然而,他通常是拖延几天才回复邮件,你很少见他会接听电话,他看起来并不真正理解按时完成任务的重要性,他按自己的方式做事,你不可能弄清楚他究竟是怎么想的,只感觉他脑子里都是一些漫无边际的想法。
Gabriella并不是一个非常优秀的程序员,她写的程序看起来显然很业余。15到20行就能完成的程序她写了30行。她的程序里有bug,这让QA部门在上面花费了不少时间,她没有真正理解写出的代码应该具有好的性能的道理——“能用就行啦!”。然而,她很热情——她收到邮件几分钟内必给予回复,她从不漏接一个电话,她善于沟通,她能把复杂的技术问题清楚的讲给客户听,她从没有逾期完不成任务,她不断的寻求反馈来改进自己的工作,她是一个很随和的人,同事喜欢跟她说话。
现在,好好想想这个问题。哪一个人你更愿意和他/她共事?
什么是最重要的?
依我的经验,程序员更愿意和Rodrigo同事,而老板们更喜欢Gabriella。
这很正常——毕竟,程序员是苦于和那些烂代码打交道的,而老板们操心应付延误的工期和改善团队里沟通不畅。所以,我都更喜欢给我们带来尽少麻烦的人。
然而,问题是,老板们是给我们工作机会的人,他们是能让我们晋升,涨工资,能给我们嘉奖的人,在这种情况下,Gabriella就脱颖而出了。我已经很多次见到这种情况了——具有好的做员工技能但编程技能差的程序员最吃香,而具有非常好的编程技能但不善于沟通的程序员永远都走在别人后面。
不管我们程序员如何认识这个问题,如果你想在给别人编程打工中获得事业成功,编程技能不是第一重要的。学会如何做一个好的员工才是重要的,甚至是非常重要的。