程序员追求的是什么?

转载 2013年12月03日 15:03:54

上周我收到三位Halmstad大学学生的电子邮件,他们正在做一个为期三月的项目,内容是关于程序员在工作中追求的是什么,以及企业如何吸引有才华的程序员。下面是我对他们问题的答案,按重要程度排序。显然人们会有不同的偏好,所以我很有兴趣听到你们赞同哪些反对哪些,以及你们认为遗漏了的要点。

 

1. 做软件产品。

我希望我参与编写的程序成为公司的主要业务。这就排除了IT维护工作,因为这种工作只是间接地支持了真正的业务(不管它是什么)。我也希望参与系统核心部分的工作,越重要的越好。如果我做的东西出错了,它应该马上成为一个紧急问题。最后,我不愿意参与仅仅是配置、应用或整合其他公司的软件 — 我希望自己来实现关键性的功能。

 

2. 优秀的同事。

和对软件开发充满激情的聪明程序员一起工作是催人奋进的。我一次又一次地看到和同事一起谈论一些问题或设计是如何产生比我们任何一个人自己闷头想出来更好的思路的。这种合作方式不光是产生更好的代码,过程本身就是非常令人享受的。

你怎么知道某人是不是一个优秀程序员呢?一个特别好的特征就是看他们是否持续学习和提高他们的技能,例如通过读书、看博客、参加培训课程、以及参加技术大会。这倒也不是一个必要条件,我就曾经和很多不干这些事的很棒的开发者共事。最后,优秀的开发者会吸引其他的优秀开发者,因为以上原因。如果一个企业有很多优秀的开发者,它就更容易招到更多的优秀开发者。

【伯乐在线补充】:学习再学习。正如第5点所说,我经常会在手里拿一本计算机或编程相关的杂志或书(不信,可以问我的朋友)。诚然,总有很多你不知道的技术,你可以从中学习以保持不落后。如果你有一种灵巧的方式来获取你需要的新技术,那你每天都应该坚持学习。——摘自《风雨20年:我所积累的20条编程经验

 

3. 挑战难题。

程序员通过代码解决问题。开发的产品起码在某些角度需要聪明的思路,比如低延迟、大量并发请求、或有限的硬件资源。不过,很多软件产品都是由常规代码组成,没有什么难做的部分。所以你也不能只是盼着做“困难问题”而避开其他的所有需求。而且,组织好那些看起来很无聊的代码,让它们容易理解和维护,这本身也是一个巨大的挑战。

伯乐在线补充】:软件开发界的另外一个小秘密是:编写优秀代码和糟糕代码所花费的时间是一样多。一位训练有素的工程师,他/她会从第一行代码开始就考虑可维护性和代码的演化。没有任何理由编写“丑陋”的代码、长达数页的函数,或是稀奇古怪的变量名。优秀的工程师编写代码会遵循命名惯例,代码编写紧凑、简单和不过度炫耀聪明。代码的每一行,都应恰如其分地展现出其原有目的。在给不便理解的代码(块)合理注释时,别忘了命名规则。清晰明了的函数名和变量名可以让代码不言而明。——摘自《明星软件工程师的10种特质

 

4. 很酷的技术。

这主要是关于使用有趣的编程语言(例如Clojure、 Erlang 或者 Go),但也包括框架和应用(例如Hadoop 或 Cassandra)。这可能是某些公司有问题的地方。如果它们的应用是用某个语言(比如C++)写的,它就不会改了。所以如果你想改用一些新的语言,你可能需要换个工作。例如,如果你在斯德哥尔摩想用Erlang,你可以给Klarna 或 Campanja公司投个简历试试。

 

5. 用户。

编码的乐趣之一是做出一些对别人有用的东西。做了东西却没人用就无聊了。要让用户(越多越好)关注你开发的努力并且给予有价值的反馈。唯一例外的可能是创业的时候,但是之后就要把吸引尽可能多的用户作为最优先的事情。

 

6. 不错的薪水。

拥有大量优秀开发者的公司懂得优秀人才的价值。因为优秀和一般程序员之间的差别是巨大的,所以报酬向优秀开发者倾斜在经济上是有道理的 — 其实在生产效率上的差别远大于薪酬上的差别。反过来说,那些不舍得给程序员较好薪水的公司往往把程序员看作是可以随意更换的“资源”。那么这些公司在其他方面的表现恐怕也是你看不上的,不仅仅是低薪水。(推荐阅读:《想招优秀的程序员,给他们付足够的钱吧!》)

伯乐在线补充】: 一个优秀的程序员的效率会是一个普通的程序员的十倍之上。一个卓越的程序员的效率会是一个普通程序员的20-100倍。这不是夸张 — — 1960年以来的无数研究都一致的证明了这一点。一个差的程序员不仅仅是没效率 — — 他不仅不能完成任务,写出的大量代码也让别人头痛的没法维护。——摘自《一些鲜为人知的的编程真相

 

