一個提問引發的職業規劃熱議-撥開迷霧,走向光明
一個小火點
廣州.NET微軟技術俱樂部,各路大神的聚集地;日前,引發了一場小小的討論,一位新人(新入群的朋友)在群裡提出了自己的疑問,希望可以得到大家都幫助答疑。
*(本圖已獲得發言者本人授權釋出)
整理了一下他的發言,他本人思路比較清晰,也明確知道自己的想要的東西和遇到的問題,描述還是非常細緻的,這裡給他點贊!很多人都會在提問題的時候由於描述不夠詳細而無法得到有效的幫助,他在這一點上做得非常好。針對他提出的問題,群裡立刻就熱鬧起來,俱樂部葉主席提出了非常有意義的參考,群裡的朋友大神紛紛表示,和自己的經歷非常的相似,比如下面這位朋友
*(本圖已獲得發言者本人授權釋出)
氣氛空前的活躍,也勾起了我的回憶。下面結合自己的經歷,嘗試給這位朋友一些解答。
關於語言選擇
在多平臺的大環境下,語言選擇意味著生態的選擇,進而影響到你的朋友圈,最終,影響到的,是你的收入和發展。我從06年開始接觸程式設計,之前真的是隻會玩遊戲,當我真正進入程式設計的世界後,我也沒有時間去思考我到底要學習什麼語言,在那個時代,Java 和 .Net 平分秋色,開發一個 Web 應用,基本要求是全棧,.Net 使用 Asp.Net,Java 使用 Jsp+Javabean+Servlet,這是最基礎的, Asp時代不表。桌面應用程式基本就是 Winform 的天下,Java 雖然也有 Swing,但是在 Windows 橫行的中國,Swing 猶如滄海一粟。
但是,彼時 Java 已在移動開發領域嶄露頭角,相信30+的朋友對手機遊戲在啟動畫面的時候,都會出現 Java Logo 的事情記憶猶新,企業級應用 Java 也已經佔領了大部分市場份額,從政府到企事業單位,PHP+Java+Oracle 是標配;即使在伺服器以及資料庫市場上,Windows Server 和 MSSQL 的價格也無形中增加了企業的成本;社群的生態也在快速的拉開了差距,各種開源的論壇和企業網站幾乎都是PHP為主流。
但是從 .Net 1.0 開始,微軟憑藉其快速開發的優勢和強大的IDE工具征服了一大批粉絲,桌面應用也一直佔據著統治地位,從2008 年開始,我開始看到一絲曙光,這一年,微軟釋出重磅釋出了 WWF+WCF+WPF 三大重要功能,作為微軟的忠實粉絲,我義無反顧的投入了進去,在部落格園建立了 WF小組,目前 WF 小組已經好幾年沒有人發言了,在專案中應用了 WCF 進行通訊,桌面應用使用了 WPF,彷彿一切看起來都非常美好,但是我心裡清楚,這三個元件都有一個共同的問題:太重了,最重要的是無法跨平臺,在企業內部,自我感覺一直處於二等公民的狀態,使用 Windows 給公司帶來了太多成本上的開銷,包括硬體和軟體的開銷。
這一晃,10年過去了,我個人認為,這是微軟失去的 10 年。
在這 10 年間,我也未放棄過對其他語言的探索,PHP,Python,Java,NodeJs,等等,看到了這些語言的發展,也看到了許多的不足,整體來說,語言使用沒有侷限性,如果有,那就是語言限制了自己的想象力。在許多年以前,你無法想象 Javascript 也可以用來編寫高效能的伺服器程式,但是今天,各種應用比比皆是。
在今天,微軟推出了 .NetCore ,我還是會義無反顧的投入了進去,從我的部落格就可以看出來,我寫了 Asp.Net Core 輕鬆學系列,從心裡,我希望這個產品越來越好,也堅信我的選擇。
對於語言的選擇,我的建議是,當你需要時,就去學習!
公司的選擇
對於選擇公司,是很多人都會遇到的難題,這就是一道單選題,而且你還不能選錯,對於新人,能進大公司,不進小公司,為什麼呢,從容錯率上面來說,大公司的容錯率會高很多,在大型的網際網路公司裡面,你更容易遇到大神,事實也是如此,大神通常都被大公司收編了;大公司有整套的規範化的流程,在這裡,你可以學習到更多。
從大公司出來的人,和一直在小公司做全棧工程師不同,大公司給你的鍛鍊是小公司所不具備的能力,流程管理、團隊協作、程式碼規範,因為這都是一群站在食物鏈頂端的人,技術趨勢也幾乎都由他們帶領,不是說小公司就能學習到這些東西,只是會比較困難和緩慢,當然,像上面這位兄弟後來遇到了貴人,那是要另外說法的,畢竟千里馬常有而伯樂不常在。而另一個收益是,你的工資水平在大公司裡必將處於行業中上水平。
橫向比較的話,比如以前我的老東家多益網路(此處應該給我廣告費),其招聘應屆畢業生的程式設計師入門薪資標準是15k/月,大公司裡面還有各種福利待遇,比如旅遊、包餐、接送、員工宿舍、各種團建活動、圖書館、健身房、每年免費體檢、有的甚至父母小孩都免費,圖書館就是你加班時間提升的好機會,如果你有幸進入比較知名的公司,說不定你還可以直接向開源框架的作者發IM訊息進行請教,不管怎麼樣,所有人都應該到大公司走一趟,然後再做打算,由大公司帶出來的技術和流程,在小公司中應用起來,也帶來更規範和高效的收益,這是一個正向的過程。
另一半的相遇
輪子哥前幾天在群裡面說:在美國,如果你有幸取了一個做技術的老婆,那你幾乎就是全國收入 10%。當然,輪子哥確實做到了。在大公司裡面,意味著更多的人力和資源,不誇張的說,大公司的前臺妹子質量是非常高的,當然,做技術的妹子也不知少數了,這些都看個人際遇,我一個朋友的老婆也是做技術的,Java工程師。
技術的積累
相對上面說的這幾點,這裡說的技術積累尤其重要;在你個人的技術生涯中,一定要不停的學習,特別是要注意專項的提升自己的基礎水平和思維能力,如果基礎較差或者半路出家,一定要學習計算機原理,瞭解記憶體、CPU、快取記憶體、位元組佔位、IO讀寫、網路傳輸、安全認證等等,像我就是半路出家,從一個對計算機完全不懂的人變成一個標準的程式設計師,付出了常人於幾倍的努力,別人在玩遊戲逛街的時候,我在背單詞(開發語言關鍵字),對著一個示例一遍又一遍的模擬,直到自己無需看 Demo 也能寫出來這個程式,才算結束,對於設計模式,需要真實的去思考和使用,設計模式是非常抽象的東西,如果你不去使用,你就不能完全掌握它;程式設計師這個行業,是非常講究動手能力的;說白了,我們是靠技術吃飯的。
市場上的開發語言,都非常具有互通性質,所以,你會發現,大牛學什麼都快,這是思維模式決定的,真正頂端的人,是創造技術,而我們普通程式設計師,致力學習好技術,然後自然的去應用到業務中,這就是自我的成功。關於架構,始終相信,好的架構都不是一蹴而就,從來都是隨著業務的發展慢慢進行演進,沒有銀彈,只有適用!對於我們個人也是一樣,一步一個腳印,堅持學習2年,後面幾乎就是適應,把難掌握的內容進行一遍又一遍地模擬,直到掌握,然後這些經驗和教訓就像鞭痕一樣印在你的腦子裡,當需要使用的時候,很自然的,他們就出現了,好的架構師,總是有解決方案就是這個道理。
多參與開源專案,多看優秀開源專案的原始碼,學習他們的架構,學習他們的程式碼書寫風格,學習他們高效和精煉的設計,通過閱讀原始碼,提升自己,如果可能,參與維護社群開源專案,既貢獻了程式碼幫助別人,又通過開源專案提升了自己的技術水平,還為社群生態的進一步擴大做出了自己應有的貢獻,這是我們的義務,也是一個程式設計師的應有的擔當;通過參與開源社群互動,結交到更多良師益友。像廣州.NET微軟技術俱樂部裡面大神雲集,輪子哥、張隊、葉主席、還有很多MVP,還有很多開源框架的作者,我們甚至直接向作者諮詢問題,這些體檢和機會,大概在一個人的世界中很難遇到。
經驗和教訓
對於個人成長,這裡多說兩句,如果工作中遇到了問題,要學會適當的提出問題,然後再向別人提出問題之前,先想好解決方案,這樣,在你提問的時候,別人會比較重視,覺得你也是經過了思考的,切忌提問的時候上來就噴,無助於問題的解決,還有的人開局一張圖,描述全靠猜,這類人,歷史終將把他們淘汰在長河裡。要善於總結經驗教訓,不論是技術還是人際關係上的,實際上就是要多思考,這也是預防阿爾茨海默症的好辦法。
關於跳槽
我個人參加過大大小小應該有不下100場招聘,包括校園招聘和社會招聘,總的來說,對於3年內跳槽超過超過2次的人來說,我是會特別留意為什麼會如此頻繁的跳槽,根據勞動法規定,合同3年試用期為3-6個月,合同1年的試用期不得超過1個月,所以,從合規性上面來說,頻繁的跳槽意味著可能在團隊協作方面會有一些問題,或者其它方面的原因,但是除非碰到特別出色的、聊得來、技術不錯,我會降低要求,團隊協作我始終擺在第一位,所以,建議不要頻繁的跳槽,特別是不要進行大跨度的跳槽,比如一個程式設計師今年在幹開發,明年跳槽做專案管理,後年做售前支援,然後面試崗位為:架構師,這就讓人比較懷疑其崗位適配性。當然了,跳槽是走向高薪的非常好的手段,希望大家都被獵人盯上,哈哈。