第1章 程序员为何难以管理

告别失控:软件开发团队管理必读
程序设计作为一种严肃的职业已经存在60多年了。在美国,从事程序设计工作的程序员数以百万计,而全球这个数字更大。这些数字还不包括人数众多的学生与编程爱好者,他们非常认真地编写程序,但并不以此为谋生之业。

尽管历史悠久,从业人数众多,但“软件工程师”却因难于管理而闻名。出现这种现象有以下几点原因。

第一,作为一种严肃的职业,程序设计不同于电气、土木工程等相关的工程职业。从 1968 年[1]开始,人们将程序设计这门艺术称作软件工程(software engineering)。但是,与新建土木、电子工程这样的实践相比,从零开始编写新程序更像写小说。新程序的起始往往类似于一张白纸,而传统工程项目则通常是对各种组件库,按照严格的合格性准则进行组装。本书将使用程序设计(programming)一词来称呼“软件工程”,因为相对于严格定义的工程实践来说,程序设计更多的是一门技艺。

从零开始编写新程序更像写小说。
第二,任何人都可以成为程序员。不需要接受正式教育,也没有必需的证书标准或考试[2]。只需要一份程序员的工作即可。[3]

第三,受前两个原因的部分影响,尽管人们做过多种尝试来规范软件工程的流程(如CMMI [4] 1~5级),但这些尝试的影响其实很小。多年来,由大量程序员继续开发的许多软件并不遵循这样的规范框架。而且即便遵循时,也只是对流程有所改进,却无法将程序设计转变为一个纯粹的工程实践。此外,规范化的框架只解决了编写软件的流程问题,但没有涉及程序员管理的问题。遵循流程对管理程序员的问题只能起到最低限度的帮助。程序设计经理们仍然只能依靠自己的方法工具来对下属程序员进行管理。

尽管有很多书籍、文章和网站涉及软件工程与软件开发流程管理,但关于如何有效管理程序员的例子却十分稀少。任何一个棒球队经理都会告诉你,棒球队技术细节的管理比球员个性的管理要容易得多,程序员的管理也是类似的情况。

从计算机出现的早期开始,程序员管理就是一个极具挑战的难题,如下面这段由第二次世界大战(WWII)期间成为世界上第一批程序员的Grace Hopper写于1961年的文字所述:

程序员是一个古怪的群体……他们崛起的速度很快,很快就形成了独立的职业,并且过早地感染了不愿做出改变的抗性。我曾经听说有些程序员因为客户不愿意修改自己的商业系统而斥责客户,而有时走进我的办公室说“但我一直是这么做的”的也正是这些人。出于这个原因,我在办公室悬挂了一个逆时针走动的时钟[5]。
管理程序员的第一步是更好地了解他们。是什么吸引着数以百万计的人投身于“计算机程序设计艺术”呢?答案有时非常简单:它是一份收入优渥而且可以整天待在办公室里上班的工作。然而很多程序员会告诉你,现实中的答案通常没有这么简单。给出那种简单回答的人,通常最终没有坚持程序员这个职业。

事实上,只有特定类型的人才能成为程序员,而只有非常特别的一类人才能成为杰出的程序员。要想知道怎么才能成为杰出的程序员,首先需要了解程序员都做什么。

