程序员职业发展的思考
英文原文:Maturing as a programmer – How to supercharge your career
从 11 岁开始一个已经十分明确的事情就是,我要成为一名程序员。那一年我有了一台 Commodore 64 机器,开始在上面编写 BASIC 程序。我十分喜爱编程,以至于不久之后用于编程的时间就超过了玩游戏的时间。编程中有一种美妙和纯粹的东西是现实生活中任何事情都不能替代的。即使要面对 bug,时间限制和失败沮丧,编程仍然是美妙的。
我考入工程学院取得了计算机学位,之后几年又在本地的卑尔根大学里对计算机课程进行了深入的理解。于是我开始讨厌做一名学生,去找了一份工作。
在我的职业道路上,大部分时间我都是作为一名程序员。头两年在一个 web 设计公司里是一个纯技术员,做包括在服务端开发他们的发布系统(用 Perl 语言)和客户支持等所有事情。
之后我就和几个朋友一起注册了一个公司,开发一个大型多人在线游戏。我们花了 9 年时间开发了 Darkfall,在汗水中学到了从无到有开发出一个大型游戏意味着什么。那是玩命的苦干,但我学到了很多。
4 年前我开始以顾问的身份加入本地一家相当大的顾问公司,就在去年,我找到机会,和一些好朋友和同事开办了一个新的 IT 顾问公司(Sonat Consulting AS)
那现在的情况?我将要进入我的下一个 40 年。我在思考目前为止完成了什么,以及从现在开始今后的发展方向。
大多数的程序员在 30 岁时达到事业的顶峰。这个时候你仍然有动力去学习,积攒了足够的经验能让你对工作上的事情提出直觉上的方案,这是你余下的职业生涯里的安全保障——如果你继续从事这个领域。
有些程序员能继续编程到 40 多岁,他们要么是仍有对编程持有热情,要么是有足够自由支配时间来做这些。
但从某种程度上看,基本上所有的程序员都会经历顶峰,然后失去动力,开始寻找其它的出路。程序员有哪些可以进一步发展的方向?传统的思维是程序员可以转向项目经理或架构师。我相信还有第三条路能让你获得最佳的职业发展。
这第三条路就是培养 BPI(Business process improvement,流程改进)技能。
作为程序员,你去实现新系统,升级现有系统。这其中的一些工作就需要和业务专家,产品客户和潜在客户打交道。随着经验的增加,你会发现自己发生了变化,你能更轻松的找到更好的解决方案。你会发现了解业务大背景对问题的解决有很大的帮助。
我的建议是眼界放开阔,退后一步看事情全貌。你需要认识到你现在研究的系统只是业务流程中的一部分,一种支持系统。使用 Lean 或 Six Sigma 等 BPI 方法,你可以去分析业务流程,看看是否有方法优化它们,然后开发出能更好跟业务集成的系统。
很多的企业有愿意聘请一个 BPI 专家来对优化和改进他们的生产和整个公司的流程提出建议,然后找一些程序员来开发或提升他们的系统来支持优化后的流程,但很少这两种能合二为一的。
程序员增加 BPI 技能并不是一个新的或极端的思想,但这通常不是作为一个职业发展方向的选项。只是你有了这些技能,你的老板或客户会更高兴而已。而我的经验是,我们应该认识到这是一个可以让你赖以生存的职业方向,是各种公司和组织都在寻找的本领。
会编程、懂业务的 IT 顾问对任何一个公司来说都是炙手可热的,能得到更高的收入待遇。仅是养成了能从不同的角度来看一个系统的习惯,这一足以让你成为一个更好的程序员,更不用说是否直接或间接的运用了 BPI 技术。
拥有了 Lean, Kanban, Six Sigma 等方法技巧,加之整体看问题的视角和坚持不懈的改进系统和流程的努力,你就能获得信任和尊重。如果做的正确,你的意见在项目计划会上就会获得高度的关注, 你就能在公司的发展变化上获得更大的积极方向的影响力,而不是一个纯的技术人员。
同样,这样的技术力量一般不会被公司外包的,因为这种人才一般是用来监管外包项目。
你也许会想:“为什么我要学习这些业务过程方面的技能,我只想遍代码!”这没问题。当我掌握了更多的 BPI 知识时,你编程生涯达到顶峰,然后开始过时落伍,被外包。;-)