来源 | 异步 | 文末赠书

异步导读

我曾很多次被人问到,在软件的世界里到底有没有优雅的代码和整洁的架构?是不是所有想实现DDD和想要写好业务代码的职场新人都只能凌乱的摸索和反复尝试?答案是有捷径。

对于大多数初出茅庐的程序员们而言,张建飞的《代码精进之路:从码农到工匠》一书就是一条捷径。通过多年的学习和工作积累,张建飞研发了COLA(全称是Clean Object—Oriented Layered  Architecture),COLA自开源以来,已经被多个技术团队使用,解决了DDD落地和应用扩展问题,受到了普遍关注和一致好评。

他提倡“工匠精神”,对于如何打造一个追求卓越、独具匠心的技术团队,如何量化考核工程师的技术贡献,都有着非常深入的思考和实践,并探索出一套切实可行的方法论。基于该方法论打造的“工匠平台”,在阿里巴巴内部被广泛使用,“工匠平台”丰富了对技术人员考察的维度,是除业务结果之外的从技术视角给技术人员“照镜子”的有效工具。让代码变得简洁,框架变得优美,有效减少了学习成本和探索路径,无论你是想通过一个代码支持多个业务,还是多个租户的场景,COLA都适用。身为码农圈的一员,更早地看到这本书可以说是一种幸运。

“我有一个梦想,我写的代码,可以像诗一样优美。我有一个梦想,我做的设计,能恰到好处,既不过度,也无不足。”

很多人会有一种固化的思维,认为只有伟大的人才配拥有伟大的梦想,但其实这个世界上原本就没有那么多伟大的人。所有伟大的梦想都是由普通人一点点的小愿望经过不断地努力,最终才变得不那么平凡,甚至称得上伟大的。张建飞一直觉得自己就是一个再普通不过的人,但是拥有自己小小的梦想,也愿意为了梦想坚持和努力。

坚强的母亲带给自己不愿服输的性格

张建飞于1982年出生在皖南一个很普通的农村家庭。出生的那天,全村人都在参加婚礼,也许是受热闹气氛的影响,他比预产期提前了好几天降临,直到建飞已经呱呱落地了,父亲才从酒席上赶回来。还好母亲心态好,一切也都顺利。

80年代的中国农村,虽然已经不存在温饱问题,但是日子过得还是很紧巴,一到下大雨的天气,家里的土房里就会下小雨。建飞从小就会帮助家里做一些力所能及的活儿,一家人虽然生活清贫但也拥有朴实的幸福。

在他7岁的时候,母亲决定建新房子。这可不是一件小事情,虽然妈妈和爸爸靠做衣服这个手艺挣到一些辛苦钱,但是离建房还差一些。就是在那种比较艰难的环境中,家里还是修起了新房子。建飞知道母亲在这其中做了很大的努力,这再次让他感受到母亲坚毅的性格,只要她决心要去做的事,一般都可以做成。

母亲有两个哥哥一个妹妹,在她9岁的时候外婆就去世了,外公是一个脾气暴躁、不会关心人的粗线条男人。母亲除了要给一家人洗衣做饭以外,还要在父亲发火的时候,保护妹妹。不好好的生活环境养成了她坚强不愿服输的性格,而这种性格从小又带给建飞很深刻的影响,让他自小就愿意多去尝试和努力,不会轻易服输。

张建飞和家人

成长中的无数小事,铺就了日后的路

小时候的张建飞并不是一个很自信的人,总觉得学习平平的自己在各个方面都很普通。小学5年级的时候,他和几个小伙伴在村里的一个池塘游泳。当轮到建飞的时候,他用最大的力气把自己抛向空,等砸到水里之后感觉一阵剧烈的刺痛,左脚被严重的割伤了,脚底几乎一半的肉已经被割开,可能是速度太快,伤口好像都来不及流血。正值小升初的关键期,这件事耽误了考试,他不得不在5年级又多待了一年。

但是塞翁失马,焉知非福,在留级的那一年,张建飞小宇宙开始爆发,成绩出奇得好,在各种竞赛中都拿到了很好的成绩。做惯了普通学生的他,突然发现自己也是有潜力变好的。后来在高考时分数刚刚跨过重点线,为了能选上一个比较热门的专业,他特意选了一所离家很远的普通211学校——云南大学。

离家遥远的代价就是每年他不得不坐上2天2夜的火车去学校上学,而且每年春运火车票非常紧张,连坐票也没有,只有站票。因为离家太远了,建飞基本上一年只在寒假的时候回家一次,暑假一般都留在学校勤工俭学。可以说,这个过程很大程度培养了他去探索和敢于吃苦的精神。

