【外刊IT评论网】创业编程七个错误认识

标签: 巴士指数 批评评论 加班 结对编程 | 发表时间:2011-07-04 00:44 | 作者:Aqee Baoping
出处:http://www.aqee.net
本文是从 What’s Your Start-up’s “Bus Count”? 7 Myths of Entrepreneurship and Programming 这篇文章翻译而来。

多少年来,人们普遍有一种看法,认为软件工程应该和其它种类的工程一样:仔细的设计,精确的规划,然后进行开发—严格按照设计说明书。就像修建一座桥梁,不是吗?这种开发方式的问题在于:软件,它是“软”的。它可以无限的延展。任何需要的时候你都可以大幅度的修改你的软件,人们也都是这么干的。还有,因为软件可以被拿来对任何事物进行模型造型,你能要求软件开发人员去实现的可能的东西几乎是无穷无尽。想要在软件里模拟集成电路吗?干吧。想管理银行?没问题。让五亿人和他们的朋友保持联系?为什么不呢?小菜一碟。不仅如此,在开发的中途我们还能要求程序员去做各种修改,这种事情经常的以一种不可预期的形式出现。

这可不是像修桥那样。

由于漠视这种需求不断变化的现实,多年来,无数的项目要么惨遭失败,要么巨额超出预算。所以,在总总的各种证据面前,整个行业为什么还要坚守这种错误的认识?很难说为什么。不过,最终,行业里开始出现一种新的认识:软件开发工作应该更好的响应需求的变化。事实上,为了适应这种需求上的变化,我们应该改进软件开发过程。没有比如今的web创业开发社区更欢迎这种趋势的了。所谓的敏捷开发方法已经开始流行,“lean start-up”运动号召对运行中的系统进行自动的或依据经验的超常快速变更响应。

所以,我们都是好样的,不是吗?虽然行动的不是那么快。尽管有越来越多的敏捷开发方法被人们接受,仍然有大量的传统错误认识游荡在我们周围…这些认识大部分都该丢到脑后。

1. 误解:你应该招聘一些“日本忍者”式的程序员。

对编程超人的迷信是硅谷创业公司中最普遍的一种病症:一个孤僻的程序员,以匹萨和咖啡因为能量,头戴耳麦,通宵不倦的开发一个复杂的系统,所有的东西都自己一个人来干。时过境迁了。软件开发已经发展成一种团体运动。所有的创业公司只要获得了任何有意义的成功,都会成长起来。一个编程独侠客能够胜任的情况放到一个10人的公司里后就不可行了。而且,更糟糕的是,鼓励逞英雄的行为会在开发团队里产生腐蚀性的机能障碍。始终如一的朝九晚五、日复一日编写出公司赖以生存的稳固功能代码的程序员,输给了能以通宵加班(通常只是一晚)来期望获得慷慨的褒奖的精明极端利己主义者。与其奖励这种英雄,不如培养出真正具有团队精神的员工。

2. 误解: 程序员需要安静的工作,避免打搅。

让人们独自的干活,这个听起来很有道理 。每一次的打扰都是切实的中断你的思绪,而且你需要花很久才能重新找回那种“状态”。有些著名的软件公司甚至坚持要为每个程序员安排独立的办公室。他们这样就不会被打搅了,是吗?除非现代新形式的干扰并不会像一个真人拍你的肩头时引起你的分心,比如即时聊天工具,移动手机,Facebook,Twitter,电子邮件,以及从程序员头上戴的耳麦里传出的用于帮助集中精神的音乐。现实情况是,大多数的独自工作的程序员每天只花一小段时间用于真正的编程:各种形式的干扰事情层出不穷,整天他们都在进入状态和失去状态的循环中来来回回。然而,有个办法能解决这个问题:结对编程。两个程序员,一台电脑。没有Email,没有Twitter,没有手机电话(至少没有无计划的电话;你可以在有规律的间隔休息时间里处理这些事情)。如果按照这样做,你会收获一个完全编程的一天。而且,和他人一起工作,“进入状态”的过程几乎完全不费时间。这是一种完全不同的工作方式,我深信这种方式的效率远高于独自工作的形式。事实上,针对当前的办公室里的这些“电子设备引起的注意力分散”情况,我认为这是能让软件开发团队获得最高效率的唯一办法。

3. 误解: 创业公司竞争激烈,所以每个人都该干到精疲力竭为止。

没白没夜的加班加点并不能让你做的更多,做的更快。事实上,这会让你适得其反。不错,你觉得一周就能完成。但大部分的创业公司的开发计划都会比这个长,程序员通常需要持续几个月的进行开发(如果不是几年的话)来成功的完成一个产品。很多创业公司的行为表现就好象是这罐金子就放在那个墙角,只要能再努力一点就能拿到它。很快,开发人员的精力就被榨干了,如僵尸一般只是做出在加班的样子,没有任何的工作效率。高强度的工作,只是从短期来看会获得更多的工作效率。著名的开发公司Pivotal帮助过成百上千的创业公司开发过系统,从来都是严格按照40小时工作日来完成任务的。

