我认为程序员和医生在某些方面很相似。医生是在解决人的问题,而程序员是在解决产品的问题。它们都有相似的职责,都是用理性的技术手段解决问题。程序员可以从医生的身上借鉴到很多东西,比如职业素养标准。
程序员的职业素养是建立在技术水平上的。对程序员来说,技术是解决问题的手段,类似医生给病人治病用药。很多人工作没几年便觉得技术“精通”了,工作没挑战了。孙老爷子(孙思邈)骂这种人:“世有愚者,读方三年,便谓天下无病可治。”以前端开发来说,HTML、CSS的语法规则一个小时内完全可以掌握,但离运用它解决问题还相去甚远。
技术范畴里有各种著名、非著名的开源类库、各种“大牛”的文章、书籍。这些都是别人在解决所遇问题积累下来的方法和经验。在解决自己项目中的问题时,可以用,可以借鉴,但要了解其中的“至精至微之事”,绝不能用“至粗至浅之思”去用它们。我经常看到一些简历中,列出一长串开源库的名字。但掌握它们的用法,丝毫不能代表技术水平有多高。
除了上述现象以外,还有另外一种现象,很多程序员确实热爱技术,但他们不是在尽心地为所服务的对象解决问题,而是借项目机会不管三七二十一地练手。
相反,如果是一个解决问题能力超强的程序员,应该遵循什么样的行为准则呢?
第一,先敬业后乐业。关于敬业,梁启超说:“敬业就是凡做一件事,便忠于一件事,将全部精力集中到这事上头,一点不旁骛,便是敬。”敬业的程序员不一定要天 天加班、没日没夜地工作。导致加班的因素也许是开发方式不对、架构不灵活或是技术落后。敬业的程序员会凭借自己的技术能力和判断力,解决掉其中的症结,而 不是得过且过。
我有一位同事就是敬业典范,几年里他参与过公司很多项目的开发,并且做每一个项目都很投入。比如做了一段时间的在线阅读项目,便开始对排版产生浓厚兴趣,也因此比其他人在项目中收获更多东西。
当程序员不能深入一个问题到“至精至微”的程度时会产生很多问题:
- 不能更好地利用技术(也就不能更好地解决问题);
- 不能提高自己的技术水平;
- 体会不到工作的乐趣。
梁启超解释乐业时说:“人生能从自己的职业中领略出趣味,生活才有价值。”很多人上来就追求乐业,有点本末倒置了。
第二,认真严谨的态度。孙老爷子说“不得于性命之上,率尔自逞俊快,邀射名誉,甚不仁矣”,是说不能在人命关天的大事上轻率地炫耀自己才能出众,猎取名誉, 这样做就太不仁德了!无论能力多强的程序员,都不该有炫技的想法,这样就偏离了解决问题的根本出发点,对整个团队的技术氛围也会产生不良影响。相反,能力 越强的程序员,看待问题越全面、越深入,对表面上看似简单的问题也不会轻易下结论,会考虑更多潜在的问题。
第三,乐于交流和分享。要知道你 在Google上搜到的都是别人无私奉献出来的知识和经验,利用这些开源技术解决难题,应有感恩之心。其实当程序员看到应用某种技术能将问题完美解决,也包括解决别人遇到的问题时,会有一种成就感。在公司里,程序员利用工作时间解决的问题、获得的经验,有责任主动分享出来,帮助他人节省开发时间。