1.2 程序员独特的职业气质

程序员有一些独特的职业气质,比如对技术充满热忱、不断追求卓越、习惯用代码说话、有不错的读写文档的能力,以及对事情有着求真务实的态度。本节将展开介绍程序员的这些独特的职业气质。

我们从事的职业会塑造我们的大脑、改变我们的思考方式、指导我们的行为。

如果你希望在某个职业长久发展,那么首先可以考虑自身个性是否和职业特质契合。如果契合,那么你将会对这份工作产生更大的兴趣,会全身心地投入进去。

1.2.1 对技术充满热忱

大多数程序员都保持着对技术的热忱。程序员以技术起家,技术就是他们的看家本领、立身之道。他们往往相信技术、热爱技术、乐于探究技术。

(1)对技术充满好奇和兴趣

热爱能使人保持专注、不断引发人的好奇心和兴趣,而好奇和兴趣是非常好的老师。

有一道前端面试题:“从输入URL到页面展示,该过程中到底发生了什么?”

当你尝试解答这个问题时,先要将这个问题拆解,形成多个小问题,然后逐个深入研究,各个击破,最后才能找到答案。如果你只是想找到一个官方解答,然后死记硬背,那么这并不会真正地帮助到你。寻求答案、追问才是锻炼思维能力的关键。只有对技术充满好奇和兴趣,才能让你接触到更多、更深的知识点。

(2)锻炼技术思维能力

通过学习优秀的架构设计、阅读底层源码,以及深入研究实战调试技巧、如何在业务场景下落地性能优化技术等,程序员锻炼自身的计算机思维能力、工程化思维能力、解决问题的能力。

从兴趣启发开始,在解决问题的过程中锻炼技术思维能力,这能切实地帮助程序员在软件行业中成长。

(3)对技术充满热情

拥有对计算机编程技术的热情,比单纯提高编程水平有更深远的影响。

当你在IT行业工作了多年之后,热情会让你在早上起床之后期待今天的工作。没有了热情,程序员就会失去工作的动力。

看到这里,可能有的读者会担心,自己想入行程序员或已经做程序员一段时间了,但又确实对技术没太大兴趣,这该怎么办?猿山羊爷爷给出了它的答案。

所以,要保持一颗尊重技术、向往技术的心,持续去追问,慢慢就会找到答案。

1.2.2 追求卓越

追求卓越是程序员的另一特质,因为程序员的工作是不断推进技术发展和提高效率的。程序员喜欢挑战难题,并不断寻找更好的方法来解决问题。他们也喜欢学习新技术,不断提高自己的技能,以便能够在竞争激烈的科技行业中保持领先。程序员还要求自己的代码能够达到较高的标准,不断完善和改进,以保证其可靠性和可维护性。

(1)卓越并非完美

很多人以为“追求卓越”就是信奉完美主义,然而并非如此。一名合格的程序员一定能在完美主义和实用主义之间找到平衡。

成熟的程序员往往能快速、熟练地给出不是那么完美的解决方案,同时留下后续迭代、改进的方法。如果你停留在对细节的极致追求上,很容易就会陷入完美主义的陷阱中。

追求卓越是不断修正的过程。一些未入门的程序员会对调试代码感到厌恶和恐惧,他们担心被提出问题,也担心自己无法解决问题,而一名合格的程序员会用修改代码bug的能力来证明自己,为定位到bug并成功修复它而感到高兴,这个过程是有趣的,这种成就感也是无法比拟的。

(2)保持怀疑

追求卓越还包括保持怀疑的态度。在一个问题出现的时候,程序员会问它的前提是什么、条件是什么、背景是什么、目的是什么等问题。保持怀疑的态度,内心存有疑问,不断追问,再获取答案,不断精确定位问题,就是不断追求卓越的过程。这个过程很辛苦,因为在不断动脑筋。不要过于相信看似可行的解决方案,因为合格的程序员都会在对代码做充分的测试后,才会相信它。

(3)精益求精

只有不断追求卓越的人,才可以走向卓越。应该说,大部分程序员都是有所追求的,他们或追求更高的工资,或追求更高的职位,或追求更尖端的技术。有追求是一个很好的开始,但首先还是要将工作中分内的事情做好,在允许的范围内精益求精。

比如,在开发过程中,追求卓越的一个基本要求是,不容忍代码中的bug。有些刚入门的程序员把代码编译通过了,但没有完整运行页面功能,就以为完成工作了,然后把软件交给测试人员去测试,这是不负责任的体现。随着资历的提升,经历会告诉他:程序员不应过分依赖测试人员,即使没有专职测试人员,也应该能开发出高质量的软件。

过于追求卓越,合格的程序员会经常思考如何使代码更高效、易懂、易维护。

