去年我参观了Adobe位于湾区的办公楼。他们的办公楼真是太夸张了,到处都是很酷的东西,楼顶上有个篮球场,还有风车,以及设计师沙龙。但是,当他们秀他们的开放合作式办公室时,我觉得这不是我想要工作的地方。
可事实上问题不在于此。编程,就跟写作、绘画、作曲一样,首先是一种创造性的活动,而不是一个种技术工作。当然,对一种技术或编程语言的不断练习和保持熟悉很重要,这其实就是在学习使用工具和技法,但它并不会让你本质上变成一名更优秀的程序员。
Oswald教授说:“像谷歌这样的公司,愿意在给员工提供支持上投资,结果就是员工的幸福感增加。对于谷歌,这个数字是37%,他们知道这指的是什么。在科学的调控下,想办法让员工更高兴是绝对有回报的。”
软件开发的成败更多的是在于人,而不是技术。当从大学毕业时,我以为,只有精通了各种技术才能成为一名伟大的程序员,以为人件管理技术是经理们的专属领地。但事实却给我好好的上了一堂课。
我们的工作经历多样而广泛,从财富50强企业到硅谷创业公司,从全新到代码库到30年的老古董。下面的这些特征,不仅是对我们,我想对广大的软件开发者也都代表了一个非常理想的工作环境。
“我需要”,“小问题”,“立刻”。你激怒我了。你的每个词都激怒我了。这种情绪很难翻译成英语表达,但在荷兰,有些人就是用这种方式要求你。
如果你有一个同事,他写的程序与其说是代码,不如说更像希腊神话中女妖美杜莎的头发,你当然不能熟视无睹,你应该做出一些反应,但你可选的合适的反应方式并没有多少:自己默默的帮他整理清楚、向上级抱怨、向其他同事背后唠叨此事
“这代码真垃圾”,当我们翻查一些代码寻找一个特别讨厌的bug时,同事大声这样说。“是吗”,我回答到。像这样的谴责,以及其它一些类似的话,在办公室里经常会听到,而且频率在增加。而最令人不安的是,这代码并不是特别的糟糕。我这话是什么意思?
想象一下,你在一个大公司里,在一个稳定可靠的技术架构上写程序。如果你在这个项目上一干数年,但却没有时间在工作之余学习新的东西,那么,当项目完成时,也就是你的技术过期之日。
在SEP公司,我们非常喜欢谈论我们的企业文化和我们这个大家庭。我们不是光说不练,我们有各种的活动、聚会,和出游。所有的这些活动里都少不了一样东西,那就是吃的,这是我们都能滔滔不绝的事情——我们爱吃,爱吃好吃的!
在我任职于雅虎期间(大约2001-2007),我学会了做很多事情,但同等重要的,我还学会了如何避免做某些事情。对于后者,主要就是如何避免不公的对待技术人员。雅虎,尽管做出了很多善意的努力和明显的例外举措,仍然没有在公司内带来技术人员地位的提高。
我并不在Netflix工作——你也知道 (我在 Yahoo!工 作)—— 但我深切的感觉到,不管你在哪里工作,成为一个优秀的员工、优秀的软件开发工程师的过程是一样的。 下面所列举的都是伟大的程序员所具有的经验和品质。