大学时候,张建飞有两个兴趣爱好,一个是英语,一个是打篮球。英语对编程的帮助主要还是在看书和看资料方面,打篮球也让他拥有健康的体魄。在建飞看来,人生是一场持久战,健康是1,其它都是0。更何况编程要学的东西非常多,没有一个好身体打持久战可不行。

人生每个转折点都是一种选择,工作让我更成熟

2007年计算机工程硕士毕业后,张建飞先后在软件公司InfoSys与互联网公司eBay担任高级研发和技术专家的职务。2007年到2010年是高级研发工程师,2010年到2014年是技术专家。这段工作经历最大的成长是在eBay学会了大型分布式系统的技术体系。

2014年,他加入阿里巴巴,先后在1688、ICBU和零售通担任技术主管。他非常认同阿里的文化和价值观,比如“客户第一,员工第二,股东第三”,就是一种利他文化,当我们越多地帮助他人成功的时候,自己才会成功。再比如“唯一不变的是变化”,阿里强调拥抱变化,他也非常认可。这两个价值观促使建飞不断学习、不断成长。

建飞在阿里工作最大的转折点发生在2015年年底,也就是加入阿里半年后。因为自己自小就不是一个太自信的人,而且还很敏感,非常在意别人的眼光和看法,所以在入职阿里之后,张建飞想要快速地去证明自己,这种“求功心切”的想法无形中给了他巨大的压力。在这种压力和焦虑之下,工作也很难做好,工作做不好又会更加焦虑,形成了恶性循环。最严重的时候,他连续失眠两个星期。

张建飞和朋友

使得张建飞状态逐渐调整好的方式是看书。这个阶段对他影响最大的有两本书,一本是《成长型思维》,另一本是《活出生命的意义》。

《成长型思维》教会了他要用发展的眼光看自己,焦虑不能改变现状,而持续学习、提升自己可以。《活出生命的意义》教会他生命的潜能是无限的,即使在最糟糕的境地,我们也有选择的自由。这之后张建飞逐渐放平了心态,平复了思绪,该学习学习,该运动运动,该努力努力,该度假度假,不再那么敏感,也不再那么在乎别人的眼光,这才有了后面的COLA,有了《代码精进之路:从码农到工匠》。

2018年的时候,建飞带领团队在部门的代码大赛上拿到了第一名。当时的奖励是和集团副总裁玄难共进晚餐。在晚餐会上,玄难同他们聊了很多有关自己的心得,这对张建飞有很大的激发。张建飞向玄难表达了想写一本书的想法,玄难表示很支持,还答应给书写序。
后面,每当在工作中遇到问题,玄难也会像朋友一样给张建飞指点,给了他很多的力量。

好奇心给我热情,写代码是一直探索到老的事情

对张建飞而言,当初选择了计算机专业并不是没有后悔过,选计算机专业没有别的,就是因为计算机是当时的热门专业,但其实他一度认为自己不适合编程。直到大学毕业那年,他也没有写过几行代码,还好学校的计算机课程大部分是不用编程的,否则建飞认为自己甚至会很难毕业。后来读了研究生,研究生的前半部分生活简直就是大学的延续,上课、寝室、球场、英语角……直到开始做一些小项目,才开始了张建飞真正的编程人生。

他是一个典型的慢热型程序员,虽然很慢热,但他一直没有放弃学习,没有放弃得的更好。建飞不相信什么“35岁之后做不了程序员”之类的话,他认为我们就是要活到老,学到老。写好代码不是一件容易的事,唯有不停地学习,不停地探索,向国外的编程大师们看齐,保持精进,才有可能把这件事做得更好。

好奇心对建飞职业的影响是他一直在探索如何写好代码。从开始工作的第一天起,就有这个想法,不过受限于当时的技术能力和经验,一直没有找到很好的方法。直到《代码精进之路:从码农到工匠》的出版,才算是找到一些门路。但他知道,这只是开始,未来的路还很长,自己会继续保持好奇,继续探索。

张建飞的偶像是维克多·弗兰克尔博士,正是他让自己看到人类如何在最恶劣的环境下仍然可以发出人性的光辉。反观自己,我们受的这点苦,根本就不值得一提。维克多·弗兰克尔博士说过:“人越是忘记自己——投身于某种事业或献身于所爱的人——他就越有人性,越能实现自己的价值。所谓自我实现,绝不是指某种可以实现的目标,因为人越是追求这个目标,越是容易失去。自我实现是自我超越唯一的副产品。”这些都给了建飞很大的启迪。

说到研发COLA(全称是Clean Object-Oriented Layered Architecture)的初衷,建飞觉得在做了多年业务技术开发之后,他发现“日子再也不能这么过”,为什么所有的业务代码都这么混乱,这么复杂?解决复杂度就是他研发COLA的初衷。

