pengwentao

别让你的懒惰和懈怠偷走了你的青春!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

你可以把编程当做一项托付终身的职业

Posted on 2017-03-19 22:06  pengwentao  阅读(144)  评论(0编辑  收藏  举报

  编程的意义是什么,我又为什么要编程呢?这是一个不时会浮现在我脑海中的问题,它来得并不频繁,但每次却都伴随着对自己职业生涯或人生目标的质疑而产生,令我感到些许困惑和不安。而在这十几年的职业生涯中,我也似乎总能在每个阶段为自己找到一个继续热爱编程的理由,直到它已无法解答再一次疑惑的产生。就这样 一次又一次的循环往复,我似乎渐渐理解了编程的意义……

编程是一项技能

  回想大学毕业刚成为一名程序员时,自己对技术是如此狂热,我不断地购买各类技术书籍,几乎所有的业余时间也都被用来钻研技术,提高自己的编程能力。我也因此很快成了同一批入职新人中,编码效率和质量最突出的一个。而在那段时间里所做的技术积累,也成了我日后工作的坚实基础,编程作为一项技能已经深深地嵌入到了我的身体里。

  即使到了今天,我仍非常怀念那段心无旁骛,一心钻研技术的日子。我为能在工作中写出的每一行优秀代码而兴奋,更为每一天能在技术上取得的点滴进步而喜悦,一切都是那么单纯,编程的意义对于那时的我来说就在于技术本身。

编程是去解决问题

     “能力越大,责任也也大”,这句电影“蜘蛛侠”中的经典台词同样适用于程序员的职业生涯。随着技术能力的提升以及工作中获得的认可,我的职位也由原来的初级程序员变为了资深开发工程师,以及后来的架构师。相应的,除了编程之外,我工作中的很大一部分时间需要用来与用户进行沟通,并分析他们提出的需求。对于我来说这个角色转换的过程,是艰难甚至有些痛苦的。 我不得不用自己最薄弱的沟通技能去和用户打交道,更要命的是我所习惯使用的那些技术语言有时很难让他们理解。

  我很快意识到自己已不再是那个只需被动接受任务安排,并将自己的编程工作完成好就万事大吉的初级程序员。除了技术之外,我更需要能够突破程序员思维,去发现用户需求背后所隐含的真正问题。我比以前变得更加务实,不再刻意追求技术的高深,而是尽可能从问题本身出发,选择最有效的技术手段去解决它。

  此时,编程的意义也发生了改变,它已不再局限于技术本身,而成了解决问题的理想工具。

编程是在表达,也是在创作

  就这样又过了几年,当“为什么要编程?”这个问题再次摆在我的面前时,自己也已过了而立之年。对于大多数中国程序员来说,这个年纪已经算是高龄,甚至还有很多人会认为30岁还在编程,一定是混得不够好吧。当然,对于这些质疑我也总是一笑了之。其实,在此之前我也有过很多转型的机会,比如去业务部门,或是转作管理等等,但最终我还是选择留在了技术岗位上,因为我觉得编程仍是我最喜欢的,或许也是我唯一擅长的吧。

  而这个时期也成了我整个程序员生涯的黄金期,我写了公司的核心框架以及一些重要业务系统的核心算法。我很享受这段时光,因为我已几乎感受不到那些技术上的牵绊,我更像雕刻师使用手中的刻刀一般,自如地运用编程来实现那些我认为优秀的东西。

  编程对于我来说已不再是一项技能或是工具,我是在通过编程进行着自我表达与创作,这种感受带给了我极大的自由度,而我也从中感受到了前所未有的喜悦与乐趣。

编程是为了留下痕迹

  最终我还是走上了管理岗位,这里面有很多个人无法左右的因素(包括大环境、家庭、经济等等)。但我仍然更乐意被大家称为程序员或者“老”程序员。就像在自我介绍中,我总是把全栈工程师放在那些“头衔”的第一位,我也还在利用业余时间做自己喜欢的开源或个人项目。当我再一次问自己“为什么要编程”时,获得了与以往不一样的感悟:或许我们编程是为了能够留下一些痕迹吧。

  公司里最近都在为一个老系统的升级问题发愁,这个系统已经运行了将近20 年时间了,为了升级系统,大家不得不深入到这个系统的框架中,去读底层代码。我们读到了一位已经退休的美国同事Bill所实现的数据库连接池代码。在那个 时候JAVA刚开始流行,还没有像Spring这样的框架,或是如Hibernate或MyBatis这样标准的持久层实现,这个系统中所有的数据库连接 池及核心持久层代码都是由我的这位美国同事写的,这些代码让整个系统稳定运行了将近20年,大家都不禁为他高超的技术水平发出由衷的赞叹。

  我还认识一位从事证券交易软件研发的公司CTO,看年纪应该已经接近50了,但他仍然在亲自写着那些证券交易的核心代码。当我问他到了这个年龄和职位,为什么还要坚持写代码时,他告诉我,当他看到自己所写的代码每天在支撑着千亿级的证券交易时,他感到非常兴奋和自豪,并不断地希望能够通过自己的努力将它做得更好。

  我的这个美国同事不会听到大家为他十几年前所代码发出的赞叹,股民们也不会知道这位CTO所写的代码正在支撑着他们的日常交易。那些 优秀的代码是他们留下的痕迹,我们不能确定这些痕迹能够保留多久,或许几年,或许更短,但它们都曾经在我们的日常生活中产生了重要的价值,而新的未来也将构建在这些痕迹的基础之上,我想这可能才是编程的意义所在吧。

  我似乎理解了编程的意义,但我明白未来的某一天,我一定还会问自己同样的问题——为什么要编程,希望到那个时候自己还能是那个热爱编程,有着一颗匠心的“技匠”吧……