代码整洁之道--读书笔记(12)

news/2024/11/15 9:36:42/文章来源:https://www.cnblogs.com/TonyCode/p/18417842

代码整洁之道

image-20240904225436374

简介:

本书是编程大师“Bob 大叔”40余年编程生涯的心得体会的总结,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更高台阶。

本书适合所有程序员阅读,也可供所有想成为具备职业素养的职场人士参考。

第十二章 协作

image-20240918072128072

大多数软件都是由团队开发出来的。当团队成员能够十分专业地互相协作时,整个团队是最为高效的。单打独斗与游离于团队之外都是不专业的表现。

12.1 程序员与人

我们并非是因为喜欢和其他人在一起工作才选择做程序员的。我们都认为人际关系难以应付而且毫无规律。编程用的机器则整洁,行为也可预见。如果可以一个人待在房间里数个小时沉浸在一些真正有趣的问题上,那将会是最开心的时光。

好吧,我这么说可能有点儿以偏概全了,确实也有不少例外。有许多程序员很善于和别人共事合作,享受其中的挑战。但是整个群体的平均状况还是朝我所描述的方向发展的。我们,程序员们,还是最享受面无表情的沉思,把自己像蚕茧一样裹起来,沉浸于问题思考中。

程序员与雇主:

专业程序员的首要职责是满足雇主的需求。这意味着要和你的经理们、业务分析师们、测试工程师们和其他团队成员很好地协作,深刻理解业务目标。这并不是说你必须要成为业务方面的老学究,而是说你需要理解手上正在编写的代码的业务价值是什么,了解雇你的企业将如何从你的工作中获得回报。

因此,专业程序员会花时间去理解业务。他们会和用户讨论他们正在使用的软件,会和销售人员与市场人员讨论所遭遇的问题,会和经理们沟通,明确团队的短期目标和长期目标。

程序员与程序员:

