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

news/2024/9/21 14:53:09/文章来源:https://www.cnblogs.com/TonyCode/p/18424006

代码整洁之道

image-20240904225436374

简介:

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

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

第十四章 辅导、学徒期与技艺

image-20240921141906991

计算机科班毕业生的质量一直令我颇感失望。究其原因,并不是这些毕业生不够聪明或缺乏天分,而是由于大学并没有教授真正的编程之道。

14.1 失败的学位

我认同在大学里是有可能获得良好教育的,但是我也认为,在大学里完全也可以蒙混过关,混得一纸文凭,其实什么都不懂。

那些符合要求的毕业生有个共同点:他们几乎都在进入大学之前就已经自学编程,并且在大学里依然保持自学的习惯。

而且还有另外一个问题。即使是最好的计算机科学学位教学计划,通常也不足以帮助年轻毕业生充分准备好应付工作后遇到的挑战。在这里,我并不是要控诉教学计划里的那些课程。在学校中所学的内容和在工作中发现的实际需要,这两者之间通常会有巨大的差异。

14.2 辅导

在第一个案例中,我通过一本精心编写的手册向作者学习

在第二个案例中,我通过观察他人工作来学习,尽管他们对我视若不见。在这两个案例中,我所获得的知识虽然基础但是意义深远。

没人帮助我理解真正专业的程序员是怎样的,也没有什么专门的人教我该如何行动以及做什么事情是有价值的。我必须自己摸爬滚打,自己教自己,而这绝非易事。

我最终挺过来了,而且也取得了成功。但是,这个过程本来可以走得更好。如果当时我有一个真正的导师,能够深入浅出地指导我跨过其中的沟沟壑壑,那我的路途就要平坦很多。我可以在给他打下手完成一些小任务时观察他的工作方式。他会对我的工作进行审查,指导我的早期工作。他会专门教导我建立正确的价值观和反思内省的习惯。这类角色,你可以称他为“老师”“大师”或是“导师”。

14.3 学徒期

但是,在软件开发行业中已经形成一种观点,认为程序员就是程序员,一旦毕业后就肯定会编程。事实上,一些公司在雇用一些刚从学校里出来的毛头小孩后,就会立马将他们组织成“团队”,把他们扔到关键系统的开发中,类似这样的情形屡见不鲜。这真是荒唐透顶!

大师:

  • 他们是那些已经领导过多个重要软件项目的程序员。一般说来,他们已经拥有10年以上的从业经验,曾在多个不同类型的系统、语言和操作系统上工作过。
  • 他们懂得如何领导和协调多个团队,他们是熟练的设计师和架构师,能够游刃有余地编程。
  • 组织曾为他们提供管理职位,但是他们不是拒绝就是在接受管理职位后又回去了,或是将管理职位和主要承担的技术角色整合在了一起。
  • 他们通过阅读、研究、练习、实践和教学来维持自身的技术水平。公司会把项目在技术方面的主要职责交由大师承担。想象一下,大师就像“Scotty[5]”。

熟练工:

  • 他们还处在受训期中,不过已能胜任工作,而且精力充沛。
  • 他们彼此间的经验水平差异可能很大,但是平均经验水平大约在5年左右。
  • 在职业生涯的当前阶段,他们将会学习如何在团队中卓越工作和成为团队的领导者。
  • 他们对当前的技术都十分了解,但是对其他许多系统尚缺乏经验。
  • 他们一般只了解一种语言、一个系统、一种平台,但是他们正在不断学习的过程中。
  • 他们之上是成长十分迅速的大师,之下则是刚刚进来不久的学徒工。
  • 熟练工在大师或者其他资深熟练工的督导下工作。很少会让资历尚浅的熟练工独立工作。他们在严格的督导下进行工作。他们的代码会被人仔细复查。
  • 随着经验不断积累,他们的自主能力也会不断增长。对其直接介入指导的地方也会变得越来越少,指导内容也会越来越趋向那些微妙之处。最终,督导活动会转为以“同行评审”的方式进行。

