7

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

 3 years ago
source link: https://my.oschina.net/lingenliu/blog/5233698
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

我想选一个词来形容我们要如何对待编程这件事,或是我们要成为一个什么样的程序员。

当然,可选的词汇其实挺多的,比如技术能力强,思维敏捷,对技术有热情,学习能力强等,这些都算得上很好的词汇。

但我认为,如果需要用一个词来做为我们的职业上想要达到的境界,我更喜欢专业这个词。

它几乎能包含一切其它词语。

本周,编码之道的最终章,做专业的程序员。本系列的其它文章为:

编码的初心

你还记得你为什么会选择编程这个事?

也许你是因为这个行业的待遇还算不错,也许是因为对技术比较喜好,也许是对自己一行一行代码能编写出有价值的软件这种成就感更着迷,不论目的如何,终有一个问题,是你需要询问自己:

我要做一个怎么样的程序员

这个问题我给自己的答案是:

待人以诚,处事以专

这是我给自己职业上的座右铭。它大致的意思是:

对待同事,客户或领导等任何人,用最真诚的态度与他们相处,无论我个人是否喜好他们。而对待工作上的事情,则力求做到专业性,用一种专业的态度对对待工作中的事情。

所以,这就是为什么我在编程的过程,我会写单元测试,努力做到以TDD的方式去编码,对待后端的开发,我通常会自己使用JMeter做性能测试,因为我想知道我写的东西性能上是否足够满足需求,而我几乎毫不落下的认真去编写每一个文档。而在需要我设计一个原型时,我会购买墨刀的服务去做这个事,因为我觉得这是最基本的专业性的要求,虽然我并不是一个产品经理也不需要做到这个程度。

我在做这些事的过程中,没有任何人要求过我这样,它们大多是自我要求的产物。因为我希望自己是一个专业的程序员。

你做为一个程序员的自我要求呢,有没有思考过这个问题?

那以我不多的经历来看,做为一个专业的程序员,要怎么才能做到?

我总结了一些原则,我试着解释下它们,我希望这些原则能引发你的思考。

专业的程序员的几大原则

原则一:编程的最高使命是:维护软件的业务价值与技术价值

我觉得这是最重要的原则,编程这个事的目的是什么,就是为了维护软件的业务价值与技术价值。做为程序员,这个原则要时刻牢记在心,我们所有的努力都是为了这个目标。

而关于业务价值与技术价值,我在编码之道的前面的文章中已详细阐述过我的思考了。

原则二:好才是快,效率至上

是的,我知道我们行业的一些情况并不能尽如人意,一些门外汉总是希望通过无止境的延长工作时间来达到他们设定的一些目标。他们的价值观是:通过延长每日工作时间来做到更快。

这也我们的行业存在大量的垃圾代码的原因所在。

但我始终告诉自己的一个信念是:想要做的快,唯一的方式是把它做好。

在我的经历中,遇见很多次类似的经历,那种一开始通过过度加班来达到短期目标,而在后期却发现需要付出越来越多的时间来保持可维护性的例子挺多的。

我确实深刻的理解到了一个事实就是:

没有好,想要快就如同镜中花,水中月

做正确的事

Google最开始的口号是"不做恶",后面在某一年开始,他们把它改成了"做正确的事"。

做正确的事当然比不做恶的要求更高。

那对于我们编程来说,什么叫做正确的事?这是需要你去思考的。

在Robert C.Martin的《程序员的职业素养》这本书中,有两个章节我觉得非常契合这个理念,其中一个是说不,另外一个是承诺。

该说不的时候要说不,该做承诺的时候要承诺并做到

这其实是时间管理中的一个理念,我们的所有事,可以按照紧急程度与重要程序进行切分,这样就会有重要且紧急的事,重要但不紧急的事,不重要但非常紧急的事,不重要且不紧急的事四个象限。

你要学着对自己的任务进行分类,并且你会随时随地面临一个选择:

究竟是紧急的事做先处理,还是重要的事优先处理?

要事做先,这是标准答案。

但我遇到情况是:讲要事优先的人多,真正这样做的人却不多。

举个例,知道要事优先的人,无论在什么样的处境下,都能尽最大努力做到编写单元测试,因为这是极其重要的事。虽然可能有更紧急的进度功能开发情况,但要事优先,不是吗?

保持对技术的热情与学习

如我在编码之道中反复说的一个点就是:术是不断变换的,而道则稳定得多。

我们不停的在用不同的术在编写我们的代码,年复一年,它们永远在变化,在更新。虽然我认为学习道是更重要的,但学习道的根本方式就是通过不断的去使用不同的术来达到的。

所以,不要把自己停在某一个点上,也就是自我限制自己只能使用某些语言或框架,如果有机会,就去尝试使用不同的。

