
张建飞
这是一本为专业程序员而写的书,写好代码、追求卓越和工匠精神是每个程序员都应该具备的优秀品质。 本书共有13章内容,主要分为技艺部分、思想部分和实践部分。技艺部分详细介绍了编程技巧和方法论,并配以详尽的代码案例,有助于读者提高编写代码的能力,优化代码质量。思想部分主要包括抽象能力、分治思想,以及程序员应该具备的素养等内容。实践部分主要介绍了常见的应用架构模式,以及COLA架构的设计原理。
这本书分为三部分,第一部分讲技艺,内容包括命名、规范、函数、设计原则、设计模式、模型、DDD等七大类知识,前面三部分可以统称为编码规范,后面四部分可以认为是一些进阶技巧,前面三部分内容是每一个开发必须要遵守的底线,后面四部分则是作为一个有追求的开发要必备的知识技能,只有掌握了这些,才能实现从码农到工匠的转变。 第二部分讲思想,这部分内容比较抽象,作者讲了抽象、分治、技术人的素养、技术Leader的修养等,其实大多数内容我们都耳熟能详,如:抽象、分层设计、成长型思维、批判性思维、记笔记等等,但在实际工作、生活中往往会抛之脑后。 第三部分讲实践,作者讲了COLA架构以及工匠平台。COLA等优秀的架构不是一蹴而就的,而是在已有的架构基础上不断优化,推陈出新,演进而来的。我们作为程序员,其实非常有必要去了解和熟悉这些架构,并结合项目实际合理运用,让我们的开发更便捷,效率更高效。 其实本书最让我印象深刻的是第11章,讲技术Leader的修养。技术Leader应该就是俗称“TL”。那么什么是TL?TL和Manager之间有什么区别呢? 作者提到几点与TL职责相关的事情: 技术氛围 作为一个TL,如何去提升团队的技术氛围,重燃团队对技术的热情,是TL的责任与使命。 一个技术团队,尤其是做业务开发的技术团队,如果没有“技术味道”,管理者完全不关心技术细节,绩效完全和业务KPI绑定,就会导致工程师们整天只会写if-else的业务代码,得不到技术上的成长。在这样的技术团队,团队的战斗力和凝聚力都会每况愈下。 如何提升技术氛围,作者提供了四点思路: 1、代码好坏味道 可以在每周定期举行一次“代码好坏味道”的分享,会议主持人可以轮流当,由主持人给大家分享3个代码好味道和3个代码怀味道,这些代码既可以是来自我们工作中的代码,也可以是来自开源软件的源码。 2、技术分享 分享是倒逼我们去学习和总结的有效手段。在准备分享的过程中,分享者要去阅读很多资料,将原理弄清楚,最后用通俗易懂的语言表述。 3、CR周报 代码审查(Code Review,CR)是保证代码质量和架构风格一致性的重要手段。CR周报就是要把CR的结果透明化,通过周报的形式展现团队在一周中的CR成果,包括团队成员的CR评论数排名、代码分支的质量情况,以及CR中的典型案例。这种透明化非常有价值,既可以帮助技术Leader了解代码质量的概况,也能极大地调动团队成员进行CR的积极性。 4、读书会 读书的范围可以不止局限于技术类书籍,读书方式可以是同读一本书,也可以是采用拆书的方式,每个人分别读书的一章或几章。另外对于读书会的举办频率也不要求固定,工作任务紧的时候,频率适当放低,甚至暂停。 目标管理 一个好的Leader,应该是愿意花时间和下属一起讨论、制定目标的。在过程中,给予帮助和指导,及时对焦纠偏,确保目标的达成。这样做是对下属负责,也对自己负责,至少不至于在谈绩效时造成意外,出现管理事故。 目标管理常见手段有关键绩效指标(KPI)和目标与关键成果(OKR)两种方式。相比较而言,一味地追求KPI,可能会导致短视;OKR更注重短期利益和长期战略之间的平衡。 OKR主要有如下两个特点: OKR可以不和绩效挂钩,主要强调沟通和方向。 OKR比KPI多了一个层级的概念,O(Objective)是要有野心的、有一定的模糊性,但是KR(Key Results)需要是可量化的,并且KR一定要为O服务,不能偏离O的方向。 技术规划 技术规划的四个层次: 1、当前问题 第一层问题解决是最直接的,主要看团队中现在有什么迫切、紧急的问题需要解决,有哪些坑要去填。例如,业务增长比较快、当前架构缺乏弹性、要做服务化拆分、加入分布式缓存、分表分库等。又如,因为代码质量(可读性、可维护性)差,要建立一个代码审查机制,提升代码质量。 2、技术领域 技术领域要做的是在这些常规领域中,根据业务情况和团队情况选择一些领域和命题(比如稳定、性能、效率等),并在这些命题和方向中根据优先级做判断。比如,完善监控体系提升系统稳定性、使用CDN提升性能、通过测试自动化提升研发效率等。 3、业务领域 让业务先赢是技术的首要使命,即使我们身处技术团队,也要充分理解业务、关注业务,要分析业务数据和发展趋势,和业务同事充分交流,总结和抽象出业务的发展对技术会提出什么诉求,需要技术做什么布局和建设以应对业务发展的需求。 4、团队特色 作为技术团队,我们要对比团队内外技术的异同,最终圈定一个差异化区域。这块区域是团队的特色技术,是团队借外力之外要修内功的部分,是不依赖别人而主要靠自己突破的部分,是团队相比外面的差异化竞争力。这一层很重要,对团队的口碑、影响力和稳定性都有较大的影响;同时这一层又是最难的,很多技术团队在这一层次是空白的。 那么Leader和Manager有什么区别呢? 简单来说,Manager是管理事务,是控制和权威;而Leader是领导人心,是引领和激发。Leader要做一些Manager的管理事务,但是管理绝对不是Leader工作的全部。 Leader宣言: 对待上级——有胆量 对待平级——有肺腑 对待下级——有心肝
这本书真不错。他写的这两本书都很不错,还有一本书是《程序员的底层思维》,也是很不错的,只不过那本书早就看完了。本书主要通过技艺、思想以及实践三大模块来讲解。在技艺部分主要是介绍了命名的重要性、开发代码的一些规范、函数应该注意的点、常用的设计原则、设计模式以及模型和领域驱动(DDD)的核心。思想方面主要是抽象、分治、技术人的素养以及作为技术Leader的养成记。最后在实践部分作者介绍了COLA架构——一个遵循DDD设计的开发框架以及利用COLA架构书写的实践代码。 总之,本书看完还是有所收获的,我们作为程序员不仅仅是只写业务代码,更要提高我们的架构能力和设计能力。推荐大家看一下张建飞的这两本书,看完之后,你会在写代码的时候就会注意,应该尽可能写“坏代码”。
一本比较全面的书籍,涉及软件开发的方方面面,从编码规范、架构设计到代码编写都有涉及,最后还奉上自己的开源项目以飨观众,有概念,有思想,有干货。 作者有大厂的工作经历结合思考与提炼形成这本码农成长秘籍,适合在升级打怪路上迷茫的每一位小羔羊。
本书涵盖的主题较多,从命名、规范、函数等编程细节,到设计原则、设计模式、模型、DDD等原则模式,到抽象、分治思想、技术人成长的素养,最后还介绍了 COLA 框架的架构和使用案例。 由于主题较多,大部分主题并没有足够深入,不过还是值得一读,以帮助自己建立体系化的认知,为进一步的学习实践指明方向。
谢谢大家支持,有想法随时和我交流
本书作者有着丰富的阿里工作经验,经历了众多高复杂度的项目架构设计,再加上自身对代码质量的高要求,对好的技术味道的崇尚,经过一系列的自我思考,优秀前辈的借鉴以及亲身实践,逐步沉淀出一套适用于大多数场景的整洁架构的方法论和运行框架。 本书文笔精炼,讲述了整洁架构的道,术,器,专业知识输出的同时,体现了个人的思考路径和结果,也传达了众多普世的理念和方法论。值得软件工程师阅读,对硬软能力的提升都会有很大帮助。 这本书我给打四分,一分给精炼的表达,清晰的叙事脉络,容易让读者接受,一分给专业且新颖的知识和产品输出,对读者来说软硬实力都具有可操作性,一分给作者的分享精神,代码开源以及个人方法论的输出,最后一分作为对作者的支持,书是优秀的,希望作者未来可以产出更多优秀的内容。
作者语言精炼流畅。除了第7,12,13章介绍具体细节以外,本书介绍的方法论和思想都很通用有用。技艺部分的内容与《编写可读代码的艺术》大致相同。 特别值得一提的是,8-11章总结的经验感悟,在做事为人方面都于我颇有启发。
比较好读的一本书,没有晦涩难懂。对于DDD的描述没太理解。 全书分为三部分: 技艺,思想,实践。更偏爱思想部分的内容。 技艺,即编码过程中的具体技巧,包括命名,编码规范,函数使用,solid设计原则,GoF设计模式,UML模型建模,DDD概述。 思想,有点偏心灵鸡汤,但是又是实实在在的作者所想所思所得,作为技术人能感同身受。抽象是技术的核心,以简练的抽象模型抓住本质问题并概括出复杂的业务背景;分而治之,也是大数据的内核,拆解单体的时间和空间复杂性;技术人素养很实在的要素:不教条,批判型思维(聚焦问题本质),成长型思维,结构化思维,工具化思维,好奇心,记笔记,有目标,选择的自由,平和心态,精进。以上技术人素养概述起来就是:抽象,批判,成长,平和。leader修养中最印象深刻的是:不需要高高在上指点江山的技术manager,需要深入系统深入代码细节,给团队带来改变的leader。manager是事务管理,是控制和权威;leader是领导人心,是引领和激发。要视人为人,管理好对事的绩效货币和对人的关系货币。对待上级要有胆量,对待平级要有肺腑,对待下级要有心肝。 实践:讲解了具体的架构,包含业务架构,应用架构,系统架构,数据架构,物理架构,运维架构。典型应用架构:分层架构,cqrs,六边形架构,洋葱架构,DDD。
比较基础的一本书,内容上除了一直在谈的代码的清晰性,整洁性之外,详细介绍了自己团队研究出的框架,读起来门槛并不会很高。 让我感兴趣的是这个书名起的很有特色。从码农到工匠,象征着从农民阶级转向工人阶级。农耕的特点是看天操作,而工程的特点是有规章,有秩序,有要求。这个题目《从码农到工匠》很清晰的概括出了代码精进的方向,不要随意乱写,要有规则,有秩序,有纪律。
本书从三个部分来展开,技艺、思想、实践。 技艺篇包括命名,规范,函数、类、设计原则、设计模式、模型、DDD,从点到面,从局部到整体,逐步的描述了一个码农应该具备的技艺,并且如何掌握。其他也推荐了《代码整洁之道》,《领域驱动设计》等书。 思想篇包括抽象思维,分治思想,技术人的素养,leader的素养。抽象思维是必不可少的,有了它才能够更好的把现实世界映射为软件世界。文中也介绍了如何培养抽象的思维,多阅读,多总结,培养领域建模。分治是应对日益复杂,庞大的软件世界的法则,把大问题分成一个个小问题,逐个解决,达到最终解决完整问题得目的。技术人要有追求,除了技术外,还应该保持好奇心,持有终身学习的态度,才能一直适应时代的发展。一位好的技术leader需要有敏锐的技术嗅觉,能够很好的带领团队,培养团队的战斗能力,文中也一一介绍了如何成为一名好leader。 实践篇其实收获一般,快速略过,主要是总结了一些常见的软件设计架构吧。 本书文字比较流畅,而且作者是大厂富有经验的leader,一些经验之谈确实能够让人耳目一新,起到指导新人的作用。 综上,本书满分5星给4星。