4. 误解: 工期紧必然需要走捷径。

很多团队都以市场压力大、需要立即发布产品为由,写出劣质的代码。写出的测试程序绕开问题部位;疯狂的攻坚冲锋中认真设计原则被抛在脑后。但是,作为各个软件开发团队,大家都一样。高效能的团队在成功之余不失英雄本色:正相反,当压力出现时,他们岿然不动,以自身深厚的功底成功化解任务。我们无数次听到过高压下出高成就的传奇故事—要么是军事行动、专业运动,要么是飞行员在河上强行降落—其中的原因无非是英雄们的那句话,“我们受过专门训练”。

5. 误解:开发人员应该全权负责自己的代码。

负责自己的代码,听起来很正确。理所当然的。个人职责嘛。可是,开发团队里在代码上分配归属人就意味着每个模块的程序只有一个开发人员来写,只有一个人能掌握。这会导致负责模块的程序员之间产生“地方保护主义”。对于公司老板来说,这造成了很大的风险,因为团队中损失一个人就会影响整个团队的进程,如果这个人是负责系统的关键核心模块的,那更会造成公司业务瘫痪。健康的工作方式是让每个程序员都经手过系统内的所有代码。结对编程能让你实现这个效果,知识会从一个人传递到另一个人。所谓的“巴士指数”(团队中的多少人被车撞才会导致大家都无法进行)是一个软件创业公司的关键风险指标。我们这里所说的不仅仅指的是巴士在使坏,还有你的竞争对手,他们乐衷于挖走你最好的程序员。理解整个系统的人越多,你的公司就越健壮,越有活力。

6. 误解:你需要一个怪异的招聘过程。

你会在雇用一个演员时不进行试镜吗?如果要试,你就能短暂的做一回导演。这正是如今几乎所有的公司在招聘程序员时会出现的场景。通常的面试都会谈论应聘者的经验。这就完了。你可以想象一下,问一个踌躇满志的演员是否喜欢饰演哈姆雷特这个角色。你能传神的扮演他吗?好的。你被雇用了!很多著名的软件公司喜欢给应聘者出脑筋急转弯题。有些顶级的公司甚至给候选人进行IQ测试。他们中最可取的是在白板上模拟软件问题,让候选人解决。这些情况让人很无奈。我要说的是这非常明显的道理:招到好的程序员的唯一可靠的方法就是跟他们一起编程。我对程序员的面试是跟他们进行一个小时的快速的结对编程—而且这只是面试的一个开始。大量的筛选,把他们按满分100打分。什么样的会被选中?思维敏捷,抽象思考能力强,掌握各种算法,问题解决能力强。而最重要的是,领会能力。因为协作是对团队来说最重要的东西,如果你不能理解其他人是如何思考的,再聪明也没用。

7. 误解: 专业化很重要。

非常自然的,管理者遇到问题时习惯把问题分解,各个击破。在开发团队里,这通常怂恿技术人员专项发展。前端开发, 后台开发,数据库管理员等等。Brad Feld 在他的博客里建议说,每个团队里都应该有个“全能程序员”,这个人是个真正的通才。他是对的,但他说的还不够。每个团队里的每个成员都应该是通才全才。为什么?因为专才导致团队脆弱。还记得“巴士指数”吗?每个专才都是一个弱点;如果他离开了,你找不到替代他的人,你完了。不仅如此,它还能使团队机能失调。专项的人需要把他们负责的系统里相互独立的模块通过定义好的接口相互通信。事实上,他们每人都写出了各自不统一通信方式。这导致了大量的额外开销,经常会出现“地方保护主义”或相互指责。而在著名的Pivotal公司,每个程序员都要接触到系统的各个层面,从HTML和JavaScript到Ruby,到数据库。而有些人认为专才会在系统的某个层面上更专业的,这种说法未必站得住脚。如今的软件技术变得已经不是那么复杂了。程序员能更容易的掌握各个层面上的知识以及如何操作它们。顺便说一下,这暗示出了另外一个非常重要的信息:你不再需要为某个特殊的技术而招聘人才了。缺少Ruby程序员?好,招一个Java程序员,培训他使用Ruby(这里使用结对编程格外的有效)。有些人称自己为“服务器端”程序员?没问题,让他们写JavaScript程序,他们很快就能学会。

如果他们是人才,那就体现在这里。


本文来自外刊IT评论网(www.aqee.net),原始地址:创业编程七个错误认识

相关 [it 创业 编程] 推荐:

创业编程七个错误认识