1.2.3 用代码说话

在程序员界有一句非常著名的话:“Talk is cheap,show me the code”,翻译过来就是:“说的话很廉价,不如给我看看你的代码”。这句话出自著名程序员Linus Torvalds,他就是Linux操作系统的创造者。Linus Torvalds经常强调实际行动的重要性,空谈没有任何价值,真正重要的是实际的行动,也就是编写代码。

(1)代码会说话

之前有一则新闻:“某公司被指抄袭开源项目源码”,一众网友纷纷批评、指责该公司的这一行为。然而,作为程序员,只要认真看看代码,就能知道代码中除了一两个变量名相同以外,其他设计并不相同。程序员习惯阅读代码,因为可以通过代码来沟通,从代码中了解信息,而不是人云亦云,这样更有技术范儿。

(2)码如其人

对于程序员来说,一段代码的风格和好坏就能勾勒出这个程序员的整体形象,即“码如其人”。相比PPT、文档,“用代码说话”的方式往往是程序员之间无压力沟通的有效途径。

(3)代码世界

一部分程序员是内敛的,他们在自己的代码世界里自得其乐。他们会精心设计自己的代码,比如变量名、设计模式、封装方法等,甚至会在注释上下功夫,使这些代码看起来更加易读、优雅。这样,在团队协作的时候,成员之间能通过代码更好地沟通,无须再通过聊天补充信息,从代码中就能知道前因后果,然后一起营造一个有秩序的代码世界。

1.2.4 读写文档

通常,在互联网团队中,很多人都会认为产品人员写文案的能力更强,而程序员的文案能力较弱。而实际上,会写文档是程序员不可或缺的核心竞争力之一。

(1)文档能力

程序员应该有良好的文档读写能力,这样才能在职业道路上快速前进。为什么语文在义务教育里所占比重这么大?因为语言能力是其他学科发展的基础。同理,文档读写能力就是开发过程中的语言能力。

拥有一个好的文档读写能力,有利于团队之间的顺畅沟通,不容易出现理解上的偏差。比如,程序员写出的好的开发文档,可以准确地反映代码情况,如果软件的实现逻辑、结构有问题,则可以通过文档定位到问题。

合格的程序员在写代码之前都要进行精心设计,把思路落地,更进一步,会通过流程图展示,这样,团队中的其他人能一眼捕捉到设计焦点,同事或领导能及时给出建议,把问题消灭在萌芽阶段,可大大提升开发效率。这样做也有利于评估工期,以及进行任务拆解及团队合作等。

(2)开发规范

部分程序员不太注重文档读写能力培养的原因通常有二:一是思考问题的方式趋于线性思维方式,走一步看一步,没有发散思维能力及总结概括能力;二是国内很多公司往往只注重开发速度,而忽视规范开发中的文档输出,这样做的后果是欲速则不达,往往后期需要花费更多的时间来梳理代码、重构项目。甚至有些程序员认为:写了开发文档后反而更容易被其他人替换掉,进而丢掉工作。

(3)知识体系

读写文档是一种有效的知识积累方式,时常温习这些文档,避免忘记重要知识点。只有时常做总结的人,才能有更加系统的认知体系。

通过读写文档,厘清思路,让思维更加缜密。在开源世界中,文字交流协作与代码交流一样重要。

1.2.5 求真务实

求真务实的态度可以帮助程序员更好地理解需求,并为他们提供一种逻辑性的、基于事实的方法来思考问题,从而更快、更有效地完成任务。求真务实的态度还有助于程序员在解决问题时避免错误,因为他们会更加谨慎和细心。

实际上,不止在程序员职业中,在其他任何职业发展、学习教育中,求真务实都是做事哲学的基石之一。

(1)对错误求实

务实的程序员会自主掌控自己的职业生涯,不害怕承认错误、接受错误。

在编程中发生让人头疼的问题是必然的,即使最好的项目也无法避免。尽管有详尽的开发文档、专业的测试流程、完备的自动化构建,还是难以保证不会出一点问题。预料之外的技术问题总会出现,一旦发生这样的事,首先,要诚实面对,承认错误,再去定位错误、解决错误。不把问题归咎于别人或其他事情,也不要寻找借口。也就是说,要对自己做的事情负责。

(2)知行合一

王阳明说,“知行合一”。知是指内心的觉知,对事物的认识,行是指人的实际行为。认识事物的道理与实行其事是密不可分的。

务实的程序员在面临问题时,总能在解决方案中透露出自己的态度、风格及理念。他们总是越过问题的表面,试着将问题放在更宽泛的上下文中综合考虑,从宏观结构和细微本质处着想,找到问题背后的原因。