《告别失控:软件开发团队管理必读》一一2.2 程序员的类型

简介:

本节书摘来自异步社区出版社《告别失控:软件开发团队管理必读》一书中的第2章,第2.2节,作者: 【美】Mickey W. Mantle(米奇 W.蒙托) , Ron Lichty(罗恩•利克蒂),更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 程序员的类型

为了选择合适的职员,我们还需要理解另一种看待程序员的方法。在上一节讨论的几种类型中,我们侧重考虑了程序员所从事的工作的类型(即客户端、服务器、数据库、Web)。实际上,从技术知识、实践经验和程序员的专长角度去考虑也是很重要的,按这样的思路可以把程序员分类为:

系统工程师/架构师;
系统程序员;
应用程序员;
非真正意义上的程序员。

2.2.1 系统工程师/架构师

在所有开发类职员中,系统工程师/架构师是最有技术和经验的。要想理解所有相关的系统组件(操作系统、通信系统、数据库、在线/离线访问、安全性、硬件等)之间的复杂关系,需要对所有这些技术和系统都有丰富的专业知识和经验。通常,在一个规模合理的团队中,只会有一两个“真正的”系统工程师/架构师。杰出的系统工程师/架构师可以使团队中的其他人表现得更好。他们的系统工作起来会更可靠,通常看起来也更简洁。

Gracenote就是由一个技术和经验都很丰富的系统工程师/架构师创立的,纯粹由他完成的设计和实现创造出了一种令人难以置信的可靠、可扩展而且灵活的服务。Google公司的联合创始人Larry Page和Sergey Brin也是类似的系统工程师/ 架构师,他们在设计和实现上培育的优雅风格帮助Google公司在技术和商业领域都取得了成功。

2.2.2 系统程序员

大多数系统工程师/架构师都是从系统程序员做起的。系统程序员理解系统中所有组件的工作原理,包括客户端和/或服务器端的操作系统和通信系统。Alan Kay在他的博士论文[1]中引用了Bob Barton对其他程序员如何看待系统程序员的总结:

系统程序员相当于民间宗教中的大祭司。

——Bob Barton[2]
系统程序员负责编写与硬件交互的设备驱动程序,创建能够为设备驱动程序和应用程序执行提供运行时环境的操作系统,为其他程序员创建编译器和调试工具,通常还会为其他程序员提供工具和服务用于交付程序。

在过去,对社交能力正常的人来说,被称为系统程序员几乎可以说是一种侮辱。我们认识许多系统程序员,他们的着装和举止如今已成为代表性的极客造型并流行开来。每当我们想起自己认识的那许多系统程序员,就会想到“我当极客的时候,极客还不受欢迎”这句话(顺便提一下,我们两位也曾经是系统程序员)。

2.2.3 应用程序员

在专业程序员、学生以及自称为程序员的业余爱好者中,绝大部分都属于应用程序员。应用程序员开发的程序或其结果通常给终端用户直接使用。应用程序员开发的程序包括文字处理软件、电子表格、日历、Web浏览器、iTunes与Windows Media Player之类的媒体播放器、游戏等。应用程序也可以由数据库程序员开发,以便对数据库中取出或存入的数据执行特定的操作。数据库应用程序包括财务软件、机票预订系统以及Oracle Financials之类的数据挖掘工具等。

一些应用程序员能够跳出代码本身的束缚,与应用程序的用户产生同感,真正从用户的角度看问题,从而很好地把握各种可视化、交互式的设计之间的细微差别。这样的应用程序员很适合从事用户界面(UI)的开发。如果让这样一位有天分的应用程序员与一名UI设计师(通常不仅有图形设计背景,而且对人性甚至认知心理学都有所研究)合作,将产生一加一远大于二的效果。

有一些项目(如MacOS的桌面UI——Mac Finder)侧重于UI,要求整个团队都由这种有天分的应用程序员组成。因此,Ron在苹果公司领导Mac Finder团队时,在寻找和面试候选人的过程中,特别看重程序设计技巧和用户视角。他认为:“只懂得程序设计技巧的程序员在那个团队中是无法取得成功的。”

2.2.4 非真正意义上的程序员

开发团队中有一些被称为“程序员”的技术人员其实并不是真正意义上的程序员。他们当中有些人使用图形用户接口(GUI)指定程序逻辑或商业逻辑,然后生成用户可访问的应用程序;有些人则通过创建脚本或修改配置文件来定制显示的内容。这些“程序员”与真正的程序员之间的主要差别在于:他们使用现成的工具或应用程序,而不是自己直接写代码。

这类“程序员”有其重要性和价值,但他们的技术深度通常不能与我们所讨论的其他类型的程序员相提并论。随着程序设计工具的出现和日益强大,像这样的程序员正变得越来越多,但在本书中我们不会直接讨论他们。

我们所介绍的许多程序设计技术也适用于这种另类的“程序员”。但根据我们的经验,他们中的多数人仅满足于把自己的工作做好,而不像“真正的”程序员那样渴求学习、动力十足。

相关文章
|
开发工具 开发者 UED
五种关键的软技能可以让软件开发人员脱颖而出
五种关键的软技能可以让软件开发人员脱颖而出
114 0
|
Java 开发者 开发工具
如何做好干系人管理?知己知彼,百战百胜! | 开发者必读(080期)
最炫的技术新知、最热门的大咖公开课、最有趣的开发者活动、最实用的工具干货,就在《开发者必读》!
557 0
|
测试技术
不能成为专业软件测试人员的10大理由
你是一名专业的测试人员吗?  《转载》   如果你看到这篇文章了,你就有机会成为专业的了!   我写这篇文章并不是因为这个,其他无数的测试人员有比我更多的好东西拿来分享。总体而言,我的意思是在空闲时间阅读其他测试相关文章来提高自己的测试技能时,你也将是有志成为专业测试人员中的一分子。
1176 0
|
程序员
项目难做,程序员难当,软件开发中的 9 大难题
是什么让项目变糟?何时起我们下班回家时开始盘算:“见鬼,我得离开”?下面是我们程序员不时要面对的一个问题清单,这些问题让我们筋疲力尽。
932 0
《软件工艺师:专业、务实、自豪》一2.1 面向流程的敏捷软件开发原则
本节书摘来华章计算机《软件工艺师:专业、务实、自豪》一书中的第2章 ,第2.1节,[英]桑德罗·曼卡索(Sandro Mancuso)著 爱飞翔 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
991 0

热门文章

最新文章