- microlj - cnBeta全文版
多少年来,人们普遍有一种看法,认为软件工程应该和其它种类的工程一样:仔细的设计,精确的规划,然后进行开发 ―― 严格按照设计说明书. 这种开发方式的问题在于:软件,它是“软”的. 任何需要的时候你都可以大幅度的修改你 的软件,人们也都是这么干的. 还有,因为软件可以被拿来对任何事物进行模型造型,你能要求软件开发人员去实现的可能的东西几乎是无穷无尽.

【外刊IT评论网】创业编程七个错误认识

- Baoping - 外刊IT评论
本文是从 What’s Your Start-up’s “Bus Count”. 7 Myths of Entrepreneurship and Programming 这篇文章翻译而来. 多少年来,人们普遍有一种看法,认为软件工程应该和其它种类的工程一样:仔细的设计,精确的规划,然后进行开发—严格按照设计说明书.

自学成才的国外10大免费学习平台:零编程、创业指导、各种技能!

- - TechFrom科技源
4.1日,活到老学到老的免费在线学习平台网站,让你掌握各种颠覆性技术和技能,以及帮你创业成功的服务网站. 创业指导,编程技术学习,和各种技能学习平台 一共3个部分. -Mark Twain 马克吐温. 如果你想创业,如下网站提供的服务,能够帮你:. E[nstitute] ,一个帮助你创业腾飞的地方,更多介绍在 here.

Hadoop Streaming 编程

- - 学着站在巨人的肩膀上
Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如:. 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,wc作为reducer). 本文安排如下,第二节介绍Hadoop Streaming的原理,第三节介绍Hadoop Streaming的使用方法,第四节介绍Hadoop Streaming的程序编写方法,在这一节中,用C++、C、shell脚本 和python实现了WordCount作业,第五节总结了常见的问题.

Shell编程

- - 博客园_首页
本来打算寒假回家好好学习Linux的,为以后学习嵌入式打好基础的. 回家之后的学习效率非常低,之前为了搭建Linux环境,折腾了很长时间,学到现在也就勉强才把Shell编程学完了. 今天就把自己学习的相关知识点总结整理一下. 个人感觉shell程序跟windows下的批处理文件有点像,就是将一些系统命令写进一个可执行文件中,然后执行.

用 AlphaCode 编程

- - 奇客Solidot–传递最新科技情报
至少在部分问题上 AI 程序员能与真正的程序员竞争了. Alphabet 旗下 AI 子公司 DeepMind 宣布了 AI 代码生成系统 AlphaCode(PDF),声称测试显示其水平在编程竞赛中已经具备了竞争力. 计算机科学家 Scott Aaronson 也为 AI 在编程方面的进步 惊叹不已.

杂谈创业

- shujie - aw's blog 姿态永恒
创业已经一年多了,一直都没正儿八经地更新这个博客,朋友们都说彻底荒废了太可惜,但我一直没有在意. 一来是不像之前做Freelance和Consulting的工作那样人身比较自由时间比较宽裕;二来,接触的人、事情多了,发现自己知道的太少、太肤浅. 四百多天的时间过去了,不少朋友、同行都很好奇“自己开公司”是什么样的感觉,我觉得以目前的阅历,自己只算刚刚入门上道,不敢谈“分享”,只能说说一些内心的想法和大家一起交流.

梁斌:创业

- - 博客 - 伯乐在线
我在任何公开场合,都从未提及我有创业打算,或者正在创业. 今天,我想谈一下创业,我自己的,纯个人的理解. 之前,我要推荐一本书《我为什么要投资你》中国商业出版社出版,天使会总策划李晓艳编写. 这个是一个投资界的大佬赠送的,我读完以后受益匪浅,第一次让我能够以投资人的视角去理解创业. 同时,也更看清了自己的问题和不足,书我会放在实验室,同学们感兴趣都可以来借阅,可以归还,也可自行赠送给其他创业的朋友们.

编程能力与编程年龄

- - 酷壳 - CoolShell.cn
程序员这个职业究竟可以干多少年,在中国这片神奇的土地上,很多人都说只能干到30岁,然后就需要转型,就像《 程序员技术练级攻略》这篇文章很多人回复到这种玩法会玩死人的一样. 我在很多面试中,问到应聘者未来的规划都能听到好些应聘都说程序员是个青春饭. 因为,大多数程序员都认为,编程这个事只能干到30岁,最多35岁吧.

[译]所有编程皆为Web编程

- - 呦呦鹿鸣
原文作者:Jeff Atwood. Michael Braude对Web编程大受追捧表达了他的不屑:. 大部分人想去做Web编程的原因是,他们不够聪明,因此也做不了别的事. 他们不懂编译器、并发性、3D或类继承. 他们根本不明白我为什么要使用接口或者抽象类. 他们不理解虚函数、指针、引用、垃圾回收、终结器、传引用与传值的区别、C++的虚拟析构函数、或者C#的结构体与类之间的差别.