学徒/实习生:

  • 毕业生会从学徒这一步开始他们的职业生涯。学徒没有“自治权”,他们需要在熟练工的紧密督导下工作。
  • 在一开始,他们不会单独承接任何任务,而只能作为助手为熟练工打下手。在这个阶段,应该十分密集地进行结对编程。这一时期是学习纪律并强化各项实践的阶段。各项价值观的基础也都是在这个阶段塑造成型。
  • 熟练工会担任他们的导师。他们要确保学徒们能够了解设计原则、设计模式、各种纪律和固定的操作环节。熟练工会向他们传授TDD、重构、估算等各种技艺。他们会为学徒安排阅读、练习和实践任务,还会检查学徒们的任务进展情况。
  • 学徒期至少应持续一年。
  • 期满之时,如果熟练工愿意接受学徒上升到他们这个层级,就会把学徒推荐给大师们。大师们则通过面谈和水平检测,对学徒们进行考核检验。如果能够取得大师们的认可,那么学徒便可晋升为熟练工。

现实情况:

  • 在大多数情况下几乎没有技术层面的督导!在大多数公司中,根本就不存在技术督导这一回事。程序员的水平是否能够提升和最终是否能够得到职位晋升,全视乎程序员自己的表现。
  • 我们今天的做法和我所提倡的理想化的学徒制程序,这两者之间的主要差异在于技术方面的传授、培训、督导和检查。
  • 观念上最大的差别在于,专业主义价值观和技术敏锐度需要进行不断的传授、培育、滋养和文火慢炖,直至其完全渗入文化当中。
  • 我们当前的做法之所以传承无力,主要是因为其中缺失了资深人士辅导新人向其传授技艺的环节。

14.4技艺

技艺是工匠所持的精神状态。技艺的“模因”(meme[6])中包含着价值观、原则、技术、态度和正见。

技艺模因经由口口相传和手手相承而来,需要由资深人士向年轻学徒殷勤传授,然后再在学徒之间相互传播

资深人士会观察年轻学徒的学习过程,然后不断反思和改进传授之道。技艺模因宛如一种“传染病”,一种“精神病毒”。通过观察其他人的工作,让模因落地生根,你也会“感染”上技术模因。

觉者:

你无法说服别人成为一名匠者,你无法说服他们去接受技艺模因。

口舌之争并无益处,数据亦无足轻重,案例研究也无法说明什么。接受技艺模因并不是一种理性决策的过程,也非感情用事便可奏效。这与人的“自性”(humanthing)紧密相关。

那么该如何让人们接受技艺模因呢?前面我曾说过,只要技艺模因可以被人观察到,它便具有传染性。因此,只需让技艺模因可以被他人观察到即可。你自己首先要成为表率。你自己首先要成为能工巧匠,向人们展示你的技艺。然后,将剩余的事情交给技艺模因的自然运行之道即可。

14.5 结论

学校能够传授的是计算机编程的理论。但是学校并不会也无法传授作为一名编程匠者所需掌握的原则、实践和技能。这些东西只有经由师徒个体间多年的细心监督和辅导才能获得。

软件行业中像我们这样的一批人必须要面对这一事实,即指引下一代软件开发人员成熟起来的重任无法寄希望于大学教育,现在这个重任已经落到了我们肩上。建立一种包含学徒期、实习期和长期指引的机制已是迫在眉睫。

---meme 模因:

模因,meme,这一词最早出现在英国牛津大学著名动物学家和行为生态学家理查德·道金斯于1976年出版的《自私的基因》一书中。道金斯杜撰meme一词的主要目的是为了说明文化进化的规律。在他看来,人类文化进化的基本单位是meme。meme在很大程度上指的是“以非遗传方式(如模仿)传递的行为或文化属性”。任何一个信息,只要它能够通过广义上称为“模仿”的过程而被复制,它就可以称为meme。也就是说通过模仿获得并加以传播的任何想法、说法或做法都可以算作是meme,如“曲调旋律、想法思潮、时髦用语、时尚服饰、陶器制作或搭建拱门的方法”等等。如今,研究meme及其社会文化影响的学科被称为Memetics。在本文中,将meme译为“模因”。道金斯根据gene杜撰出了meme,而“模因”一词则是模仿了“基因”一词翻译而成的。——译者注

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

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

相关文章

hexo安装后报错hexo 不是内部或外部命令,也不是可运行的程序 或批处理文件。

hexo问题 之前利用hexo和gitee搭建了一个博客,但是最近gitee的gitpage停止服务了,便想着在github上搭建一个。 在到安装hexo这一步的时候,一直报错hexo 不是内部或外部命令,也不是可运行的程序 或批处理文件。 我的所有安装步骤和环境变量发现都没有错,反复配置后去找了一…

