撤离一线城市工作已经接近一年时间,工作环境发生变化,让我印象深刻的应该是公司周围同事的工作状态。身处环境氛围的改变让我略感恐慌,总结一篇文章我认为好的程序员应该是什么样的,写出来提醒自己。(图片来自网络见水印)
技术能力
技术是一个程序员吃饭的本钱,你可以什么都不擅长,不擅长沟通、也不擅长表达更不擅长管理,但是作为一个以技术名义拿工资的人,具备对应职位应有的技术能力这个是一定不能改变。初级工程师能按照设计文档很好的完成工作,中高级工程师能提出自己的设计思路、实现想法并且高质量完成工作等等。那种平时不太活跃但是能凭借自身能力把自己工作做好的人给我的感觉其实也非常不错。对一个人能力的要求是会随着职位、时间的变化而更加严格,所以一个人在同一个公司干满1年、3年或者5年,公司对他的期望肯定会不一样。我觉得某些公司淘汰部分年龄大而能力没跟上的员工完全合符情理。因此,后面提到的持续学习、提升自己也是我认为一个好的程序员应该具备的素质。
这里的技术能力是技术综合素质的描述,并不限制于你必须掌握多少门编程语言、会用多少框架解决多少业务、又或者精通多少设计模式、手撸什么什么算法之类的。它体现在多个方面,写代码能力、思考能力、抽象能力、设计能力等等诸如此类的我认为都算。抛开先天因素,这些能力都可以通过后天训练得到相应的提升。单从写代码来说,不管什么级别,我以为一个好的程序员应该适当保持码代码的频率。我现在的职位是技术经理,但是实质上我估算我半年的代码量(包括实际工作中和工作之外)比项目组中其它任何一个人都多。编程这个东西,长时间不摸键盘,真的会生疏。
能接受新事物,持续学习
一个好的程序员应该能接受新的事物,这里不限于技术,还包括其它思想、观点、现象等等。对未知事物保持好奇心,促使自己去探索、学习,从而提升自己。程序员的经验都是靠慢慢学习积累而成,我们身上大部分技能都是在离开学校之后才掌握,如果自己的工作内容本来就相对固定,再加上缺乏学习进步的意识,那么一年两年之后的你跟现在的你几乎没有什么区别,唯一不同的就是年龄又大了一两岁,竞争力又下降了几个百分点,再想想5年、10年之后会如何?而一直保持学习习惯的人,从内到外都能得到提升,自身技能不仅能够突破日常工作的要求,又由于有源源不断新的知识输入,平时在沟通、交谈之时也会更加自信。再或者实在哪天干得不爽了,拍屁股走人也是相当有底气。仔细想想,有多少人想跳槽但又对自己无论能力还是经验都缺乏信心,始终忍声吞气地呆在同一个公司,既不涨薪也不升职的?
有的人就会说了,我年龄大了,除了工作之外还有非常多的事情要做,哪来时间精力去学习新的东西?说这种话的人大多数可能都没从内心认识到保持学习的重要性,我认为一个好的程序员应该把持续学习当作生活中的一部分,就像你每天要睡觉、刷牙洗脸一样,为什么你每天刷牙洗脸有时间?因为你觉得不刷牙洗脸出门会很难堪,那么学习也应该是一样的道理。不管是中国古人说的“活到老学到老”还是我们敬爱的乔帮主说的“stay foolish, stay hungry”,我觉得都是非常适合各行各业每个人,当然也包括一个好的程序员。一些公司招聘满30岁的简历直接不看,这并不是歧视,从概率上讲,它能够提高合格人才招聘命中率。
勤于总结
前面说到的两点我认为是成为一个好的程序员的基础条件,那么这里说到的“勤于总结”其实是对“持续学习”的一个补充,算作是如何学习的一个方法。无论是自己通过某种渠道学习到的新知识,还是工作中碰到过的疑难杂症,我觉得都有必要进行适当的总结,总结的过程就是梳理、反思的过程,帮助我们加深认识,增强记忆。