我思考越深就越堅信,如今的程式設計師的最大挑戰是沒有時間學習新知識。當在學校時,人們都有大量的時間來學習新工具和新技術,但一旦完成學業,有了全職工作,我們就拿不出足夠的時間來學習新東西了。而我們這個行業的變化卻是日新月異,對於一個職業程式設計師,每週至少有40小時‘真正’工作時間,完全沒有時間和精力去掌握各種的新興程式語言,框架和技術,更別說精通了。我想這也就是為什麼程式設計是年輕人的遊戲的原因。
想象一下,你在一個大公司裡,在一個穩定可靠的技術架構上寫程式。如果你在這個專案上一干數年,但卻沒有時間在工作之餘學習新的東西,那麼,當專案完成時,也就是你的技術過期之日。至少你的市場選擇不多了。此時也許你希望找到相似的技術工作(很可能是無聊和重複性的工作,但我猜大多數人都會有數次這樣的經歷),或花一些時間來學習最新最流行的技術(沒有人會為此給你報酬),或幹起非技術性的管理工作(也許是得到晉升)。
一旦你幹起來管理工作,你在技術上將會越落越遠。我見過一些走上這條道路的人,沒過多長時間,他們就已經沒有信心再去重拾程式設計的老路了。他們似乎忘記了曾經在程式設計界的驍勇。這種過早的從程式設計活動上的退休在我看來就是一種浪費,應該避免。
對於這個問題,有一些很容易理解的解決辦法:
- 形成學習氣氛。在公司裡,學習他人並幫助他人,教學相長。
- 招聘一些善於學習的人,讓他們在工作中引入新技術。
在學校裡,我們有固定的學習制度/習慣,我們會嚴格遵守,去學習和實踐。一旦離開了學校,大部分的我們再也不會延續這種習慣。是的,有動力的人會仍然讀書,讀部落格,不讓自己落伍。但即使最有理想的程式設計師也很容易跟不上時代。尤其是當我們有了配偶,孩子和貸款等。
能讓我們保持進步最好的方法是在工作中和同事一起學習。我很希望公司能夠貢獻20%的時間來搞技術讀書會、研討會等,這些活動能讓同事們相互激勵保持進步。我認為團隊中的每個人都應該花一些時間在一些非重要的上做一些前沿技術(至少對你是新的技術)的嘗試。除此之外,團隊成員應該和一些其他專案的人一起交流。這對公司員工有好處,也能讓公司獲得更多有經驗的人。
我認為必須讓同事成為我們的老師,公司應該鼓勵開發人員相互學習,相互教育,傳授經驗。在公司內部要成形成教、學一體的風氣。有一點很好,這些教和學很容易看出效果,它能在團隊的開發工作上體現出來。如果你沒有積極的從別人那學習,或沒有積極的幫助他人,這說明你沒有全身心的投入到團隊中。
另外一個可以解決缺乏學習機會的方法是招聘一些善於解決問題、善於學習的人,讓他們在工作中帶入新的技術架構。當你的公司了已經有了很好的學習文化和技術風氣,這種做法尤其有效。我在想,如果沒有重新學習大量技術的壓力,有多少大公司的中層管理人員會願意重返程式設計活動。
如果讓我來招聘程式設計師,我不會列出20多個重要技術掌握指標,只有一個要求:
招聘善於研究問題的人。應聘人要有能力和願望學習新的知識,並把自己這些年學到的知識教授給他人。
你並不掌握最新最流行的技術,這些年只是在開發一款出色的產品?沒關係,這最新最流行的技術並不難。如果你在你最近的專案中表現的很出色,你同樣也會在我們的專案中表現的出色。
請放心在你的招聘啟事中使用上面的話。也許我也會去應聘!