我从11岁开始,就矢志成为一名程序员。也是在那个年纪我拥有了我第一个好伙伴Commodore 64,开始我的BASIC编程之旅。我深深地爱上了编程,所以在那之后我很少去打电子游戏,就窝在家里写代码。那真是一段甜蜜又纯真的回忆,那时候编程就是我生命中唯一的亮点:天大地大,编程最大。当然和现在的程序员一样,我那时候编程也会出现bug、时间约束,并遭受各种挫折和失败,但是我依然觉得编程甜美得像我的梦中女神。
在工程学院毕业顺利拿到CS学位之后,我去了当地的卑尔根大学深造。后来因为我不想再做一个“不事生产”的学生,就找了一份工作。
在我大部分的职业生涯中,我都是作为一个程序员存在的。开头两年是在一家web设计公司,那时我是唯一的技术人员,从运行服务器建立自己的发行系统(用Perl语言)到做客户支持,事无巨细,各种各样的活都干。
然后我和几个朋友开始做网络游戏。我们花了9年的时间制作出了 Darkfall(黑暗降临),这真心是一个呕心沥血的历程,所有一切都要从头学起,从开工到发布游戏,酸甜苦辣,付出的心血和汗水,难以尽数,但是我学到了很多,受益匪浅。
大概又在4年前,我开始在当地一家相当大的咨询公司担任顾问。去年我抓住机会与几个志同道合的朋友和同事创建了一家IT咨询公司(Sonat Consulting AS)。
想知道我现在的想法吗?明年我就四十而不惑了。我开始回顾我以往的历程,我做了什么,以后的方向又该往哪里去。
大多数程序员将会在他们30几岁的时候达到事业的高峰。如果这个时候还能继续保持学习的动力,那么丰富的经验中会让你对解决方案和替代方法滋生一种直觉,如果好好培养这种直觉,那将会让你接下来的职业生涯更上一层楼。
有的程序员甚至在40几岁依然保持着动力,他们要么仍对编程有着高昂的激情,要么拥有充足的自由分配时间。
但是在某个时刻,几乎所有的程序员在到达事业高峰之时,往往会对这一行失去兴趣,进而转向其他领域的怀抱。程序员这个职业应该如何发展?传统的观念是,程序员可以晋升去做项目经理,或者转去做架构师。但是,我觉得还有第三个选择,继续做程序员,成为一个别人无法代替的程序员。
第三个选择的关键是要在自己的装备中添加业务流程改进(BPI)的技能。
众所周知,作为一个程序员,我们需要落实新系统,以及升级现有的解决方案。这部分涉及与领域专家、产品负责人、目标用户等多方面的合作工作。随着经验的增长,我们会发现慢慢的我们更能从全局上把握和控制,从而能拿出更妙的解决方案。因为你知道如何从局部到整体、从微观到宏观看待问题。
我的建议是,要更多的使用被广泛接受的图像尺寸和缩放比例。你必须意识到你所做的系统是业务流程的一部分,是用来支持业务的。使用BPI方法,例如精益生产和六西格玛法,能让我们更好地分析业务流程、发现可改进的地方,以便于我们建立一个更受欢迎的系统。
很多公司都会专门聘请BPI专家为公司优化和改进生产工艺和/或生产量,然后再要求IT人员创建或者改进系统以支持新的流程。但是,很少有公司能够把这两者结合起来,一步到位。
程序员应该具备业务流程技能这一观点,早就不新鲜了,但是却很少有人将它划入职业规划的范畴。我希望大家能认识到这也是一种可行的职业规划,是众多企业下一步应该关注的要点。
会这一技能的IT顾问对企业而言更有价值,也是谈判薪资的资本。无论你是否能直接应用BPI技能,但凡你懂,就能从不同的角度看待系统问题,而这将让你成为一个更为优秀的开发人员。
武装了像精益生产、看板管理、六西格玛法或者其他的方法论,再加上能对正在使用的程序有个全局观,并能谦虚谨慎、坚持不懈地改进流程和系统,这样的人才,试问又有那个企业不欢迎和尊重?如果又和企业下一步的战略方向相同,那一些重要的规划会议上就会有你的一席之地,大家会高度重视你的观点,你将不再是一个纯粹的开发人员,你将会对企业产生一个巨大的积极影响!
而且,像这类项目企业一般不大可能选择外包,因为他们更希望能实时监督。
看完此文,你或者要问,“为什么我们程序员非要学习业务流程的技巧,我只想写代码!”那也没问题。只是我的职业生涯不会像你一样在到达事业顶峰之后,跟不上时代的潮流,不得不黯然销魂转入其他行业!