编码之道|编码之道(终)(做专业的程序员)

我想选一个词来形容我们要如何对待编程这件事,或是我们要成为一个什么样的程序员。
当然,可选的词汇其实挺多的,比如技术能力强,思维敏捷,对技术有热情,学习能力强等,这些都算得上很好的词汇。
但我认为,如果需要用一个词来做为我们的职业上想要达到的境界,我更喜欢专业这个词。
它几乎能包含一切其它词语。
本周,编码之道的最终章,做专业的程序员。本系列的其它文章为:

  1. 编码之道(一):程序员的"圣经"
  2. 编码之道(二):软件的价值
  3. 编码之道(三):编码的困境,失衡的价值
  4. 编码之道(四):编码有术,术中有道
  5. 编码之道(五):变化的术,及永恒的道
  6. 编码之道(六):程序员的修练之道
  7. 编码之道(终):做专业的程序员
编码的初心 你还记得你为什么会选择编程这个事?
也许你是因为这个行业的待遇还算不错,也许是因为对技术比较喜好,也许是对自己一行一行代码能编写出有价值的软件这种成就感更着迷,不论目的如何,终有一个问题,是你需要询问自己:
我要做一个怎么样的程序员
这个问题我给自己的答案是:
待人以诚,处事以专
这是我给自己职业上的座右铭。它大致的意思是:
对待同事,客户或领导等任何人,用最真诚的态度与他们相处,无论我个人是否喜好他们。而对待工作上的事情,则力求做到专业性,用一种专业的态度对对待工作中的事情。
所以,这就是为什么我在编程的过程,我会写单元测试,努力做到以TDD的方式去编码,对待后端的开发,我通常会自己使用JMeter做性能测试,因为我想知道我写的东西性能上是否足够满足需求,而我几乎毫不落下的认真去编写每一个文档。而在需要我设计一个原型时,我会购买墨刀的服务去做这个事,因为我觉得这是最基本的专业性的要求,虽然我并不是一个产品经理也不需要做到这个程度。
我在做这些事的过程中,没有任何人要求过我这样,它们大多是自我要求的产物。因为我希望自己是一个专业的程序员。
你做为一个程序员的自我要求呢,有没有思考过这个问题?
那以我不多的经历来看,做为一个专业的程序员,要怎么才能做到?
我总结了一些原则,我试着解释下它们,我希望这些原则能引发你的思考。
专业的程序员的几大原则
原则一:编程的最高使命是:维护软件的业务价值与技术价值
我觉得这是最重要的原则,编程这个事的目的是什么,就是为了维护软件的业务价值与技术价值。做为程序员,这个原则要时刻牢记在心,我们所有的努力都是为了这个目标。
而关于业务价值与技术价值,我在编码之道的前面的文章中已详细阐述过我的思考了。
原则二:好才是快,效率至上
是的,我知道我们行业的一些情况并不能尽如人意,一些门外汉总是希望通过无止境的延长工作时间来达到他们设定的一些目标。他们的价值观是:通过延长每日工作时间来做到更快。
这也我们的行业存在大量的垃圾代码的原因所在。
但我始终告诉自己的一个信念是:想要做的快,唯一的方式是把它做好。
在我的经历中,遇见很多次类似的经历,那种一开始通过过度加班来达到短期目标,而在后期却发现需要付出越来越多的时间来保持可维护性的例子挺多的。
我确实深刻的理解到了一个事实就是:
没有好,想要快就如同镜中花,水中月
做正确的事
Google最开始的口号是"不做恶",后面在某一年开始,他们把它改成了"做正确的事"。
做正确的事当然比不做恶的要求更高。
那对于我们编程来说,什么叫做正确的事?这是需要你去思考的。
在Robert C.Martin的《程序员的职业素养》这本书中,有两个章节我觉得非常契合这个理念,其中一个是说不,另外一个是承诺。
也就是:
该说不的时候要说不,该做承诺的时候要承诺并做到
要事优先
这其实是时间管理中的一个理念,我们的所有事,可以按照紧急程度与重要程序进行切分,这样就会有重要且紧急的事,重要但不紧急的事,不重要但非常紧急的事,不重要且不紧急的事四个象限。
你要学着对自己的任务进行分类,并且你会随时随地面临一个选择:
究竟是紧急的事做先处理,还是重要的事优先处理?
要事做先,这是标准答案。
但我遇到情况是:讲要事优先的人多,真正这样做的人却不多。
举个例,知道要事优先的人,无论在什么样的处境下,都能尽最大努力做到编写单元测试,因为这是极其重要的事。虽然可能有更紧急的进度功能开发情况,但要事优先,不是吗?
保持对技术的热情与学习
如我在编码之道中反复说的一个点就是:术是不断变换的,而道则稳定得多。
我们不停的在用不同的术在编写我们的代码,年复一年,它们永远在变化,在更新。虽然我认为学习道是更重要的,但学习道的根本方式就是通过不断的去使用不同的术来达到的。
所以,不要把自己停在某一个点上,也就是自我限制自己只能使用某些语言或框架,如果有机会,就去尝试使用不同的。
这就需要一个前提,你需要保持对技术的热情与学习。
而一个程序员,如果失去了对技术的热情,编程这件事就注定不可能做好了。
言必行,诺必达
《程序员的职业素养》中有个章节就是在讲程序员如何说是,也就是怎么去做承诺。
我觉得我们的文化有更优雅的词来形容它,就是言必行,诺必达
程序员需要谨慎的做出承诺,而一旦做出承诺,就要努力做到。
而技术人员与非技术人员之间总是有一道隔阂的一个重要原因也在于,非技术人员不理解技术,而理解技术的我们很多时候做出来的承诺没有完成。约定时间需要完成的功能没有按时完成,期望的质量无法达到。于是很多非技术人员在管理上就选择延长每日工作时间来预防以及解决这些。
所以,如果你期望别人不会以一种门外汉的姿态来干涉你,我认为你得做到这一点,就是你得很专业,不仅如此,要让那些不懂技术的也知道你很专业,而且你能说到做到。
【编码之道|编码之道(终)(做专业的程序员)】这样,相信外行领导内行的情况就会慢慢变少了。
当然,技术上的东西有些困难或情况我们是压根没有办法预料到的,这是正常的情况,你只需要及时更新情况,并据此做出新的承诺就好了。
十年之约 这便是我在从事了十多年的编码之后,在几乎完整的参与了后端,移动端,桌面端,前端各个方向的开发后,形成的一些对技术的感悟与理解。
所以,我把它们用文章的形式记录下来。
我希望自己十年后,二十年后,能够对编码有不同的感悟与理解,到那个时候,我会再次重写编码之道这个系列。
这也是微言码道的来源与初衷。
所以微言码道的口号是:
用我们微小的力量传播编码之道
它并不是居高临下式的传播与指教。而是在理解到了技术如同大海一样深不可测,广不可视之后的自我努力与尝试。并且希望能有更多程序员一起去不断的探索编程这个事,把编程这件事做的更好。
所以,编码之道这个系列,我与自己许下一个约定:
十年后再见

    推荐阅读