7. 很好的工具。

这个因素的重要性几乎是不言自明的。一台快速的计算机和几个显示器可以加快开发过程 — 谁会反对这一点呢?(好吧,那些光看成本不看效率的秃头老板可能会反对)

37signals Noah's desk

伯乐在线补充:37signals 员工 Noah 的工作台——《37signals员工的办公环境

 

8. 一周工作40小时。

如果你总是要加班完成任务,肯定是你工作的单位有一些问题。而且,长时间工作也不等于有效率。

 

9. 最少的官僚主义。

对于开发过程来说,或多或少会有敏捷开发方法的影子,看起来大家都采用了这种思路。根据我的体会,在大公司里日常管理的那些琐事基本上都是躲不开的问题。

 

10. 在家工作。

 有时候能在家工作是有效的,不过我不常这么做。我喜欢在办公室里,和同事交流。我曾经通过视频会议、聊天工具和电子邮件在一个远程办公室工作,但这样的工作效率还是不如现场合作的高。

 

11. 离家近。

显然这不容易强求,但是能不用每天花几个小时在路上多好啊。

 

评论

如果你是咨询顾问(而不是程序员),这个列表上某些项可能会不一样。我总是愿意在产品公司工作,主要因为我喜欢深入了解系统,看着它随时间如何演变。所以我没有作为咨询顾问的第一手工作经验,不过我觉得是这样的:作为一个咨询顾问,你更容易接触到很酷的新技术,因为你有机会和很多不同的客户一起工作。但是,即使你有很棒的同事,你可能也不会每天和他们在一起工作,因为你们会被派到不同的客户那里去。

这就是我在单位里最看重的几个因素,按重要程度排序。在现实生活中总会打一些折扣,但越是列在前面的因素,我就越不愿意给它们打折扣。你看重的因素有哪些呢?


相关文章推荐

程序员追求的是什么?

文章转载自:开源中国社区 [http://www.oschina.net] 本文标题:程序员追求的是什么? 本文地址:http://www.oschina.net/news/39161/what-...

是什么成就一个伟大的程序员?

我能坦诚地说没有哪次文本编辑器的改变使我成为了更好的程序员。 你积累的技巧、知识和经验才是方程式中最重要的部分。按:有很多人不关心自己天天使用的工具,这是一个阶段。有一部分人开始关注工具,但却容易忘记...
  • wyhkgd
  • wyhkgd
  • 2011年07月15日 11:16
  • 317

是什么造就了伟大的程序员?

导读:本文是从《What Makes A Great Programmer?》这篇文章翻译而来,译文来自外刊IT评论《是什么造就了伟大的程序员?》。软件开发实际上是比任何人的想像都要缓慢的开发过程。它...

程序员们,你最钟爱的玩具是什么?

点击查看全文 提起玩具这个词,我们大概首先想到的就是娃娃机里琳琅满目的娃娃,孩子们手中的积木,堆沙堡的铲子,和童年时分的四驱车,圆卡片以及咚咚的弹簧拳~,而在我们长大后,似乎玩具的概念就变得...

《程序是怎样跑起来的》读书笔记 之 第一章 对于程序员来说CPU是什么

程序是怎样跑起来的 第一章读书笔记。主要介绍了内存的组成,程序的执行过程。...

清河好程序员训练营是什么?

好程序员特训营的诞生? 在我国移动互联网发展的必备条件就是人才,作为新兴的知识密集型产业,移动互联网的高速发展受其核心专业人员,特别是高端人才的制约,可以说高端人才短缺已经成为移动互联网行业发展的瓶...

黑马程序员_java 中的序列化是什么意思?有什么好处?

---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ---------------------- 1、序列化是干什么的?  ...
  • redouba
  • redouba
  • 2013年06月30日 22:30
  • 888

程序员最后归宿是什么?30或35想转行?

中学政治学科的课堂上,辩证唯物主义告诉我们,任何事物都包含着既对立又统一的两个方面。要如实的反映事物的本来面目,就必须坚持一分为二的矛盾分析法,对矛盾作全面的分析要运用两分法、两点论去认识事务的本质。...
  • formiss
  • formiss
  • 2011年10月15日 12:27
  • 727

程序员最核心的竞争力是什么?

转载:https://dev.21ds.cn/article/105.html 进行社招面试时,有一个问题几乎是必问的: 你为什么要离开上一家公司? 其实这个问题主要是想试探一下求职者的核心...
  • shmnh
  • shmnh
  • 2017年06月08日 18:33
  • 108

对程序员来说,提高薪水最好的建议是什么?

What is the best career advice for a software developer to earn a higher salary?   对程式设计师来说,提高薪...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序员追求的是什么?
举报原因:
原因补充:

(最多只允许输入30个字)