在核心部门工作
我喜欢我工作的项目是公司的主要业务。当然不包括在信息技术领域工作的人们,因为他们的工作只适合接待间接业务(不管是什么业务)。我也喜欢工作系统 的中央部分,越重要越好。如果我的工作部部分停止工作,应该立即成为公司的紧急问题。总之,我不想只是其他公司的配置,适应者和粘合剂——我自己想增加大 量的功能。
不错的同事。
与聪明的并且充满热情的同事们在一起搞软件开发是一件特别刺激的事,我注意到一次又一次,我与同事一起讨论一个问题或一个设计的解决方案,都比自己要好。这种方式不仅能获得更好的解决方案,这个过程本身也很愉快。
你怎么知道某人是否是一个好的程序员?一个很明显的标志就是,他们是否在不断的学习和提高自己的技能,例如通过阅读书籍和博客,上有关的课,或开一个 类似的会议。尽管这样,这并不是一个必要的条件,我曾经与很多非常好的开发人员的工作,他们也不曾这样选择。总之,好的开发人员往往会因为以上各种原因吸 引其他开发人员。事实上,一个公司有很多伟大的开发人员使招募更多人才变得更容易。
挑战性的问题。
程序员喜欢用代码来解决问题。某些方面的产品起码应该有些要求比如需要聪明的解决方案,要求减少延迟,或有限的硬件资源,等等许多并发请求。然而,很 多产品软件是常规代码没有任何特别困难的部分。所以你不要指望只工作中遇到“难题”,而避开一切其他的。此外,组织无聊的代码,使它变成很容易理解和维护 的代码,这是一个很大的挑战。
很爽的技术。
这主要是关于使用有趣的编程语言(例如 Clojure,Erlang 或者 Go),但也包括框架和应用程序(例如 Hadoop 或 Cassandra)。这是一个公司可能有问题的地方。如果他们的应用程序是用某种语言(如c++),它不会改变。所以,如果你想要改变使用一些新的语 言,那么你需要改变工作。例如,如果您希望使用在斯德哥尔摩 Erlang,你可以试试 Klarna 或 Campanja。
用户
编码的乐趣之一就是创造对他人有用的东西。制造没有人使用东西是一件很无聊的事情。让用户(越多越好)在工作中使用并给出有价值的反馈。唯一的意外是刚开始,然后必须让用户尽快达到压倒一切的优先级。
丰厚的的薪水。
公司有很多优秀的开发人员知道伟大的人民劳动的价值。原因是优秀的和普通程序员之间的差异很大,具有的经济价值超过了开发价值——生产力的变化远远大 于工资的变化。另一方面,公司不支付他们的程序员往往是公司认为程序员是可互换的“资源”。这些都是公司想避免因其他原因,不仅仅是工资太低。
好工具。
这几乎是不言而喻的。高速的计算机和一些监控设备——对,是谁反对?(好吧,秃顶老板干涉,只看到成本,而不是利益,这样的做法将会被反对)。
每周工作 40 小时。
如果你经常需要加班的话,一些组织安排肯定是错误的。此外,长时间工作不等同于富有成效。
最小的官僚机构。对于开发过程,这是或多或少固定与敏捷开发方法,这似乎普遍采用。我的经验,一般行政超载问题主要是在规模较大的公司。
在家工作。
能够很方便有时在家工作,但它在我的列表中不放在重要的位置。我喜欢在办公室和与人交流。我使用视频会议和远程办公室工作,聊天和电子邮件,但它并没不如在办公室方便,更容易有收获。
交通方便,时间不长。
显然很难影响,但如果每天不花几个小时在交通上,的确很棒。