关于我们这个行业,“是什么品质使得优秀的程序员区别于其他程序员?”是最难回答的问题耐乱之一。最近我阅读了EranGalperin的《WhatMakesagoodprogrammer》,很有感触,于是北大青鸟想和大家分享一下我认为团队中每个人都需要具备的基本技能和特质。
1.适应性和灵活性
很多开发团队都在喊我们需要灵活的开发人员——尤其是在软件开发初期这类人才更为重要。如果你平时是搞UI编程的,那么我们希望你能深入到数据持久层。我们甚至可能还会要求你去做一些测试。你可能是作为一个Java程序员而聘用的,但我们希望下一个应用程序你能用.NET写擅长多任务和成为某个领域的专家一样重要。在当时可能会让你想抓狂,但是挨过这段日子之后,你的简历绝对会让你的下一个雇主心动不已。
2.热情
也许你上大学学习计算机科学这个专业,只是因为你听说这行业能赚钱。几年之后,当你发现回报并没有你想象得那么丰厚的时候,可能就会开始沮丧,提不起干劲来。伟大的程序员会真心实意地爱着编程——可以不喜欢现在正在搞的代码——但总的来说,你应该成为一个享受于构建一些东西来解决问题的人。当有时间空下来可以喝杯咖啡的时候,你会去逛逛类似于JavaLobby的网站,寻找提高自己的途径。你会对谷歌最新的举措,市面上刚出来的Web框架感兴趣,津津乐道。
3.用科学武装头脑的实干家
《ThePragmaticProgrammer》是软件行业中最重要的书籍之一。它不仅不局限于某一种特定的编程语言,而且还为我们提供了一系列的指南,是一部非常经典的着作。在团队工作时我们祥亩塌需要考虑到自己的行为所带来的后果,拒绝“破窗理论”。对工作保持一贯的高标准——测试、编码和文档等等——然后渐渐带动整个的团队,蔚然成风。
保持新鲜感的最好办法是用科学的思维武装头脑。任何问题都可以被分解,所有语言都有着一系列相似的特征。之所以有些人能做到这一点,而其他人却不能的主要原因是在于,你是否保持对自己的质疑:这个代码片段还能不能写得更好?是不是可以用一种更有条理的方式呈现这些信息?我可以郑重地告诉你,这些答案几乎总是肯定的,谨圆所以踏踏实实地解决这些“自我质疑”吧!
4.良好的组织安排能力
一个优秀的程序员会把事情安排得井井有条,甚至每天下班前都会列出明天的任务。这样如果需要做别的事情的话,至少可以参考这个清单,看看放到什么时候做合适,或者会不会对其他任务造成影响。ps,这里推荐一个蛮有用的工具——Mylyn,一个基于任务的Eclipse插件。
在处理代码和文档方面也需要良好的组织安排能力。如果我们能够有组织地进行封装、设计、命名类和变量,不但有助于团队成员的理解,还能让你几个月后的再次查看,不至于像是在阅读他人的代码。
5.通情达理,平易近人
我们大多数在团队环境中工作的,所以我们必须要具备人际交往的能力。所有被尊重的伟大程序员个个都平易近人。你需要腾出时间为他人提供帮助,不管是有问题的代码,还是项目经理想了解一下你的预估。除此以外,你还应该尽量做到表达清晰——以免交流之后,对方反而对问题更加困惑了。
从目前行业的发展趋势来看,程序员可以往以下几个方向发展:第一,走研慎空闷发路线。如果程序员未来想在技术领域走得更远,应该走研发级路线,简单的说就是培养自己的创新能力。对于大量目前从事应用级岗位的程序员来说,要想走研发级路线要注重数学能力的培养,因为软件研亏和发问题说到底就是数学问题。对于条件允许的程序员来说,可以重点考虑一下通过读研来完成岗位升级。
第二,走咨询路线。对于长宽弯期从事行业定制软件开发的程序员来说,未来可以走行业咨询专家的路线。要想走行业咨询专家路线,需要在平时的工作中积累大量的行业解决方案,并且能够根据技术发展趋势不断完善相关方案。目前行业咨询专家的薪资待遇还是比较可观的,随着产业互联网的发展,行业咨询专家的岗位需求量将持续增加。
第三,走管理路线。管理路线也是不少程序员的重要选择,比如高级项目经理、产品经理等都是不错的选择,另外不少程序员也会转向人力资源管理方面的岗位,比如负责新员工培养以及招聘等工作。在互联网快速发展的近些年来,不少公司都采取“老带新”的培养模式,所以不少经验丰富的程序员逐渐走向了管理岗位。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)