跑冒滴漏监测系统

跑冒滴漏监测系统应用计算机视觉和深度学习技术对危化品生产区域实时检测,当检测到液体泄露时,立即抓拍存档告警并回传给后台监控平台方便人员及时处理,提高图像数据的实时监控效率。跑冒滴漏监测系统7*24小时不间断对监控画面实时分析监测,避免意外事故发生,同时降低人力…

学校食堂明厨亮灶监控系统

学校食堂明厨亮灶监控系统通过卷积神经网络学习与图像识别技术,学校食堂明厨亮灶监控系统将对现场监控画面进行24小时实时分析,如:厨房出现老鼠狗猫、厨师未戴口罩、厨师未戴厨师帽、厨师服穿戴识别、抽烟识别、玩手机识别,同时实时抓拍相关情况,全程记录留痕,提升监管效…

河道采砂识别监测系统

河道采砂识别监测系统借助深度视觉边缘分析技术,自动对监控区域违法采砂进行实时监测。如果河道采砂识别监测系统监测到有人违法采砂时,立即抓拍存档预警,将违规采砂截图发给后台管理中心,提醒后台人员及时处理。河道采砂识别监测系统可根据时间段违规记录、视频进行查找,…

煤炭传送带状态检测系统

煤炭传送带状态检测系统通过机器视觉+边缘分析技术对煤炭皮带状况进行实时监测,一旦煤炭传送带状态检测系统监测到皮带跑偏、堆煤、撕裂、异物等其他情况,煤炭传送带状态检测系统马上开展警报提醒,通知后台监控平台,并提醒相关人员及时处置。煤炭传送带状态检测系统同时把告…

城市道路积水识别监测系统

城市道路积水识别监测系统基于机器视觉分析,城市道路积水识别监测系统实时识别街道路面积水情况,对严重积水时立即报警。城市道路积水识别监测系统对低洼区域进行实时监测,一旦城市道路积水识别监测系统监测到街道路面积水时,立即进行抓拍告警,告知监控管理中心,提醒相关…

Thinkphp8安装topthink/think-captcha验证码的和使用方法

ThinkPHP8默认没有验证码,安装验证码可以使用composer来安装验证码 一、安装验证码 执行composer安装验证码 composer require topthink/think-captcha二、使用方法 1、在目录app\middleware.php中开启session \think\middleware\SessionInit::class 2、配置验证码 安装好验证…

水尺监测识别系统

水尺监测识别系统利用计算机视觉+机器学习技术对河道湖泊进行实时检测,当水尺监测识别系统监测到河道水位异常时,立即告警。水尺监测识别系统同时将告警截图和视频保存下来,推送给后台。水尺监测识别系统极大提升现场区域的管控效率,既方便又节省人力。水尺监测识别系统利用…

人员规范操作行为识别系统

人员规范操作行为识别系统对现场人员操作行为进行实时监测分析,如果人员规范操作行为识别系统发现现场人员未按照要求规范进行操作、遗漏操作步骤更改先后作业顺序或者操作不规范,人员规范操作行为识别系统立即抓拍存档现场语音播报提醒相关人员行为不规范请立即改正,并同步…

皮带跑偏检测系统

皮带跑偏检测系统对煤矿皮带运行状态进行全天候实时监测,一旦皮带跑偏检测系统监测到现场皮带跑偏、撕裂、堆煤、异物等异常情况时,皮带跑偏检测系统马上开展警报,通知监督管理办公室,并提醒负责人及时处置。皮带跑偏检测系统并把警报截屏和视频储存到数据库系统系统中生成…

单调栈-滑动窗口

830. 单调栈 模板题: 给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。 输入格式 第一行包含整数 N,表示数列长度。 第二行包含 N 个整数,表示整数数列。 输出格式 共一行,包含 NN 个整数,其中第 i 个数表示第 i 个数的左边第一个比…

人员离岗自动识别系统

人员离岗自动识别系统依据深度学习机器视觉技术,人员离岗自动识别系统能够自动识别岗位上是否人员存在。一旦发现人员在作业时间不在位置上,人员离岗自动识别系统会立即抓拍报警,并把报警记录同步到后台,通过现场语音摄像机给出语音提示,让人员及时返回岗位。通过现场语音…