COLA的优点是它给那些想实践DDD、想写好业务代码的同学提供了一个可以落地的框架,可以减少他们的学习成本和探索路径。COLA对行业的最大贡献是让DDD从一个形而上的思想,变成一个可以看得见、摸得着的代码框架。同时其扩展点的设计是继承之阿里中台的扩展设计,对于那些想要通过一套代码支持多个业务,或者多个租户的场景也能提供帮助。

创作《代码精进之路》的初衷,写出更好的代码

2018年7月,张建飞在阿里巴巴内部的技术博客ATA发表了一篇文章《技术人自己的KPI》,表达了对技术团队越来越没有“技术味道”的担忧,以及技术团队除了业务项目之外,还应该有属于自己的KPI,而不是完全和业务的KPI绑定。让业务先赢应该是底线,而不是全部。文章中还提到,程序员要有工匠精神,并鼓励大家通过学习、实践、分享不断提升编码能力和设计能力。用工匠精神写每一行代码,而不是简单地通过代码堆砌实现业务功能来交差。

张建飞和阿里的同事

该文章在阿里巴巴内部和外部(在公众号“阿里技术”上也有发表)引起了不小的反响,道出了很多一线工程师和技术Leader的心声。大家纷纷表示技术味道的缺失不利于工程师自己的成长,从长远来看,也不利于公司的发展。我们需要做出改变,需要一种追求卓越的工匠精神。

基于这个出发点,建飞提出了一套对技术人员技术工作进行量化的指标,并通过“工匠平台”这个产品进行落地。“工匠平台”会收集这些技术指标,并对其进行评分和统计,从而提供一个更加全面的技术人员画像,更加客观地反映技术人员的技术贡献。

张建飞很多次在思考,在软件的世界里,到底有没有优雅的代码和整洁的架构呢?他想还是有的,但是更准确地说是:有优雅代码和整洁架构,但是没有一成不变的优雅代码和整洁架构。在软件的世界里,一定要学会变通,不能教条。

就是这样的,我们学会规则的目的是为了知道在什么时候打破规则。不是说你使用了COLA,就一定要遵守COLA的条条框框。不是的,你完全可以变通,可以发展,可以尝试不一样的做法。只要这种做法在你的语境下是合理的,就可以去做。

张建飞说,他有一个梦想,他写的代码,可以像诗一样优美;他做的设计,能恰到好处,既不过度,也无不足。他认为工程师最大的美德就是写出让人可以看懂的代码。

编后语:张建飞说过,他最希望将《代码精进之路》推荐给职场新人看,因为如果在你初入职场的时候,就有一个人教你怎么写好代码,那一定是一件很幸运的事情。

“种一棵树最好的时间是在十年前,其次是现在”。我不相信什么“35岁做不了程序员”,也不相信什么“年纪大了,精力不够”。我只知道有些人在持续学习,有些人过早地享受安逸。

愿你在新的一年可以快乐,也能有所收获。

《代码精进之路:从码农到工匠

张建飞

本书是一本专门为专业程序员而写的书,主线是介绍如何化解代码复杂度,帮助程序员写出可读性好、可维护性好的代码。

本书共有13章内容,主要分为技艺部分、思想部分和实践部分。技艺部分详细介绍了编程技巧和方法论,并配以详尽的代码案例,有助于读者提高编写代码的能力,优化代码质量。思想部分主要包括抽象能力、分治思想,以及程序员应该具备的素养等内容。实践部分主要介绍了常见的应用架构模式,以及COLA架构的设计原理。

END-

今日福利

▇《代码精进之路 从码农到工匠》

这是一本为专业程序员而写的书,写好代码、追求卓越和工匠精神是每个程序员都应该具备的优秀品质。本书共有13章内容,主要分为技艺部分、思想部分和实践部分。

如何获得:参与话题留言+转发本文至朋友圈,1月15日,异步君将抽取2名读者赠送《代码精进之路 从码农到工匠》。

今日互动话题:

“你是什么时候开始学习编程

免费领书活动

邀请10位好友关注“异步图书”微信公众号10天,即可获得异步图书1本,邀请成功后,请及时填写个人信息到下方表单中。

点击“阅读原文”,立即试读

