中文站

【译文】程序员的两种类型

正如Ben Collins-Sussman所说,程序员的类型并没有十四种,与神话相反,实际上只有二种。

软件开发的世界里,有着二类程序员:我把他们称作“ 20%”和“80%”。

“20%”这群人,许多人通常把他们称作“alpha”程序员——他们是领导者、先驱者、引领者,是Google和Fog Creek软件等大型公司都热衷于招聘的一群人。他们是第一批在90年代安装了Linux的人;周末只为乐趣去编写Lisp编译器和学习Haskell;踊跃地参加开源项目;一直能够对当下最新、最酷的编程技术和工具有着清醒认识。

“80%”这群人,构成了软件开发行业的主体。他们不愚蠢,却仅是这个行业的一份子,去了学校,学了刚好够用的Java/C#/C++,然后找到了为银行、政府、旅游公司、律师事务所等编写内部应用软件的工作。通常世界永远看不到他们自己创造的软件。他们使用微软递过来的工具——若在做C++相关的工作通常使用VS.NET,做java开发相关的工作则用像Eclipse和Intellij这样的GUI IDE(图形用户界面集成开发环境)。他们从不使用Linux,怎么也提不起兴趣。很多人甚至从未用过版本控制软件,如果用过,那只不过是发布在微软盒子的(如SourceSafe),或者一些交给他们的老工具。他们只知道如何把工作完成,然后周末回家,忘记和工作相关的一切事宜。

当我和这一领域的程序员团队一起工作时,我总是被“20%”和“80%”这二群人之间巨大的鸿沟所震撼,这显得开源阵营和微软阵营之间的分歧看起来像一条浅沟。

令人震惊的声明 #1:大部分的软件行业是由“80%”这群人组成。是的,世界上大多数地方是小型Windows开发公司,或招聘普通程序员的小公司。大多数公司只有少数的“20%”这群人,他们通常是游说反对尖发老板去改变政策,或升级工具、或使用一个健全的版本控制系统的人。

令人震惊的声明 #2:大多数alpha-geeks会忘了上述声明。他们从事开源软件工作,加入Slashdot上充满激情的密码学争论,下载最新的GIT版本,很有可能会忘记存在“80%”这群人的事实。他们对最新的Linux发行版、AJAX工具包或分布式SCM系统感到兴奋,花费整个周末去研究并把有关的学习总结写在博客上,但令他们困惑的是,为什么不能够打动自己的同事去使用这些工具。

也许这不令我震惊,尽管如此,却对每个人来说都是一个极好的、重要的提醒。

我经常认为我们在浪费时间写大多被“20%”这群人阅读的博客。按我经验来看,alpha程序员对其他人的影响微乎其微。若有,这需要几十年的时间。如果你真的想改变软件开发现状,想在今年有所作为,你需要帮助我们踏出孤立的alpha程序员小群体,去影响世界上其他80%的人的变化。这远远比传道给“20%”这群人要困难得多。这就是为什么我如此钦佩Scott Mitchell这样的人,因为他懂得向其他80%的人伸出援手的重要性。

我热爱编程尤其是ASP.NET。我认为它是整洁,有趣和酷的编程语言,你可以从几乎什么都没有,发展到在惊人的短时间内一个全世界都在使用的数据驱动web应用程序。此外,我想把这种热情传播给人们。我想对那些可能从未编程过,或是正在使用竞争关系的技术,或是刚刚起步的人说——“过来试试ASP.NET这玩意儿,让我向你来展示它能做什么!”。这就是我授课(比咨询便宜),写作(比授课报酬更高,但仍比不上咨询),在南加州的当地用户团体和社区赞助的会议上免费演讲的原因。我为的是能广泛地传播这门技术。

我认为,像“24小时内教会自己X”使得手艺听起来廉价的标题就等于在说,“俱乐部已经满了,走开吧。”这并不是说,“让我们欢迎新人,让他们对这门技术感到兴奋。”,而是说“新手没关系,但必须首先意识到学着有多困难,我们工作有多辛苦,我们懂的比他们多。”我担心,那些我们应该欢迎的人会把来自社会的这种情绪视为自负。

我希望这能对我容易些,因为我同意Scott的观点。我不擅长他正在做的事情,我认为真正衡量成功标准的不是你令多少alpha极客关注你,而是你帮助过多少个典型的普通程序员,哪怕只是一丁点。如果你真的关心软件开发的技术,那就会帮助我们在“20%”和“80%”这二群人之间搭建起桥梁。

更新:这是一个有争议的文章,请参阅我对本文后续的进一步解释

翻译:陈哲学  

来源:网易云社区       https://sq.163yun.com/blog/article/233293217955930112