Joel Spolsky:开发人员的抽象级别

图片

2006年4月11日,

一个年轻人到达城市。他看起来不错,口袋里有钱,很容易找到与女性通用的语言。

他很少谈论自己的过去,但很明显,他在一家毫无生气的大公司中度过了很多时间。

他无疑是友善,待人友善,镇定和自信的,而不是自大的。因此,对于程序员来说,可以轻松地从本地Cafe的公告板上进行一些工作。但是很快对保险数据库项目,家庭主妇的网页和财务结算引擎失去了兴趣。

一年后,他计算出自己已经积累了足够的钱来支付当年的少量开支。因此,在咨询了忠实的德国牧羊犬之后,他将计算机放在阳光普照的房间,一间出租公寓中,并安装了精心挑选的工作工具。

然后他坐下来编写代码。

那是什么代码。无可挑剔,艺术,优雅,无漏洞。用户界面很好地模仿了一个人的思考过程,以至于他向咖啡师展示了代码的人几乎不会注意到用户界面。这是一项出色的工作。

受同事反馈的启发,他开始从事业务并准备接受订单。他的谦虚排除了任何索偿要求,一个月后,他的银行帐户上的情况看起来并不令人鼓舞。到目前为止,只接受了三个命令:一个来自母亲,一个来自程序员咖啡厅的匿名捐助者,另一个由他提交以测试商务系统。

在第二个月,订单不再到达。

这让他感到惊讶和不安。在一家大公司中,新产品是定期创建的,即使它们不礼貌和不起眼,它们仍会以合理的数量出售。他研发的一款产品大受欢迎。

几个月后,他的财务状况开始有些动摇。狗悲伤地看着他。不太了解发生了什么,但是看到他的脸看起来比平时差,他似乎没有力量与朋友外出,逛街购物以补充物品,甚至游泳。

一天早晨,一位当地卖家拒绝延长债务,他的银行家很久没有拿起电话了。

大公司不是报仇的。他们认识有才能的员工,并乐于以更高的薪水雇用他。他很快看起来好些,他穿了新衣服,并且恢复了以前的自信。但是缺少了一些东西。他眼中的火花。他成为命运大师的希望已经消失了。

他为什么没有成功?他肯定知道。 “营销,”他说。像许多年轻的技术专家一样,他倾向于说诸如:“微软的产品质量较差,但营销水平较高。”

软件开发人员所说的“市场营销”一词仅表示所有这些业务上的麻烦:他们在创建和销售软件时真正不了解的所有内容。

实际上,这并不完全是营销的含义。微软的营销非常糟糕。您能想象在恐龙广告发布之后,有人真的想购买Microsoft Office吗?

软件是软件开发人员与用户之间的对话。但是为了进行对话,除了软件开发之外,还需要进行大量工作。这不仅需要市场营销,而且还需要销售,公共关系,办公室,网络,基础设施,办公室中的空调,客户服务,会计以及许多其他支持任务。

但是软件开发人员做什么?他们设计和编写代码,模拟屏幕,调试,集成并测试源代码控制存储库中的内容。

程序员的工作水平(例如Emacs)太抽象了,无法支持业务。在抽象级别工作的开发人员需要一个实施层,即一个将其代码转换为产品的组织。多莉·帕顿(Dolly Parton)在“唱一首好歌”的水平上工作,还需要一个庞大的实施层来录制和预订音乐厅,购票和设置音频设备,以及推广唱片和收费。

任何成功的软件公司都将由分布在大型抽象管理结构顶部的薄薄的软件开发人员组成。

仅存在抽象是为了产生一种幻觉,即程序员的日常活动(设计和编写代码,检查代码,调试等)是创建软件产品并将其推向市场所需的全部。这使我想到了本文的最重要的一点:
作为软件开发团队经理的第一步是构建抽象开发层。

大多数新软件经理都忽略了这一点。他们继续考虑在好莱坞电影中学到的传统的命令与征服管理模式。

