2015年3月1日 星期日

你要 Coding 多久呢?

這句話對於終日面對電腦螢幕並且埋頭寫程式的開發者來說,應該是常常會被周遭的親朋好友甚至於是跟你不熟的人給問過吧,「你是程式設計師,這樣每天 Coding 的日子不會覺得很枯燥嗎?難道你要一直 Coding 下去嗎?」

這十多年來資訊產業蓬勃發展,但就本質而言,資訊業開發單位的職位與職務並沒有什麼巨大的差別,以致於會讓人覺得好像程式開發人員就得要每天 Coding,然後沒有任何的發展,最後就會想要轉換跑道去嘗試別的職務,甚至是乾脆轉行不再寫程式,比較極端的就是去賣雞排,當然不是說賣雞排不好,而是當你放下多年的專業然後轉換另一種工作,需要從頭熟悉與你原有專業技術相差許多的技能,這過程是相當艱辛的。

當你開始對工作厭煩然後開始經常沒來由的問自己「我還要 Coding 多久?」時,你已經陷入了自我質疑的迷思之中,開始懷疑自己的能力、質疑自己的工作、抱怨環境、抱怨同事等等等,除了這些懷疑、質疑、抱怨之外,你還可以做些什麼呢?

 


不瞞各位,我在去年還真的動過不想再寫程式的念頭,那時候被一個專案操到整個人都快崩潰掉,永無止盡的修改,永無止盡的需求變更,雖然我們都知道開發系統時只有一種變化是不變的,永遠的不變就是「變」,但是去年所經歷的那種繁複的需求變更已經到了無理取鬧的地步,就因為碰上了這樣的狀況讓我萌生換行以及不想寫程式的念頭,這是我退伍後投入程式開發工作的這十多年來的第一次。

不過這樣的念頭在我結束那個專案並且離開那個環境之後就煙消雲散了,我想曾經有過轉行而不想再寫程式的開發人員絕大部分都是因為專案以及環境的影響而產生了這樣的念頭,而那種突然有天起床後就沒來由的想到要轉行的人,那是少數中的少數,而另外一大部分的人可能就是那種更為少數的天才,這些人接觸了程式開發,然後有相當優秀的發展與產出,甚至做出貢獻,然後突然想轉職去做別的事情,這些天才就真的是想轉換不同的工作與環境,而一般人大多數就是前面所說的,因為專案、因為環境、因為人而想要離開程式開發的工作。

這篇不是那種探討為何人們會不想繼續寫程式的分析文章,這篇只是針對這樣的一個問題來說明我的看法,因為我在以前就被經常這樣問到,而漸漸到了現在,認識我的人就不會問我這樣的問題,反而是不認識我或是對我不熟悉的人會問我這樣的問題,或是在我面前講起他們的想法。

 

大約在 2008 年左右,當時我決定要離開一家股票上市的科技公司,在外人眼中這是一份相當不錯又很穩定的工作,是沒有理由離開的,但是我身處其中卻是看到一堆的問題,沒錯,那一份工作是相當穩定,薪水雖然不比外面相同工作要來得高,但大公司所提供的資源與福利是一般小公司所無法比擬。

當時我還是決定要離職,不是因為工作太操或是人事、薪資等等的因素,而是我看到那邊的資深同事之後,我突然有了警覺,我不想在那樣的環境然後安穩的養老到退休,安逸的環境會讓人逐漸腐壞,會讓人不再繼續大步往前而永遠停滯,而且對於程式開發人員,我在那邊看不到我未來的職涯發展。

那時我大學同學(同樣是資管系的同學雖然還沒畢業就已經立定志向不往資訊業發展而是往保險業務發展),當時他就直接的問我「你還要 Coding 多久呢?」「難道你就要一直到四五十歲還在繼續 Coding 嗎?」

image

這是很多人在程式開發人員身上所給予的既定印象,好像剛入行的菜鳥才會一直寫程式,而到了四五十歲還再寫程式就好像是相當不堪或是不長進一樣,搞得一些資淺的開發人員經過前幾年的 Coding 生活之後就立定志向要往別的職務去做發展,常看到很多開發人員就會說他想要去做 SD, SA 或是 PM,好像這些職務就是程式開發人員所謂的「往上」發展之路。

PG, SD, SA, PM,這樣的職涯發展看起來好像煞有其事也相當合理,但是一個寫了兩三年甚至四五年的程式開發人員就適合去當 SD, SA 嗎?

如果你對於程式開發的基本功都沒有做好,甚至於將程式開發只當作應付工作需求,在這樣的況狀下寫了三五年都還是同樣的實作、同樣的模式,沒有與時俱進的跟上技術的更新,請問你要如何做好 SD 的工作呢?

如果你平時的工作裡都還需要別人一直跟你分析系統應該如何實作、如何做規劃與架構,沒有辦法從無到有讓自己獨當一面地從分析、開發、建置、部署、維護等工作給做好並完成,請問你何以勝任 SA 的工作呢?

如果你無法做到協調、溝通、管理、時程掌握的工作,你要怎麼去擔任 PM 的角色呢?

程式開發人員的職涯發展並不是只有往 SD, SA, PM 的路前進,還有很多的選擇,但是台灣很多企業與公司都只是將程式開發人員當作是隨時可以抽換的工具,而不是視為資產,而導致於程式開發人員的職涯發展過於狹隘,企業的 Domain Know-How 養成並不容易,而熟悉這些的人就是企業內部重要的資產,企業應該協助這些熟悉 domain know-how 的人去學習新的技術,讓企業可以在每一次的資訊浪潮永遠站在前頭,而不是任由這些資深人員一直握著這些 domain know-how 然後一直使用舊技術去做應用,要讓開發人員瞭解到企業是支持新技術的學習與應用,企業是會幫助開發人員做好職涯發展的。

