平凡却又深刻的编程理念:Make it Work then Make it Better

关于专题第一篇文章,我考虑了很久写什么主题。起初我想写目前最有兴趣的“生命周期”,但觉得开篇应该还是选择一个更基础的、更通用的,所有程序员都应该遵循的理念,最好还普世。然后我思考了下面两个问题

  • 一名程序员最基本的职责是什么?
  • 一名优秀的程序员最根本的品质是什么?

用一句话回答这两个问题,让程序工作然后让它变得更好——Make it Work then Make it Better

Make it work!一名程序员首先要保证构建的程序能预期工作。不管你写的代码多么漂亮友好,用的技术或工具多么先进,如果程序不能预期工作,这个事情便是失败的。

Make it better!优秀的程序员能够不断地减少程序的复杂度,如让程序执行更快更省空间,让程序变更更简单,让程序迭代更快速,让团队协作更有效推进产品希望的方向等。注,越到后面的描述,“程序”一词越抽象,可替换成系统、产品等。这里的关键在于如何定义”更好“;拥有一个系统的易于理解和能够执行的衡量指标十分关键。


首先,你的交付要预期工作。

对于初级程序员,交付的功能能预期工作。

对于高级程序员或一线技术管理者,交付的项目要预期完成并满足要求。为了保证团队能高效协作,需要首先建立项目的工程环境,建立构建和发布的迭代流程,制定程序设计的规范。

对于架构师和高级技术管理者,(我认为)交付的产品要预期完成任务。为了保证各个团队能有效协作和完成任务,需要保证组织架构能适应技术架构,制定产品计划和目标的衡量标准,等等。

其次,你要明白什么方面要提高,定义如何衡量以及采取行动。

代码执行效率是最直接要考虑的地方。

在实际工作中,常见的场景是使用性能分析工具去分析各个代码片段执行的效率,从而找到导致主要影响的代码片段,从而设法改善。如果需要提高的代码片段运用了特定的经典算法,可考虑更换更合适的算法,或者具体调整算法实现细节。这时候去算法知识的储备和对时间复杂度和空间复杂度的衡量方法(大O表示法)会更大程度帮助你。有效的学习路径比较单一,比如学习算法知识(看经典书籍如(如《算法》、《算法图解》或《算法导论》))和刷题加强实践和理解。

相比代码执行效率,代码的可维护性和扩展性往往在工程实践中更关键。简单而言,要考虑如何让代码变更更容易,因为程序需要不断地维护和增加新的功能。

那如何衡量代码设计的好坏?这似乎没有一个统一的衡量标准,但有着许多权威总结或认可的设计原则以及基于经典业务场景下的设计模式可以指导我们做出正确的决定。一般我们可以学习一些经典的代码设计类书籍如《代码整洁之道》,《重构》,《设计模式》,《领域驱动设计》等。

作为初级程序员,往往只需要交付的代码与已有的程序代码设计相一致即可。

作为高级程序员或一线技术管理者,主要要考虑如何控制代码设计的一致性,避免成员的更改容易提高代码的复杂度,进而影响后续的维护和新功能的实现。对此,可以利用一些自动化的代码风格验证工具去避免一些常见的不良代码签入,如命名问题、类/函数的复杂度等;同时提供功能设计模板去规范设计审核过程,保证设计里能覆盖对常见问题的考虑,比如对外部依赖的引入要考虑的方面等。

对于大型系统或产品的架构师和高级技术管理者,由于主要的职责是管理,(从我的观察)他们还需要关注许多能提高团队协作效率,减少管理复杂度的方面,比如

  • 加速迭代和减少人力流程。比如建立完善的自动化测试,减少发布之前人为的测试流程;比如加速构建的速度,避免代码实现过程多次迭代里等待构建的时间;
  • 保持技术架构与组织架构的一致性,有助于各个团队在技术架构中划清边界,保持各自技术实现的独立性和自主性,进行更有效的协作。据我经验,微软里的许多次部门重组都是为了与最新的或希望的技术架构保持一致。
  • 建立产品目标的衡量标准,有助于建立产品目标和团队任务的分配;结合自动化的衡量机制对新功能上线测试做评估,简化了功能正式发布的审核过程,而且详细的衡量结果也有助于进行下一次有效的迭代。在这个方面,微软的Bing做的就很好;个人觉得这是Bing为什么能高速发展的重要武器。除此之外,产品是否有简单明确的衡量标准,也很好地反应了领导层是否真的明确产品的走向。
  • ……

最后,我希望这篇“点到即止”的文章能对你有所启发,不仅是在程序员的工作中,同时在生活的其他方面,比如它能够促使你完成生活里的一直想完成却迟迟没开始的事情,比如锻炼身体,旅行,或培养感兴趣的爱好——Just Do it then Be Better!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350