根据《命令与征服》(总参谋部)的说法,高管们会找出企业的去向,然后向其副官发出适当的命令,以将企业朝这个方向发展。反过来,他们的副官将任务分成较小的部分,并下达执行命令。这将继续沿组织结构图进行,直到最后,下面的某个人完成了一些工作。在这种模型中,程序员是汽车中的佼佼者:执行手册一部分的驾驶员。

有些企业实际上是走这条路。当您与这样的公司打交道时,您总是可以找到答案,因为与您交谈的人做的事情毫无意义,他知道这一点,甚至可以担心,但他们对此无能为力。这是一家航空公司,由于客户拒绝更改他的不可撤销机票,因为由于家庭原因他无法飞走,因此永远失去一百万英里客户的航空公司。这是一家互联网服务提供商,其服务效果越来越差,当您取消帐户时,他们会继续向您收费,当您致电投诉时,您需要拨打付费电话并等待一个小时,然后他们仍然拒绝退回您赚钱,直到您开始写有关他们吸吮多少的博客。这是一家底特律的汽车制造商,早已被人们遗忘,如何制作人们可能想要购买的汽车,而不是从市场策略转向广告策略,好像我们不购买他们笨拙的汽车的唯一原因是折扣不足。



了吧。测试了分级命令和控制系统,该系统在1920年代曾与推杆车竞争,但在21世纪还不够好。软件制造商必须使用其他模型。

在软件公司中,管理首要任务应该是为程序员创建这种抽象。

如果某个地方的程序员担心椅子折断或正在等待Dell的响应以订购新计算机,则抽象泄漏了。

将您开发的抽象层想像成是一台拥有强大动力的大型美丽游艇。它是无可挑剔的维护。美食总是像发条一样上桌。女佣每天在小屋里工作两次。导航图始终是最新的。 GPS和雷达始终可以正常工作,如果它们损坏,则甲板下方有备用零件。站在桥上,您的程序员实际上只考虑速度,方向以及午餐会发生什么:金枪鱼或鲑鱼?同时,一支庞大的专业人员团队在甲板下旋转着一团淀粉状的白色均匀脚尖,使一切保持正常运转,填充气瓶,刮贝壳,并抚平桌子上的餐巾。支持人员知道该怎么办,但是他们从咸老头那里得到信号,他会在某些方向上略微点头以协调整个交响曲,以便程序员可以从涉及游艇的所有事物中抽象出来,除了速度,方向和他们想要的午餐之外。

软件公司的管理层主要负责为程序员创建抽象。我们制造游艇,我们为游艇服务,我们是游艇,但我们不经营游艇。我们要做的只是向程序员提供抽象,以便他们可以创建出色的代码,并使这些代码可以落入受益于此的客户的手中。

程序员需要一个Subversion存储库。获取Subversion存储库意味着您需要一个网络和一台必须购买,安装,保留并提供不间断电源的服务器,并且该服务器会产生大量热量,并且该服务器必须在装有附加空调的房间内,并且空调必须能够与外界连接建筑物,这意味着在建筑物外的墙壁上安装80磅重的风扇单元,这会使建筑物的所有者感到紧张,因此他们需要让建筑商同意在哪里安装空调单元(解决方案):(在外墙,这里18点)地板,在最不舒服的地方),业主打电话给律师,因为我们必须签名才能被允许这样做,然后出现带有索具的空调安装人员,这不方便,这使领班感到紧张,也不允许他们穿着由1/2英寸的粉红色塑料制成的美泰带子走出18层窗户,我向上帝发誓,这可能是芭比迪斯科带子,有人应该再次打电话给建筑工人代理商,并找出他们在建设项目12周后突然意识到,他们将需要对这台该死的空调的合同进行另一项修改,他们在圣诞节前就知道了,他们只是猜测,如果您的程序员花了至少一分钟的时间思考关于这个,那么这已经太多了。为什么他们在建设项目12周后突然意识到他们需要对这台该死的空调的合同进行另一项修改,他们在圣诞节前就知道了,他们只是猜测,如果您的程序员花了至少一分钟来思考它,那么这已经太多了。为什么他们在建设项目12周后突然意识到他们需要对这台该死的空调的合同进行另一项修改,他们在圣诞节前就知道了,他们只是猜测,如果您的程序员花了至少一分钟来思考它,那么这已经太多了。

