产品是软件。
我喜欢搞那些公司主营计划的业务。但是由于IT部门只提供间接支持,所以我只能放弃。我也很喜欢做系统的中心部分——总之,越重要我越来劲。最后因为我真心不想再仅仅只是给不同公司的软件写配置、调试和衔接——我决定听从自己的心声,开始去写一些有意义的功能模块。
牛逼的同事。
和一些很厉害又对工作充满激情的程序员一起工作,是一件非常刺激的事。事实一次又一次地证明,和这些家伙讨论之后出来的方案,比我们各自绞尽脑计想出来的还要好。而且整个讨论的过程也能让人学到很多东西,非常过瘾。
那么我们怎么判定对方是否优秀呢?有一个非常显著的标志就是,看他们是否保持着不断学习的劲头,是否在持续改善自己的职业技能,相关途径有:阅读书 籍和博客、接受新课程以及参与会议等等。但是这些并非是必要条件,我也曾与不少着实可称之为牛逼的程序员共事过,但是他们也没有上述这些特征。最后,还有 一点,同性相吸,优秀的开发人员往往会因惺惺相惜而汇聚在一起。这也是为什么如果一个公司有很多优秀的员工,那么就会招揽到更多优秀者的原因。
不断地挑战。
程序员喜欢用代码解决问题。所以产品中至少总得有需要改进的地方,哪怕是低延迟要求、很多并发请求还甚至是有限的硬件资源限制都可以。但是,很多软 件的难度都不高,毫无挑战性。所以不要寄希望于能找到一些难题然后好显示你的聪明才智。此外,将一些枯燥乏味的代码组织得易于理解和维护也是一种不错的挑 战。
酷炫的技术。
这一点主要是指使用一些有趣的编程语言(例如,Clojure、Erlang和 Go语言等),也包括框架和应用程序(例如Hadoop和 Cassandra等)。不过这一点很多公司都无法满足我们。因为一个公司一旦为他的程序选择了某种语言(如C+ +),那么就不会再轻易去改动。如果你想换种编程语言,那可能就只能换工作了。
忠实的用户。
编程的乐趣之一就是能制作出一些对他人有用的东西。如果辛辛苦苦的成果没人愿意享用,那太悲剧了。最好用户(用户数量愈多愈好)在关注的同时,能给予一些宝贵的意见。唯一的例外是在初创企业,压倒一切的当务之急就是尽快发布给用户。
令人满意的薪水。
大公司往往更懂得人才的价值。不过由于牛逼程序员的薪水要求会远远高于平均水平,故而留住他们得更有经济效益——即两者之间的生产力差距应该远远大 于薪水差距。不过,也有的公司并没有付给程序员相应的薪水,只管死命地压榨员工资源。像这种公司往往还会有其他原因逼得我们不得不离开,而不仅仅只是因为 超低的酬劳。
好工具。
其原因不言而喻的。一台高速的电脑、多个显示器绝对能加快我们的开发速度——没人反对?!(不过也有那种见识短浅只看到了成本,没意识到效益的boss,会say NO。)
一周工作40小时。
如果你经常要加班,那么说明这个组织结构有问题。再说,不是工作时间长产生的效益就多。
最简洁的行政管理。
在开发过程中,或多或少都会涉及敏捷开发的方法,这已经非常普遍了。
在家工作。
最好有时候能允许在家工作。当然在我看来这一点没那么重要。因为我比较喜欢在办公室工作,可以和不同的人交往。我曾使用视频会议、聊天工具和电子邮件来和远程团队协作开发软件,不过这种形式的生产力远远比不上和身边的人合作产生的。
公司离家近。
虽然没那么重要,但是能不必每天长时间得被堵在马路上总是好的,不是吗?
小结
以上是按照我认为的重要程度排列的程序员的各项需求。但是,生活不会尽善尽美,人生总会有妥协。但是越前面的需求,我越不愿意轻易放弃。各位程序员,你们最重要的需求是什么呢?欢迎留言。