程序员与程序员之间通常很难密切合作,这就会带来一些不小的问题。

  1. 代码个体所有

    不正常的团队最糟糕的症状是,每个程序员在自己的代码周边筑起一道高墙,拒绝让其他程序员接触到这些代码。我曾在许多地方看到过,不少程序员甚至不愿让其他程序员看见他们的代码。这是引发灾难的“最有效秘诀”。

  2. 协作性的代码共有权

    我赞同这种做法:团队中每位成员都能签出任何模块的代码,做出任何他们认为合适的修改。我期望拥有代码的是整个团队,而非个人。专业开发人员是不会阻止别人修改代码的。他们不会在代码上构造所有权的藩篱,而是尽可能多地互相合作。他们通过合作来达到学习的目的。

  3. 结对

    “专业人士会结对工作。”为什么?因为至少对有些问题而言,结对是最有效的解决方法。

    专业人士结对工作,还因为这是分享知识的最好途径。

    专业人士之所以结对,是因为结对是复查代码最好的方式。(最有效率且最有效果的代码复查方法,就是以互相协作的方式完成代码编写。

12.2 一起协作

专业人士会共同工作。当戴着耳机坐在角落里时,你是无法参与合作的。因此,我期望大家能够围坐在一张桌子前,彼此面对面。你要能够感受到其他人的恐惧担忧,要能够听到其他人工作不顺时的牢骚,要有口头上和肢体语言上的下意识的沟通交流。整个团队要像一个统一的整体,彼此连通。

也许你认为自己一个人工作时会做得更好。也许确实如此,但这并不意味着你一个人工作时,整个团队会做得更好。况且,事实上,一个人单独工作时,不太可能会工作得更好。有些时候,单独工作是正确的。当你只是需要长时间努力思考一个问题时,可以一个人单独工作。当任务琐碎且无足轻重、和另外一个人一起工作显得浪费时,可以一个人工作。但是一般说来,和其他人紧密协作、在大部分时间段中结对工作,是最好的做法。

12.3 结论

也许我们不是因为通过编程可以和人互相协作才选择从事这项工作的。但真不走运,编程就意味着与人协作。我们需要和业务人员一起工作,我们之间也需要互相合作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/799138.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解密Prompt系列38.多Agent路由策略

常见的多智能体框架有协作模式,路由模式,复杂交互模式等等,这一章我们围绕智能体路由,也就是如何选择解决当前任务最合适的智能体展开,介绍基于领域,问题复杂度,和用户偏好进行智能体选择的几种方案常见的多智能体框架有几类,有智能体相互沟通配合一起完成任务的例如Ch…

读构建可扩展分布式系统:方法与实践07无服务器处理系统

无服务器处理系统1. 无服务器的魅力 1.1. 对于某些应用程序,负载在工作时间可能很高,而在非工作时间可能很低或者不存在 1.2. 其他应用程序后台流量可能在99%的时间里都很低1.2.1. 一旦到了一些大型节目的门票发布时间,负载需求可能会在数小时内飙升至平均水平的10000倍,然…

OpenDiary 24.9

《复活》很久没更日寄了这张是 9.16 下午出门的时候看见拍的 感觉很干净,很漂亮9.17今天突然开始更日寄总之写日记是一鸽再鸽,再加上博客园快完蛋了而新博客还没有眉目,暑假到开学期间写日寄的动力下降了很多 发生了很多事,实在是太多事了,以至于很难理清头绪还有就是,从…

基于FPGA的2ASK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR

1.算法仿真效果 vivado2019.2仿真结果如下(完整代码运行后无水印):本系统在以前写过的ASK调制解调系统的基础上,增加了高斯信道模块,误码率统计模块,可以验证不同SNR情况下的ASK误码情况。设置SNR=20db设置SNR=12db设置SNR=8db设置SNR=4db设置SNR=0dbRTL结构如下:2.算法…

基于心电信号时空特征的QRS波检测算法matlab仿真

1.课题概述通过提取ECG信号的时空特征,并使用QRS波检测算法提取ECG信号的峰值,并在峰值点标记峰值信息。2.系统仿真结果3.核心程序与模型 版本:MATLAB2022aclc; clear; close all; warning off; addpath(genpath(pwd)); rng(default)load ECG.mat Fs = 360; [loc,t…

基于PSO粒子群优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)LR = g1(1);numHiddenUnits1 = floor(g1(2))+1;% numHiddenUnits2 = floor(g1(3))+1;% layers = func_model2(Dim,num…

Qt MetaTypeInterface

Qt中的Meta Type 包含两种类型,每个类型都以一个整型ID来表示, 内建类型和用户自定义类型(自定义类型对应的整型ID 从65536 即 QMetaType::User 开始):1)内建类型: corelib\kernel\qmetatype.h// F is a tuple: (QMetaType::TypeName, QMetaType::TypeNameID, RealType) #d…

Marvelous Designer基础操作3 - 贴图导出

Marvelous Designer基础操作,包括加材质、贴图,导出衣服,导入模特做适配。--本篇导航--加材质 外部贴图 导出衣服、导入到Blender 导入自己的虚拟模特 给虚拟模特加安排板 自动适配板片配合视频看材质和导出的部分 视频中还包含了做双层的方法,也就是【克隆层(外部)】【克…

自动化测试 RobotFramework自定义静态测试类库总结

实践环境 win11 家庭中文版 Python 3.9.13 robotframework6.1.1 说明:为了方便的使用robot命令,安装好robotframwork后,修改系统环境,添加robot.exe(PYTHON_HOME/Scripts/robot.exe)所在路径到系统环境变量path 安装参考连接:https://github.com/robotframework/robotfr…

Marvelous Designer基础操作2 - 制板编辑

Marvelous Designer基础操作,本篇涉及到具体的板片编辑、合并、分割、扩展等等,也包含添加洞、做省、加纽扣、拉链、明线等。​--本篇导航--板片绘制、编辑 缝线 省 内部线、打洞、做褶皱 折叠安排、假缝 扣子 拉链 明线操作可以配合这个视频看一下,注意快捷键。基础操作 双…

图解软件开发的八大模型

图解软件开发的八大模型

[rCore学习笔记 027]地址空间

写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 引言 兜兜转转又是新的一章的开始,还是首先要看官方手册里的理论介绍和内容. 这里主要还是提纲挈领地摘抄里面的部分内容,在下面…