從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知識時,你編程生涯達到頂峰,然後開始過時落伍,被外包。;-)
[英文原文:Maturing as a programmer – How to supercharge your career ]