image

各位可以想想,你平時所使用的 Microsoft Office, Chrome Browser, Visual Studio, Microsoft SQL Sever, Management Studio 還有各種的作業系統,這些軟體與作業系統都是由無數的程式開發人員所開發的,然而開發這些系統、軟體的程式開發人員都是菜鳥嗎?都是只有一到三年經歷的一般工程師所開發的嗎?可想而知答案當然不是呀。

你當然可以一直擔任程式開發人員,當然可以一直 Coding 下去,只是你所開發的內容將會越來越艱深也會越來越核心,從一般的程式開發人員去轉換成幫助其他程式開發人員的角色,看待系統的開發不再只是看一個功能而做一個功能,而是能從上而下作通盤的分析與考量,決定使用什麼技術與決定用什麼樣的方案來解決問題,在心境上做轉換,看事物的角度與方式也做調整,你會發現到你的改變。

image

如果你對於這份擔任了三到五年甚至十年以上的程式開發工作感到厭煩了,覺得無趣了,那就要試著去找出是什麼讓你感到厭煩、無趣,是專案、是環境、還是人(老闆、主管、PM 或同事?都有可能),如果這些都不是而只是純粹對於程式開發這份工作感到厭倦,那麼你就要想想你是否都是使用同樣的開發方式來完成你的工作。

你是否對你所開發的程式進行檢討?

你是否常常檢視你所開發的程式?

你是否常常去想要怎麼讓你的程式可以做得更好?

你是否想過如何讓你的開發工作可以更有效率?

你是否想過如何更聰明的工作?

你是否嘗試使用新的技術或新的觀念導入到你所開發的系統?

你是否大量的閱讀,不論是網路上的文章或是書籍呢?

你是否在下班之餘還肯花點時間去做練習或學習呢?

你是否肯投入額外的花費去購買工具來提昇自己的工作呢?

你是否瞭解你所寫的程式?

你是否瞭解與你共同開發系統的人所寫的程式呢?

你是否會與你的同事不時地討論開發上所遇到的問題或分享彼此的經驗呢?

image

 

如果你已經從事程式開發工作相當長的一段時間了,已經對於工作感到厭煩一段時間,也思考要轉行或轉換職位,那麼上面的問題是否曾經思考過呢?如果不曾思考過這些問題的話,靜下心來,好好的問問自己。

如果思考過後,你無法找出問題的原因,也找不到問題的解決方式,最後你還是會對著自己說「我還要 Coding 多久呢?」,或許你就可以趕快尋找下一階段你要挑戰的興趣與工作。

也許我來說這些並不是很恰當,因為我也還是在工作上繼續掙扎中,只不過我算是比較堅定我的想法,那就是「Coding Forever!」,雖然是有些誇張,我也知道不太可能一直能讓我 Coding 下去,但總是要有一些理想與堅持。

最後我推薦在 2014 年微軟 MVP Open Day (MVP 微軟技術關卡破解日)由董大偉老師所分享的演講「如果,不愛了呢-談程式設計師的生涯規劃」以及 2015 年MVP 微軟實戰課程日由曹祖聖老師所分享的演講「微軟技術無所不通-教你成為 IT 界的德魯伊」,前者是有關程式設計師的生涯規劃,尤其是當你面臨是否轉職的抉擇時,看看董大偉老師的內容,可以幫你找出方向,後者則是曹祖聖老師對於不斷推陳出新的 IT 技術應該如何面對與學習。

 

如果,不愛了呢-談程式設計師的生涯規劃 by 董大偉

http://channel9.msdn.com/Events/MVP-Virtual-Conference/MVP-Comcamp-Taiwan-2014/Career-Development-For-Programmers

image

 

微軟技術無所不通-教你成為 IT 界的德魯伊 by 曹祖聖

http://channel9.msdn.com/Events/MVP-Virtual-Conference/2015-Taiwan-MVP-Comcamp/ITPro-Druid

image

 

最後,靜下心來,然後問問你自己「我要 Coding 多久?」然後找出你的目標。


延伸閱讀

.NET Walker: 你為了什麼寫Code呢???

.NET Walker: 專業主義的秘密 - 練習

 

以上

3 則留言:

  1. 每當聽到這句話,不管是問我還是問別人,提問的人我是不太在意,我比較在意的是被問者的回答,
    有時聽得出來是對程式開發有著迷惘,有時則是聽到無奈,甚至聽到的是對於未來沒有目標的答案,
    關於程式開發,很多程式開發人員也不知道還能待多久,以及能夠做到什麼。

    回覆刪除
  2. 當時我還是決定要離職,不是因為工作太操或是人事、薪資等等的因素,而是我看到那邊的資深同事之後,我突然有了警覺,我不想在那樣的環境然後安穩的養老到退休,安逸的環境會讓人逐漸腐壞,會讓人不再繼續大步往前而永遠停滯,而且對於程式開發人員,我在那邊看不到我未來的職涯發展。
    所以不能讓自己安逸下來。

    回覆刪除
  3. 看到這篇,跟MRKT大大以前的處境好像阿~~~
    現在也是待在上市股票的科學園區公司,也是間養老的地方。剛進去時,每個系統都用超級舊的技術又超難維護的CODE...
    但是有試著跟主管提出若導入新技術的方案,能解決以前系統的問題。之後開始讓我使用新技術,為這部門引入活水~
    目前還有動力繼續待在這間,也希望能跟上現代資訊業的腳步,不斷為軟體專案(甚至整個部門)達到最佳狀態XD
    感恩MRKT大大分享的所有文章

    回覆刪除

提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。