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

简介:

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

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

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

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

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

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

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

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

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

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

相关文章
|
Linux API
嵌入式Linux中的 gpio、gpiod基本分析
嵌入式Linux中的 gpio、gpiod基本分析
1168 0
|
人工智能 物联网
AI 绘画Stable Diffusion 研究(十七)SD lora 详解(上)
AI 绘画Stable Diffusion 研究(十七)SD lora 详解(上)
2799 0
|
12月前
|
算法
基于PSO粒子群优化的配电网可靠性指标matlab仿真
本程序基于PSO粒子群优化算法,对配电网的可靠性指标(SAIFI、SAIDI、CAIDI、ENS)进行MATLAB仿真优化。通过调整电网结构和设备配置,最小化停电频率和时长,提高供电连续性和稳定性。程序在MATLAB 2022A版本上运行,展示了优化前后指标的变化。PSO算法模拟鸟群行为,每个粒子代表一个潜在解决方案,通过迭代搜索全局最优解,实现配电网的高效优化设计。
347 15
|
11月前
|
存储 安全 Java
探索 Java 静态变量(static)的奥秘
本文深入探讨了Java中的静态变量(`static`),从初印象、使用场景、访问方式、初始化、线程安全、优缺点到最佳实践,全面解析其特性和应用场景。静态变量属于类而非实例,适用于共享数据、定义全局常量和工具类中的变量。它在类加载时初始化,生命周期贯穿整个程序运行。然而,多线程环境下需注意线程安全问题,可通过`synchronized`或原子类解决。优点包括共享数据方便和提高性能,但也存在线程安全和代码耦合度增高的缺点。最佳实践建议谨慎使用、保证线程安全、遵循命名规范并封装访问。掌握静态变量的正确用法,能让你的代码更加高效简洁。
763 11
|
11月前
|
机器学习/深度学习 人工智能 并行计算
Titans:谷歌新型神经记忆架构,突破 Transformer 长序列处理的瓶颈
Titans 是谷歌推出的新型神经网络架构,通过神经长期记忆模块突破 Transformer 在处理长序列数据时的瓶颈,支持并行计算,显著提升训练效率。
451 5
Titans:谷歌新型神经记忆架构,突破 Transformer 长序列处理的瓶颈
|
10月前
|
机器学习/深度学习 运维 资源调度
深度学习在资源利用率优化中的应用:让服务器更聪明
深度学习在资源利用率优化中的应用:让服务器更聪明
490 6
|
9月前
|
人工智能 安全 网络虚拟化
指南:Grok官网是什么?国内如何使用grok 3 官网AI
Grok AI 是一款非常强大的人工智能助手,不仅能够在社交媒体管理、语音助手等方面为用户提供便利,还可以极大提升工作效率。
4891 5
|
11月前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
1905 1
|
人工智能 自然语言处理 机器人
智能语音机器人底层系统设计逻辑机器人源码系统逻辑
简介: — 1 —智能客服背景智能语音客服机器人是在传统的客服系统基础上,集成了语音识别、语义理解、知识图谱、深度学习等多项智能交互技术,能准确理解用户的意图或提问,再根据丰富的内容和海量知识图谱,给予用户满意的回答。目前已广泛应用于金融、保险、汽车、房产、电商、政府等多个领域。
|
人工智能 自然语言处理 数据可视化
通义灵码上新功能:用代码画流程图
不想读前人“骨灰级”代码,不想当“牛马”程序员,想像看图片一样快速读复杂代码和架构。通义灵码刚刚支持代码逻辑可视化,可以把你的每段代码画成流程图。像个脑图工具一样帮你图文并茂画出代码逻辑和框架,再也不用迷失在代码迷宫啦!