对于您团队中的软件开发人员,应该全部提取出来,就像在命令行上输入svn commit一样

这就是为什么您必须要有管理。

这是没有公司可以避免的事情,但是如果您有担心此事的程序员,那么管理就会失败,就像如果百万富翁老板必须下机房时100英尺游艇会失败一样并修复引擎。

您典型的公司是由以前的软件供应商创建的,那里的一切都是销售,而我们所有人的存在都是为了增加销售。这些公司无法控制自己,因为他们建立了软件版本1.0(一种方式或另一种方式),然后完全失去了对开发新软件的兴趣。他们的开发团队正在挨饿或根本不存在,因为任何人都从来没有想到要构建2.0版……管理人员所能做的就是增加销售量。

另一方面,您有由前程序员创建的公司。这些公司很难找到,因为在大多数情况下,它们表现得很安静,会在没人能找到的地下室中编写代码,因此在“伟大的Ruby改写”之后,它们立即悄悄地消失了。

这两个示例都可以很容易地被一家程序员管理组织的公司摧毁,该公司是为了使程序员坐在驾驶席上,但它具有出色的抽象性,完成了将代码转换为产品的所有艰苦工作。

程序员使用安静的个人帐户,出色的计算机,无限量的饮料,20至23摄氏度的环境温度,屏幕上没有刺眼的光线,舒适的椅子以至于您感觉不到它,以及携带邮件和订购手册的管理员,生产率最高。和书籍,由使互联网像氧气一样容易访问的系统管理员,测试人员来查找根本看不到的错误,图形设计师使屏幕更漂亮,营销人员团队,使大众想要获得他们的产品,卖方团队为了确保大众能够获得这些产品的技术支持,从而可以帮助客户使产品正常工作,并帮助程序员了解引起技术支持电话的问题,以及大约十二种其他支持和管理职能,在典型的公司中,这些职能加起来约占工资的80%。罗马军队每名士兵有四个仆人的比例绝非偶然。这不是decade废。现代军队的作战比例可能是7:1。 (这就是Pradeep Singh今天教给我的:如果您只有20%的员工是程序员,那么您可以通过将他们外包给印度来节省50%的薪水,那么您从这10%的节省中实际上能获得多少竞争优势? )(这就是Pradeep Singh今天教给我的:如果只有20%的员工是程序员,那么您可以通过将他们外包给印度来节省50%的薪水,这10%的节省实际上能带来多少竞争优势? )(这就是Pradeep Singh今天教给我的:如果只有20%的员工是程序员,那么您可以通过将他们外包给印度来节省50%的薪水,这10%的节省实际上能带来多少竞争优势? )

管理的主要职责是营造一种幻想,即可以通过编写代码来启动与软件打交道的公司,因为程序员就是这样做的。尽管拥有精通销售,图形设计,系统管理和烹饪的程序员会很棒,但这是不现实的。就像教猪唱歌一样,这会花费您的时间并使猪烦。

Microsoft在创建这种抽象方面做得很好,以至于Microsoft毕业生很难创建公司。他们只是不相信自己的知识就已经经历了多少,他们也不知道如何重新创建它。

没有人期望Dolly Parton知道如何插入麦克风。在她的背后是一个令人难以置信的管理者,音乐家,唱片技术人员,唱片公司,来访艺术家,美发师和公关人员的网络,他们共同创建一个抽象概念,当她唱歌时,这是数百万人聆听她的歌曲所需要的一切。使Dolly Parton的工作成为可能的所有支持人员和管理人员可以以最好的方式完成他们的工作,提供最完美的抽象:Dolly为我们唱的最完美的幻想。这是她的歌。当您在iPod上听音乐时,会有一个庞大的基础结构使之成为可能,但是基础结构可以做的最好的事情就是完全消失。提供Dolly Parton亲自为我们使用的抽象。




图片
通过参加SkillFactory在线课程,了解如何从头开始获得热门职业或技能和薪资水平提高的详细信息:




All Articles