这就需要一个前提,你需要保持对技术的热情与学习。

而一个程序员,如果失去了对技术的热情,编程这件事就注定不可能做好了。

言必行,诺必达

《程序员的职业素养》中有个章节就是在讲程序员如何说是,也就是怎么去做承诺。

我觉得我们的文化有更优雅的词来形容它,就是言必行,诺必达

程序员需要谨慎的做出承诺,而一旦做出承诺,就要努力做到。

而技术人员与非技术人员之间总是有一道隔阂的一个重要原因也在于,非技术人员不理解技术,而理解技术的我们很多时候做出来的承诺没有完成。约定时间需要完成的功能没有按时完成,期望的质量无法达到。于是很多非技术人员在管理上就选择延长每日工作时间来预防以及解决这些。

所以,如果你期望别人不会以一种门外汉的姿态来干涉你,我认为你得做到这一点,就是你得很专业,不仅如此,要让那些不懂技术的也知道你很专业,而且你能说到做到。

这样,相信外行领导内行的情况就会慢慢变少了。

当然,技术上的东西有些困难或情况我们是压根没有办法预料到的,这是正常的情况,你只需要及时更新情况,并据此做出新的承诺就好了。

这便是我在自己三十五岁时,从事了十多年的编码之后,在几乎完整的参与了后端,移动端,桌面端,前端各个方向的开发后,形成的一些对技术的感悟与理解。

所以,我把它们用文章的形式记录下来。

我希望自己在四十五,五十五以及六十五时,能够对编码有不同的感悟与理解,到那个时候,我会再次重写编码之道这个系列。

这也是微言码道的来源与初衷。

所以微言码道的口号是:

用我们微小的力量传播编码之道

它并不是居高临下式的传播与指教。而是在理解到了技术如同大海一样深不可测,广不可视之后的自我努力与尝试。并且希望能有更多程序员一起去不断的探索编程这个事,把编程这件事做的更好。

所以,编码之道这个系列,我与自己许下一个约定:

十年后再见


关注【微言码道】公众号或访问【微言码道】官网 https://taoofcoding.tech : 用我们微小的力量传播编码之道

访问【myddd-全栈式领域驱动】官网: https://myddd.org


Recommend

  • 88

    程序员你为什么这么累【续】:编码习惯之工具类规范

  • 46
    • jiajunhuang.com 5 years ago
    • Cache

    程序员修炼之道 阅读笔记

    本文是程序员修炼之道的阅读笔记和自己的经历以及思考 提供各种选择,不要找蹩脚的借口 如果你犯错了,那么勇敢的承认它,并且承担后果,而不是找各式各样的借口或者撒谎.如果从一开始就判定 当前的做法...

  • 32
    • 微信 mp.weixin.qq.com 5 years ago
    • Cache

    《程序员修炼之道》解读1

  • 43

    美团这边有个很好的风格。上上下下谁出去参加什么技术会议、培训之类的都会回来主动给大家做分享。用了近两天的时间读了一本《程序员修炼之道》,自己的收获分享给大家,也算是美团精神的一个发扬。 读的时候本来打

  • 42

    The Pragmatic Programmer 这本书居然在上个月出了第二版,离第一版过去已经 20 年了。 十多年前,在我第一次看到这本书时,就相当的喜欢。后来在中文版再刷的时候,应邀写了一篇书评 。一晃又是十年过去,没想到这次因为这本...

  • 23
    • blog.codingnow.com 4 years ago
    • Cache

    程序员修炼之道第二版译者跋

    文本在阐释中烟消云散 —— 尼采《善恶的彼岸》 2019 年 12 月 20 日,我终于用笨拙的中文把《程序员修炼之道》的第二版初步译完。距编辑侠少把英文电子版发送给我已经过去了 70 天。这两个多月里,翻译工作几乎占据了我所有的业...

  • 8

    交付这个项目需要多久? 存储一百万个客户信息需要多少磁盘空间? 压缩1000MB文本需要多长时间? 在软件项目中,我们经常要对即将开始的工作进行预估。而这其中有很多技术更新、需求变更等未知因素,都会使估算结果不是很精确。那么...

  • 1

    夜深了,一辆汽车在弯弯曲曲的山间小路上来回急转,几近失控。这时,出现了一个急转弯的提示牌,可汽车却不慎错过了它,撞向护栏,冲下山谷燃起了大火。赶到现场的交警说道:一定是车速过高,冲出了前灯的照射范围。 视频地址:

  • 4

    java中文乱码解决之道(六)—–javaWeb中的编码解码 浏览:2670次  出处信息    在上篇博客中LZ介绍...

  • 5

    AIGC程序员效能提升之道 得益于IT产业近几年的繁荣,老...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK