转自公众号:技匠
编程的意义是什么,我又为什么要编程呢?这是一个不时会浮现在我脑海中的问题,它来得并不频繁,但每次却都伴随着对自己职业生涯或人生目标的质疑而产生,令我感到些许困惑和不安。而在这十几年的职业生涯中,我也似乎总能在每个阶段为自己找到一个继续热爱编程的理由,直到它已无法解答再一次疑惑的产生。就这样一次又一次的循环往复,我似乎渐渐理解了编程的意义……
回想大学毕业刚成为一名程序员时,自己对技术是如此狂热,我不断地购买各类技术书籍,几乎所有的业余时间也都被用来钻研技术,提高自己的编程能力。我也因此很快成了同一批入职新人中,编码效率和质量最突出的一个。而在那段时间里所做的技术积累,也成了我日后工作的坚实基础,编程作为一项技能已经深深地嵌入到了我的身体里。
即使到了今天,我仍非常怀念那段心无旁骛,一心钻研技术的日子。我为能在工作中写出的每一行优秀代码而兴奋,更为每一天能在技术上取得的点滴进步而喜悦,一切都是那么单纯,编程的意义对于那时的我来说就在于技术本身。
“能力越大,责任也也大”,这句电影“蜘蛛侠”中的经典台词同样适用于程序员的职业生涯。随着技术能力的提升以及工作中获得的认可,我的职位也由原来的初级程序员变为了资深开发工程师,以及后来的架构师。相应的,除了编程之外,我工作中的很大一部分时间需要用来与用户进行沟通,并分析他们提出的需求。对于我来说这个角色转换的过程,是艰难甚至有些痛苦的。 我不得不用自己最薄弱的沟通技能去和用户打交道,更要命的是我所习惯使用的那些技术语言有时很难让他们理解。
我很快意识到自己已不再是那个只需被动接受任务安排,并将自己的编程工作完成好就万事大吉的初级程序员。除了技术之外,我更需要能够突破程序员思维,去发现用户需求背后所隐含的真正问题。我比以前变得更加务实,不再刻意追求技术的高深,而是尽可能从问题本身出发,选择最有效的技术手段去解决它。
此时,编程的意义也发生了改变,它已不再局限于技术本身,而成了解决问题的理想工具。
就这样又过了几年,当“为什么要编程?”这个问题再次摆在我的面前时,自己也已过了而立之年。对于大多数中国程序员来说,这个年纪已经算是高龄,甚至还有很多人会认为30岁还在编程,一定是混得不够好吧。当然,对于这些质疑我也总是一笑了之。其实,在此之前我也有过很多转型的机会,比如去业务部门,或是转作管理等等,但最终我还是选择留在了技术岗位上,因为我觉得编程仍是我最喜欢的,或许也是我唯一擅长的吧。
而这个时期也成了我整个程序员生涯的黄金期,我写了公司的核心框架以及一些重要业务系统的核心算法。我很享受这段时光,因为我已几乎感受不到那些技术上的牵绊,我更像雕刻师使用手中的刻刀一般,自如地运用编程来实现那些我认为优秀的东西。
编程对于我来说已不再是一项技能或是工具,我是在通过编程进行着自我表达与创作,这种感受带给了我极大的自由度,而我也从中感受到了前所未有的喜悦与乐趣。
最终我还是走上了管理岗位,这里面有很多个人无法左右的因素(包括大环境、家庭、经济等等)。但我仍然更乐意被大家称为程序员或者“老”程序员。就像在简书的自我介绍中,我总是把全栈工程师放在那些“头衔”的第一位,我也还在利用业余时间做自己喜欢的开源或个人项目。当我再一次问自己“为什么要编程”时,获得了与以往不一样的感悟:或许我们编程是为了能够留下一些痕迹吧。
公司里最近都在为一个老系统的升级问题发愁,这个系统已经运行了将近20年时间了,为了升级系统,大家不得不深入到这个系统的框架中,去读底层代码。我们读到了一位已经退休的美国同事Bill所实现的数据库连接池代码。在那个时候JAVA刚开始流行,还没有像Spring这样的框架,或是如Hibernate或MyBatis这样标准的持久层实现,这个系统中所有的数据库连接池及核心持久层代码都是由我的这位美国同事写的,这些代码让整个系统稳定运行了将近20年,大家都不禁为他高超的技术水平发出由衷的赞叹。
我还认识一位从事证券交易软件研发的公司CTO,看年纪应该已经接近50了,但他仍然在亲自写着那些证券交易的核心代码。当我问他到了这个年龄和职位,为什么还要坚持写代码时,他告诉我,当他看到自己所写的代码每天在支撑着千亿级的证券交易时,他感到非常兴奋和自豪,并不断地希望能够通过自己的努力将它做得更好。
我的这个美国同事不会听到大家为他十几年前所代码发出的赞叹,股民们也不会知道这位CTO所写的代码正在支撑着他们的日常交易。那些优秀的代码是他们留下的痕迹,我们不能确定这些痕迹能够保留多久,或许几年,或许更短,但它们都曾经在我们的日常生活中产生了重要的价值,而新的未来也将构建在这些痕迹的基础之上,我想这可能才是编程的意义所在吧。
我似乎理解了编程的意义,但我明白未来的某一天,我一定还会问自己同样的问题——为什么要编程,希望到那个时候自己还能是那个热爱编程,有着一颗匠心的“技匠”吧……