企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
#### 第1章 专业主义 专业主义有很深的含义,它不但象征着荣誉与骄傲,而且明确意味着责任与义务。这两者密切相关,因为从你无法负责的事情上不可能获得荣誉与骄傲。 代码中难免会出现bug,但这并不意味着你不用对它们负责;没人能写出完美的软件,但这并不表示你不用对不完美负责,所谓专业人士,就是能对自己犯下的错误负责的人,哪怕那些错误实际上在所难免。职业经验多了之后,你的失误率应该快速减少,甚至渐进于零。失误率永远不可能等于零,但你有责任让它无限接近零。 写一些随时都能运行的单元测试,然后尽可能多的执行这些测试。要用这些自动化单元测试去测多少代码呢?还要说吗?全部!完全都要测!我是在建议进行百分百测试覆盖率吗?不,我不是在建议,我是在要求!你写的每一行代码都要测试。完毕!这是不是不切实际?当然不是。你写代码是因为想执行它,如果你希望代码可以执行,那你就该知道它是否可行。而要知道它是否可行,就一定要对它进行测试。 有些代码不是很难测试吗?是的,但之所以很难测试,是因为设计时就没考虑如何测试。唯一的解决办法就是要设计易于测试的代码,最好是先写测试,再写要测的代码——TDD。 成熟的开发人员知道,聪明人不会为了发布新功能而破坏结构。结构良好的代码更灵活。以牺牲结构为代价,得不偿失,将来必追悔莫及。 所有软件项目的根本指导原则是,软件要易于修改。如果违背这条原则搭建僵化的结构,就破坏了构筑整个行业的经济模型,如果你希望自己的软件灵活可变,那就应该时常修改它!让软件保持固定不变是危险的!如果一直不重构代码,等到最后不得不重构时,你就会发现代码已经“僵化了”。对待代码,就如果雕塑家对待泥巴那样,要对它进行不断的变形与塑造 职业发展是你自己的事情。雇主没有义务确保你在职场能够立于不败之地,也没有义务培训你,送你参加各种会议或给你买各种书籍充电。这些都是你自己的事。将自己的职业发展寄希望于雇主的软件开发人员将会很惨。 雇主也没义务给你留学习时间,应该勤勉的开辟一部分时间为自己的职业发展工作,这将会让你成为更有价值的专业人士。不能铭记过去的人,注定重蹈先人的覆辙,学不会新原则和技术的开发人员必将沦落。业精于勤。真正的专业人士往往勤学苦干,以求得自身技能的纯熟精炼。 与他人合作是最佳学习方法之一。专业软件开发人员往往会更加努力的尝试与他人一起编程、一起练习、一起设计、一起计划,这样他们可以从彼此身上学到很多东西,而且能在更短的时间内更高质量的完成更多的工作,让新人融入团队的最好办法是和他们左到一起,向他们传授工作要诀。专业人士会视辅导新人为己任,他们不会放任未经辅导的新手乱打乱撞。 #### 第3章 说“是” 在承诺某事时,应当留意自己的用词,因为这些用词透露了我们对待承诺的认真程度 你,你自己,始终都能掌控某些事情,也就是说,总有些事是你可以承诺做到的 你只能承诺自己能完全掌握的事 如果你无法兑现承诺,那么最终要的就是尽早向你的承诺对象发出预警,越快越好,越早越好 如果你不尽早告诉他人可能的问题,就错失了然他们帮助你达成目标、兑现承诺的机会 口头上说自己会在周末搞定这些事情是很容易的,但真要花精力高质量的完成工作会困难许多。专业人士对自己的能力极限了如指掌。他们十分清楚自己还能保持效率加班多长时间,也非常明白要付出的代价 专业人士不需要对所有请求都回答“是”。不过,他们应该努力寻找创新的方法,尽可能做到有求必应。当专业人士给出肯定回答时,他们会使用承诺用语,以确保各方能明白无误的理解承诺内容 #### 第6章 练习 专业人士都需要借助专门训练提升自己的技能,无一例外,和习武者一样,程序员应该懂得多种不同的Code Kata,并定期练习,确保不会淡化或遗忘。职业程序员通常会受到一种限制,即所解决问题的种类比较单一 http://katas.softwarecraftsmanship.org/ http://codekata.pragprog.com/ 无论如何,专业人士都需要练习。练习的时候是赚不到钱的,但是练习之后,你会获得回报,他们这么做,是因为他们关心自己能做到的最好结果。更重要的是,他们用自己的时间练习,因为他们知道保持自己的技能不落伍是自己的责任,而不是雇主的责任。 #### 第14章 辅导、学徒期与技艺 在学校中所学的内容和在工作中发现的实际需要,这两者之间通常会有巨大的差异。 由于对软件开发人员培训不足,不少公司曾遭遇过巨额的经济损失。 一些公司在雇用一些刚才学校里出来的毛头小孩后,就会立马将他们组织成“团队”,把他们扔到关键系统的开发当中去,类似这样的情形屡见不鲜。简直荒唐透顶。 大师——他们是那些已经领到过多个重要软件项目的程序员。一般说来,他们已经拥有10年以上的从业经验,曾在多个不同类型的系统、语言和操作系统上工作过。他们懂得如何领到和协调多个团队,他们是熟练的设计师和架构师,能够游刃有余的编程。组织曾为他们提供管理职位,但是他们不是拒绝就是在接受管理职位后又回去了,或是将管理职位和主要承担的技术角色整合在了一起。他们通过阅读、研究、联系、实践和教学来维持自身的技术水平。公司会把项目在技术方面的主要职责交由大师承担。 专业主义价值观和技术敏锐度需要进行不断的传授、培育、滋养和文火慢炖,直至其深植入文化当中。 学校能够传授的是计算机编程的理论。但是学校并不会也无法传授作为一名编程匠者所需掌握的原则、实践和技能。这些东西只有经由师徒个体间多年的细心监督和辅导才能获得。软件行业中像我们这样的一批人必须要面对这一事实,即指引下一代软件开发人员成熟起来的重任无法寄希望于大学教育,现在这个重任已经落到了我们身上。建立一种包含学徒期、实习期和长期指引的机制已是迫在眉睫。