《告别失控:软件开发团队管理必读》一一第1章 程序员为何难以管理相关推荐

  1. 10余年软件开发与系统架构经验,一起聊聊软件开发技术、系统架构技术、以及程序员最真实可行的职场打怪技能,代码之外的生存软技能。

    比如:你写了段如下的代码: public void getCompanyFromEmployee() {Employee employee = getEmployee();Company compan ...

  2. 《告别失控:软件开发团队管理必读》一一2.9 工具

    本节书摘来自异步社区出版社<告别失控:软件开发团队管理必读>一书中的第2章,第2.9节,作者: [美]Mickey W. Mantle(米奇 W.蒙托) , Ron Lichty(罗恩•利 ...

  3. 《告别失控:软件开发团队管理必读》一一2.6 代系特点

    本节书摘来自异步社区出版社<告别失控:软件开发团队管理必读>一书中的第2章,第2.6节,作者: [美]Mickey W. Mantle(米奇 W.蒙托) , Ron Lichty(罗恩•利 ...

  4. 《告别失控:软件开发团队管理必读》一一1.2 成功的程序设计经理为什么难当...

    本节书摘来自异步社区出版社<告别失控:软件开发团队管理必读>一书中的第1章,第1.2节,作者: [美]Mickey W. Mantle(米奇 W.蒙托) , Ron Lichty(罗恩•利 ...

  5. 《告别失控:软件开发团队管理必读》一一2.7 个性特点

    本节书摘来自异步社区出版社<告别失控:软件开发团队管理必读>一书中的第2章,第2.7节,作者: [美]Mickey W. Mantle(米奇 W.蒙托) , Ron Lichty(罗恩•利 ...

  6. 软件开发团队如何管理琐碎、突发性任务

    背景 开发团队如何管理琐碎.突发性工作? 企业的一些软件开发团队经常出现类似培训支撑等突发性工作,开发团队不清楚如何管理好类似客户培训这样的突发性支撑工作. 解决突发性工作的问题被很多开发团队所重视, ...

  7. 【DevCloud · 敏捷智库】软件开发团队如何管理琐碎、突发性任务(内附下载材料)

    背景 开发团队如何管理琐碎.突发性工作? 企业的一些软件开发团队经常出现类似培训支撑等突发性工作,开发团队不清楚如何管理好类似客户培训这样的突发性支撑工作. 解决突发性工作的问题被很多开发团队所重视, ...

  8. The Joel Test:Joel 用来评价软件开发团队成熟度的12个问题

    转自:http://www.cnblogs.com/supercpp/archive/2011/11/10/2245087.html 如果你与软件行业有若干联系,但是还不知道Joel这个人以及他的博客 ...

  9. 软件开发团队的管理要素

    软件开发团队的管理要素 最好的范例是领导 无论个人素养.技术水平和代码风格,管理者应该起到典范的作用. 最高的权力是威望 管理者的威望比手中权力更有信服力.在处处倚仗权力施压的团队中,高压必有反抗. ...

最新文章

  1. 数据结构 二叉树
  2. 修改了n次效率还是不可接受
  3. js innerHTML 改变div内容的方法
  4. windows进程通信 -- WM_COPYDATA消息
  5. loadrunner通过使用libmysql.dll完成mysql的测试
  6. 没有暑假的Ada 要好好努力咯 C#继续
  7. Notepad++在线安装使用JSON插件
  8. 【题解】(图论) —— POJ 0714:兔子与星空
  9. 让Mootools的语法结构像Jquery那样
  10. S32DS for PowrPC中对dcc编译器的支持
  11. heidsql(mysql)安装教程和mysql修改密码
  12. 一步步破解app协议第二步(审计代码)
  13. MMA算法的推导及3D简支梁拓扑优化代码详解
  14. 【转】人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[0]——月晕础润
  15. pmp项目管理师证书有用么?
  16. 《Loy解说SpringBoot的注解》
  17. 【Redis笔记】缓存穿透与缓存击穿以及应对方法
  18. Java 解析复杂表格excel
  19. 08.零售类公司分析•上
  20. linux 查看mapper 路径,Linux系统/dev/mapper目录

热门文章

  1. ie不支持getElementsByName的解决办法
  2. HDU 1248 寒冰王座
  3. Silverlight与WPF中BeginInvoke的差异
  4. httpClient 处理SSL问题
  5. 神经网络与机器学习 笔记—时序模式、非线性滤波
  6. 操作系统原理第九章:虚拟内存
  7. 【Groovy】自定义 Xml 生成器 BuilderSupport ( nodeCompleted 方法获取节点闭合信息 )
  8. 【计算机网络】应用层 : 总结 ( 网络应用模型 C/S P2P | 域名解析 DNS | 文件传输协议 FTP | 电子邮件 | 万维网 与 HTTP ) ★★★
  9. [BZOJ5292][BJOI2018]治疗之雨(概率DP+高斯消元)
  10. vue项目中批量打印二维码