代码精进之路 码农到工匠pdf_专访张建飞:阿里技术也提倡,优雅代码和整洁架构...相关推荐

  1. 代码精进之路 码农到工匠pdf_VBA代码解决方案第065讲试看内容

    下面是我根据自己20多年的VBA实际利用经验,编写的四部教程,这些是较大块的"积木",可以独立的完成某些或者某类系统的过程,欢迎有需要的朋友联络(WeChat:NZ9668)分享. ...

  2. 代码精进之路:从码农到工匠读书笔记

    代码精进之路:从码农到工匠读书笔记 第一章技艺 代码命名规范的意义: 由此可见,事物的复杂程度在很大程度上取决于其有序程度,减少无序能在一定程度上降低复杂度,这正是规范的价值所在.通过规范,把无序的混 ...

  3. 从码农到工匠,程序员必备的两本提升自我修养的书

    软件设计不仅是"技术"(Technique),更是一门"技艺"(Craftsmanship),要想控制复杂度,防止系统腐化.我们不能只满足做一个搬砖的" ...

  4. 代码精进之路读后感(三)

    继续拜读范老师的代码精进之路,越读越觉得虽然短小但是很精悍,别想歪,我们说的是正经事 第三篇范老师讲了讲什么是优秀的程序员,我觉得就是我啊,会打代码还会吹牛逼扯犊子,还会说几句相声扯几嗓子小曲,别打了 ...

  5. 《代码精进之路:从码农到工匠》——抽象

    写本文的原因是,抽象是软件设计中最重要的概念,但抽象这个概念本身又很抽象,值得我们花时间去好好探究一番. 抽象的力量 没有抽象思维,就没有人类光辉灿烂的现代文明. 原始人看到一片树林,不会给它们一个名 ...

  6. 代码精进之路-读后感

    文章目录 第一章 命名 函数名 辅助类 方法名约定 使用对仗词 后置限定词 注释 第二章 规范 日志规范 异常 第三章 函数 参数数量 短小的函数 职责单一 精简辅助代码 组合函数模式 SLAP 第八 ...

  7. 压缩过的js代码怎么还原_码农晒出一段代码:500行代码没有一字注释,这种情况怎么应对?...

    对于程序员经常提到的"代码",从某种程度上来讲就算是机器码,因为这个东西机器很擅长读,不论写的怎么乱,怎么压缩混淆,在机器看来都是一样的,而人就不一样了,哪怕是能力再强的程序员,代 ...

  8. 「低代码系列报道」百度爱速搭张建:未来2年中国低代码平台或将赶超国外头部厂商...

    <中智观察>第1667篇推送 作者:马一洋 编辑:小宏 编审:杨小天 头图来源:极客公园IT业界 低代码.无代码作为可视化编程平台,在新冠疫情大爆发的催化下,正以惊人的速度在全球市场持续增 ...

  9. 钛媒体独家对话张建锋:钉钉的低代码革命

    关注ITValue,看企业级最新鲜.最价值报道! 阿里云在杭州的一个办公楼有40多层,电梯的规则是按下要去的楼层,由系统统一分配几号电梯.高峰时期人多梯慢,又看不到显示到几层,有个软件工程师几次等的不 ...

  10. 从码农到工匠:优秀程序员的共同特质和素养

    未经审视的人生不值得过. --苏格拉底 在我的工作经历中,会发现有一些技术人员成长很快,能够迅速成为团队的骨干,也有一些技术人员总是在原地踏步,工作十年和工作一年的区别并不大.渐渐地,我发现这些优秀的 ...

最新文章

  1. 剑指offer(Java实现) 求1+2+3+…+n
  2. java access ole word,利用OLE对象实现Word文档操作
  3. mysql删除表命令语句_MySQL增删改查语句命令(一)
  4. Javascript获取For循环所用时间
  5. 在Linux平台使用Firefox 登陆EBS r12环境
  6. linux UID的长度,linux下文件数、目录数、文件名长度的各种限制
  7. [Odoo] Report PDF 分页
  8. 形容计算机老师风采的句子,赞美老师的优美句子
  9. html中字体都可以设置哪些,html中设置字体的属性有哪些
  10. Python数据类型-list得切片(slices)
  11. [硬件]_ELVE_STLINK下载出现nternal command error问题
  12. python向网页上传excle、text文件
  13. 苹果手机在升级系统时一直显示无服务器,苹果手机一直显示检测更新,怎么办?...
  14. 从右往左截取字符_按照某个字符串从右到左以第一个为条件截取数据
  15. 幻读与不可重复读区别
  16. Exiftool 命令行操作图片元信息(Megadata)
  17. 那个叫“中国移动”的精神病人就要被治愈了
  18. 银行春招:六大行薪资待遇知多少?(上)
  19. 知道做到 - 分享三
  20. MySQL:记录一个多对多小查询

热门文章

  1. 安装与卸载应用程序 (Package Installer)
  2. 手机铃声格式规范,midi格式规范(转)
  3. 【Rust日报】2020-05-05:窥探Zoom, Lambda部署, slip等
  4. 计算机组成原理中EMAR是什么,计算机组成原理(罗克露)第3章cpu.ppt
  5. ws550 第三方固件_【详细图文】华为WS550固件升级方法
  6. python自动生成文章原创_【Python】皮皮AI工具( AI文章伪原创工具)
  7. 盘点 常见MQ : 消息队列总览
  8. SSM项目实战之十八:基础数据的修改和删除
  9. C++有序map和无序unordered_map性能测试对比
  10. ideaIU-2021.3配置Git/SVN