有哪些IT初學者(新人)成長為技術大牛的真實經歷?

做為一個IT的新人,要想成為技術大牛究竟要走什麼樣的路子,怎麼樣能夠快速成長。


做為技術道路上的過來人,我也分享一下我的體會。簡單來講,成為技術大牛雖然有難度,但其實也沒那麼難。要成為任何一個領域的專家,你需要做的是學會該領域的已有知識,所以你只要學習就行了。真正有難度的事情是創新,是利用已有知識和技能創造出人類還不知道的有價值的東西。

如何學習專業技能?我自己總結了一句話:「技能學習這件事,有技巧無捷徑」。有技巧是說,並不是說你花了很多時間,技能就一定會提高的,這裡面有方法論的區別;無捷徑是說,即使知道了技巧,不下功夫也是不行的,正所謂,紙上得來終覺淺,絕知此事要躬行

拿我自己來舉例子。我在上大學之前從來沒有接觸過PC,甚至都不知道有個人電腦這種東西。操作電腦、編程這件事對我而言完全是零基礎,自學成才。由於對計算機有強烈的興趣,從大一開始,我花了很多時間學習編程(當然也花了很多時間玩電腦遊戲),諸如個人電腦操作指南、打字法、Windows用戶手冊、微機原理、Windows/Unix操作系統、各種C/C++編程書籍(Turbo C、Borland C/C++、Visual C++),我看了一大堆書,也寫了一些程序練手。直到大四,我還是覺得很迷茫。一方面感覺自己學了很多東西,另一方面又覺得好像什麼都不會。具體點說,如果讓我寫個編程作業,問題不大;但是如果讓我寫一個有完整功能的應用程序,幹不了。換句話說,我的水平可以應付學校里的作業,但是還沒能力做真正的產品開發。

這讓我很焦慮,不知道畢業怎麼找工作。當時我的想法,是找一家公司實習,工資多少無所謂,一定要能鍛煉技術。我選擇的公司是一個創業公司(現在不存在了),同學推薦的,領導和技術團隊都很牛。我的面試很糟糕,人生的第一場面試,幾乎所有問題都搞砸了。領導看在推薦人的面子上把我留下,工作內容是組裝電腦和安裝各種軟體,跟電腦城裡賣電腦的差不多。由於在大學裡裝過無數次電腦,我乾的不錯。印象最深刻的一次是有一回別人剛攢好的電腦系統(SunOS 4)啟動到登錄界面時出現花屏,滑鼠滑到哪兒花到哪兒。領導讓我判斷是什麼問題(他技術很好,其實在考驗我),我說可能是因為顯存不夠,換一塊有兩兆顯存的顯卡試試。換顯卡後果然好了。

大約是從那以後,領導開始讓我參與軟體開發。我寫的第一個商業程序是一個應用網關,把一種醫療儀器集成到我們自己開發的醫療信息系統。由於後來需求的不斷擴大和我本人的完美主義傾向,這個軟體我重寫了三遍。最開始很普通的一個模塊,最後可以做到可以方便地接入各種新設備(不同廠商、不同種類),也因此變成了核心模塊,產生了獨特的商業價值。有的項目中公司拿出來單獨賣,也專門為它申請了專利保護。

這兩件事我學到的是,做任何事情都要用心,要非常關注細節。看起來不起眼的、繁瑣的工作做透了會有意想不到的價值。從技術角度,我也學到了很多東西。比如,如何用RS232和設備通信;如何寫一個TCP伺服器;如何寫一個獨立的Windows應用程序;如何把一個普通程序做成Windows NT Service;如何寫一個跨平台的程序(Windows和Linux都能跑);如何設計一個框架,能夠快速集成多種協議(RS232串口、TCP/IP、有狀態協議、無狀態協議等);如何逆向分析各種設備協議(我們是小公司,拿不到醫療設備公司的協議文檔);如何把設備集成框架設計得簡單易用,我不在的時候(當時我還沒畢業)別人也能快速集成新設備。我覺得任何一個值得做的項目都會學到很多新知識,成為技術專家的關鍵一點是你要把每一個有價值的知識點研究透,這樣多個項目積累下來,你就有了很多很紮實的知識點,這些知識點積累起來,結合書本知識,就能系統化。什麼叫研究透?想像一下世界上該領域的頂級專家來跟你交流,你是否能做到他問的任何問題都能對答如流。

已經過了快二十年,我對這個程序的很多技術點還能記住,是因為當時真的下了很多功夫(不然不會重寫三遍)。我面過很多人,不太理解的一點是發現有些人對自己做過的東西說不清楚,有的細節甚至才過了幾個月就忘了。我面人的基本要求是知其然還要知其所以然,自己做過的東西說不清楚說明不怎麼動腦子,知其然不知其所以然說明對技術沒有追求,不關心背後的原理。

基本上我寫過的所有軟體,設計要點我到現在都能記住。要做到這一點,一方面是做任何事情都要下功夫,關注細節;另一方面是要把設計和實現分開,實現可以忘記但是設計不能忘。

大家都是普通人,我的記憶力也很一般。參加同學聚會的時候,大家經常回憶往事。我經常發現當年一起做過的事情,別人說的津津有味,我卻完全想不起來。設計和實現分離是我刻意訓練過的一個技巧,目的之一就是為了長久記憶。設計是有規律和普遍意義的,可以用在以後的工作中,值得花更多的時間去思考和提煉,而花更多的時間恰恰有助於記憶。實現細節太多,記住不容易,很多時候也跟具體的項目有關,對以後的項目不一定有幫助,沒必要刻意去記。中學的時候做題,我喜歡總結規律,從一道題中歸納出一類題的解法,找到快速解題的公式。我甚至還要求自己對某些題型要在一定的時間內解出來(我中學的時候總結了一套解題公式,可以快速對付各類題型)--這些都導致我會花很多時間研究解題技巧。而花了這麼多時間得出的解題技巧,記不住也難。所以我說,如果做過的東西說不清楚,說明不動腦子,下的功夫不夠。

這個網關程序我在兼職狀態下做了三年多(從大四到讀研),真正的密集開發可能只有不到一年的時間,還不是全職的,後面忙著本科畢設和研究生學業,變成顧問角色,很少去公司。我在那時就已經成為了Windows技術專家。做d2hackmap遊戲外掛是在研究生後期,那個時候我的C++、Windows技術水平已經很高了,如果你去看d2hackmap的源代碼,可以發現裡面用了各種Windows、C/C++、彙編技巧。

在這個網關開發的過程中和研究生期間,我學習了哪些技術?具體來說,有當時所有主要的Windows開發書籍,所有主流的C/C++編程書籍,還有歷期Microsoft System Journals(後改名叫MSDN Magzine)上感興趣的專欄文章,都看了一遍。

問題是,同樣的我,為什麼從大一到大四花了那麼多時間學習編程,進展很慢,然而實習了不到一年就有很大進步呢?我覺得有幾個原因。一是原來的學習雖然有一個模糊的方向,但是沒有明確目標。二是沒有特定的工作環境。三是缺乏過來人的指點,不可避免走了彎路。

有明確的交付目標和時間點,才會有壓力,才會針對具體問題去尋找答案,這樣就把漫無目的的學習範圍大大縮小了。環境也很重要,在家裡工作和在公司工作效率差很多,這跟在宿舍自習和在教室自習差很多一樣。過來人的指點可以避免走彎路,讓你在第一時間做出正確選擇,節省大量時間。但是要記住,別人對你沒有義務,所以別指望高手會手把手教你。我的學習更多的是觀察優秀的人如何做事以及他們對事情的觀點。

通過項目學技能的好處是任務很具體目標很清晰,缺點是容易見樹木不見森林,知識不系統。通過看書學技能的好處是知識體系比較完整,有全局觀,缺點是書本知識比較抽象和枯燥,不容易理解。所以這兩者一定要結合起來。

總結起來一句話,技能學習有技巧無捷徑。有技巧是說學習技術需要實踐和看書相結合,有高手指點就更好,關鍵是一定要實踐,光看書或者做練習題是不行的;無捷徑是說一定要自己下苦功夫,不要幻想有高手帶你飛。我在上海生活十幾年,上海話都聽不懂。因為智商不夠嗎?肯定不是。因為我不知道學習語言的技巧嗎?也不是。是因為我沒有學習上海話的壓力,也缺乏主動性,沒有下功夫而已。

就技能學習而言,花同樣多的時間,有專業教練手把手教肯定是效果最好的,這也是為什麼在任何競技領域,業餘選手肯定干不過職業選手的原因。但是工作中的同事不是你的私人教練,所以工作中的學習要靠自己,要注意觀察高手的工作方法、聽他們分享的觀點,迷茫的時候找他們指點。

關於技術大牛,其實也分兩個方向:領域專家和系統架構師(我的選擇是系統架構師)。前段時間正好在公司內部做了一個架構師講座,藉此分享一下。

下面引用的兩張圖來自這個網站:Gaudamp;amp;iacute System Architecting homepage --是專門研究系統架構設計的一個項目,免費的。

技術專家和系統架構師的區別如下圖。技術專家和系統架構師是兩個不同的方向,無所謂誰好誰壞。技術專家在某一個領域非常精通,比如說音頻編解碼演算法。系統架構師是一專多能,在某些點上追求深度,其他領域追求廣度。在技術專家和系統架構師這兩個方向之間還有多領域專家和領域架構師。

從新人到系統架構師的職業道路如下圖。

做為架構師,雖然追求廣度,但是必須對某個領域非常精通,這是你的根,要扎的非常深。我面過很多架構師,是在做上層架構設計,說的也頭頭是道,但是對一線技術精通的就不多。

架構師的第二個層次是要追求技術廣度,有很多技術你可能沒有做過,但是要知道怎麼回事,需要的時候能迅速鑽進去。

第三個層次是要了解業務、應用場景還有各種組織流程。了解業務和應用場景是因為技術需要靠創造商業價值來變現,了解組織流程是因為商業化不是單打獨鬥,需要協作。架構師是把商業需求轉換成產品的一個關鍵角色,因此他需要了解這些技術以外的東西。

第四個層次是要了解社會心理學。因為產品最終是為了滿足人的需要才有價值,而產品研發本身也需要多人協作。社會心理學主要是研究人際關係。自我評價的話,我現在大約在第三、第四階段的某個程度。

關於智商。有人擔心自己智商不夠做不了技術大牛。我的看法是智商這個東西看做什麼。如果是創新型工作,比如科研,需要突破人類已有的知識疆界,這是需要很高的智商(不過科研里也有很多搬磚的活兒)。絕大部分的工作,包括軟體開發,並不需要很高的智商,重要的是勤奮、學習技巧和工作的態度。

我發現這位答主對天賦的看法跟我幾乎一樣:https://www.zhihu.com/question/51049813/answer/133713347

他總結的公式:天賦=時間x方法。這跟我說的有技巧無捷徑是一回事。

關於工作態度。我很喜歡的一句話是Everything happens for a reason(凡事皆有因)。這句話的真正意思是,做為工程師,你必須有打破沙鍋問到底的精神,對每一個問題都追查到底。開發中會碰到大量的bug,有的偶現bug很難查,有沒有這種精神,直接決定了產品的品質和你在技術上能走多遠。我在前一段時間,為了一個客戶反饋的iOS上的偶現崩潰,查了兩天兩夜,其他工程師覺得可能是客戶自己的問題放棄了。我以前在博客里也分享過一個案例,為了驗證這個bug fix,我做了14萬次實驗,細節見這裡:Sting的專欄 - Under the hood。技術就是這樣一點一滴積累出來的。

我分享一下14萬次的驗證實驗這個案例。我們當時新發布了一款設備,客戶反饋說有時關機下不了電,這個後果比較嚴重,會直接耗盡電池導致電池損壞。這個問題其實在產品發布前發現過,出現的概率大約是百分之一,當時也做了修復。在客戶那兒復現了說明沒徹底解決。我當時剛進公司沒多久,從來沒做過硬體相關的開發,甚至都不知道有邏輯分析儀這種東西。但是我有很好的思路,建議做自動化測試重現問題。測試的結果發現出現問題的概率是兩千分之一,換句話說,平均每兩千台設備會損壞一塊電池,或者每台設備下電兩千次電池會壞掉。通過用示波器和邏輯分析儀捕捉下電過程的信號邏輯,做了大量分析,我們找到了問題,是因為CPU在下電時寄存器狀態沒保持住,一定概率上會影響主板上的下電邏輯。修復以後,接下來的問題是,這種小概率事件,解決方案怎麼驗證是正確的。我的想法是,因為我們知道出現問題的概率大約是兩千分之一,如果驗證次數比這個概率高一個數量級,我就有信心說基本解決了這個問題,如果驗證次數高兩個數量級,我的信心是非常足的。所以我的目標是要做20萬次實驗。最後由於市場壓力比較大,時間來不及,做了14萬次覺得足夠了。

關於商業軟體開發。商業軟體開發和編程作業、演算法競賽等最大的區別在於這句話:軟體的首要技術使命是管理複雜度。這是《代碼大全》里的一句話,是我覺得這本書中最重要的一句。很多軟體工程師包括很多技術大牛都沒有意識到它的重要性。仔細想想,很多重要的編程思想、方法論其實都跟這句話有關。比如,為什麼要建立代碼規範,要有代碼倉庫管理/Check-in流程;各種軟體研發流程:瀑布模型、V模型、敏捷開發;各種設計思想:分層、模塊化、面向對象、基於連接和組合、KISS原則 (Keep It Simple and Stupid)、高內聚低耦合。所有這些其實都是為了管理複雜度。心中有管理複雜度的意識,軟體自然會越寫越好。我個人的學習方法,比較喜歡從先實踐中總結歸納,再通過看書把知識系統化。《設計模式》這本書挺薄的。我看過幾遍,從來沒有仔細看完過,經常翻了幾個模式之後覺得太枯燥放下了,所以我其實也沒有完整的掌握過它提到的所有設計模式。這不妨礙我做設計,我不會刻意去想要用什麼樣的設計模式,但是我非常關注複雜度管理,會反覆思考怎麼設計使得複雜度可控。

最後關於如何做事如何學習,我推薦一本書:史蒂芬.柯維的名作《高效能人士的七個習慣》。我很早以前就知道這本書,很多外企都有相應的培訓課程,系統架構師的培訓講師也推薦過,我自己偶爾也翻翻,但一直以來都當成功學、心靈雞湯看待。我真正對待這本書,是因為幾年前認識一個朋友,他說這本書改變了他的人生。這給我很大的震撼,因為我從來沒聽過有人說一本書改變了人生。如果有一個清華本科畢業、留美博士、回國創業成功的絕頂聰明人,跟你說一本書改變了他的人生,你是否也應該重視呢?

這本書給我的體會是,道理非常好,但是說理的方式有點教條(也許是翻譯的問題),很多道理需要結合人生閱歷來仔細體會。現在讀不太明白也沒關係,過幾年再看,會有新的體會。

寫這個回答是因為我前幾天寫了這個回答(作為一名程序員,最大的成就感來自哪裡? - 知乎)以後,有人對我的成長經歷比較好奇,也有些人覺得我是一個破壞分子,因此在這裡澄清一下,我是一個正經的程序員!

接下來打一波小廣告,如果你是技術大牛,或者你覺得自己有成為技術大牛的潛力,而且你還喜歡挑戰性的工作,歡迎加入我們--一起創業@聲網Agora。歡迎技術牛人加入我們,長期有效!


難道不是每個技術大牛都是從新人成長進化而來的嗎?所以問任何一個所謂「技術大牛」就好了。

說點我個人的故事,十幾年前,我還是一個在微軟的小菜鳥,那時候微軟的培訓相當多,有一次一個美國來的Principal級別的dev manager來講課,題目就是《如何成為一個great developer》。我去聽課,課程形式是很活潑的,大家和講師圍坐在一起,可以討論發言。講師就問我們,我們覺得該如何成為一個great developer?我發言,說要寫很多高質量的code,多反思,多看技術博客,還要自己寫博客,blablabla。但是,講師似乎還是不滿意,按照自己那一套說了一堆,說「不會教魚游泳的人沒法成為great developer」「不能和領導搞好關係的沒法成為great developer」,總之就是要多溝通,會表達,會做人,技術如何修養倒沒怎麼說。

我當時想,哥們你這講的是如何成為人精而不是成為great developer啊。

說實話,那次培訓我覺得沒學到什麼東西。

十年之後,我反思這個故事,覺得當年的講師真是說到點子上了,其實,到了一定層次之後,人和人之間的智力和努力的差別不會很大,主要區別就是看有沒有機會,而獲取機會溝通表達能力和人際關係就成了重要因素。

所以,給年輕人們一句提議,要成為技術大牛,不光要鑽研技術,更重要的是訓練自己的表達能力,要建立好自己的人脈關係。

年輕人也不要著急成為「技術大牛」,好好學習天天向上,每天前進一點點,再過十年你怎麼著都成技術大牛了。

關注我吧@程墨Morgan


自己是個失敗典型,就不說了,說一下我老婆吧。

她的天資非常普通,也非名校畢業,在30多歲時走到了一個相對比較不錯的位置,經歷更適合普通人的參考。

彼時,我是計算機方向的大學老師,她是熱能系本科學生,我跟她說,女生研究什麼鍋爐,考計算機的研究生吧。

然後,她用了半年多時間考上了計算機研究生,總分第二,師從計算機學院副院長。零基礎起步,研一進項目,研二帶項目,研究生期間發論文的同時,參與完成軟體開發項目近十個。

其中一個項目的甲方負責人對她導師說:「如果可以,等她畢業就到這邊來吧,我從沒見過一個人,在上班時間完全不上互聯網。」

然後,我從學校離職,到異地工作,她考上我工作地全國名校名師的博士生,是該師名下唯一公費生。

博士半年,研究生階段面試的一個職位,全球IT行業TOP10的美資公司,給了她offer,她退學進入該公司。部門人才濟濟,全部來自名校研究生。三年後,她負責3個公司重要系統,而這其中每個系統,美國人那邊,都是不止一人維護。

幾年後,任group leader,一年後,生小孩,哺乳期參加department manager職位申請,中選。

我擔心她做不了這個manager,因為她的溝通能力很弱,people manager的技巧也缺,結果她做的非常好,她的做法是熟悉每個系統,在更高的技術層面和技術人員一起去處理和其他大部門的問題,更像是一個technical director的樣子,這樣做很累,但是極為有效。

現在公司提供一個機會給她,去另外一個大的factory做一個更高階的manager,她還在考慮。她現在35歲。

綜合下來一路的經驗,無非兩點:專註和下苦功

其他的,技術資料,權威書籍,職業分析,工作技巧之類的,全都可以輕易查到,但都不是根本條件。

這是個資訊爆炸的時代,提升效率的同時,也分散了很多的注意力。影視、遊戲、小說、新聞、八卦、段子、知乎,可以想一下我們每天要在非自己專業的內容上花費多少精力。

套用這裡很有名的一句話:對於絕大多數人來說,努力程度之低是成為技術大牛的最大障礙。

她確實天資不高,她曾經很羨慕的說另一個女孩,說xx在音樂,文字,運動各方面都有建樹的同時,It方面成就還強於她,而她幾乎所有精力只在it一個領域。天生確實不公,但不妨礙後天用自己的方式取得自己成績。也許她窮盡一生之力也無法比肩那些天才,但對她自己來說,已經足慰平生了。

/*

有人問的怎麼淘到這種老婆,我覺得我們的經歷,應該能典型體現程序員的福利吧。

她大三時,我給學校建了交友網站,她好奇貼了張照片,我看到了,到資料庫里把找她的好友申請私信什麼的全刪掉,程序里把她鎖定不允許查詢,不顯示信息。然後我發信勾搭,就成了。

*/

今天在看到另外一個帖子的時候,驚覺自己這段話對觀者是有可能產生很壞的影響的。所以加一些補充說明,因為一手搭建和運維了學校整體的網路虛擬世界的資源,所以我的ID當時在學校的學生里是很有虛名的,我勾搭上老婆的真正原因是自己的學習積累和之前做過的事情,那些小手段只是獲得了比較好的機會而已,千萬別本末倒置。

而我自己就是因為在技巧上投入精力過多,導致基本功不紮實,到了一定階段就難以為繼了,現在仍在不斷反省彌補中。這個才該是請引以為戒的。


就在昨天,周六,我凌晨6點才回家。

事情的起因是這樣的

周六我帶孩子去公司。孩子寫作業,我編程序,然後一發不可收拾……

孩子寫作業,我編程序

孩子出去玩了,我還在編

孩子去吃飯了,我還在編

孩子吃飯回來了,我還在編

孩子回家睡覺了,我還在編

這個地方寫的不太好,得重構一下

這個地方命名有問題,得修改一下

這個地方擴展性不強,得調整一下

這個地方斷電會丟數據,得加強保護

這個地方性能不高,得優化一下

這個地方測試用例寫的不全,得補充一下

終於覺得差不多了,要不再補點性能測試用例吧?!寫好了,跑下試試。

恩,還不錯

加大數據量再跑,

恩,沒問題

再加再加再加……

哈哈,終於出問題了吧!超出整數範圍了!

改代碼,終於好啦。

不行不行,萬一以後還出類似問題怎麼辦,趕緊又加了一個測試用例。

200行代碼,我從下午3點一直寫到凌晨6點

真是年紀大了……

/*————————————————————

* 程序員的分割線

————————————————————*/

*不知道自己算不算技術大牛,反正編程時間比較久就是了。

*技術相關的職位我基本都做過,什麼se,sa, cto啥的。以前做系統分析和設計比較多,演算法忘了很多。

*沒人逼我編,但我得對的起將來接手的人

https://www.zhihu.com/question/55162958/answer/143657928?utm_source=com.example.android.notepadutm_medium=social


聲明一下這篇文章是真人真事,不是軟文,這篇文章去年在微信上面都已經轉了好幾十萬的閱讀量了,打賞都接近兩萬,隨便搜索一下都能搜到。原文章鏈接都是2015年10月的,想要惡意揣測別人的,看看清楚,掌握足夠證據再說。

————————————————無語的分割線

@郝培強 的前妻,一個初中肄業生,從月薪800到年薪40萬的奮鬥歷程。

我前妻的故事(一個初中肄業生的奮鬥)

我認識她是在08-09年的時候,那時候,我和朋友開了一家技術諮詢公司。後來,有一家做積分之類的網站找到我們,說他們的系統穩定性太差,問問我們能不能解決。當時那家公司離我家比較近,就由我主力負責。

那家公司人不少,不過做技術的只有幾個人。跟我接洽的主要就是我前妻和另外一個小夥子。談了一段時間的方案,後來,我開始介入他們的開發流程,當時我前妻負責的內容最多,所以跟她打交道很多。

她代碼寫得有點亂,所以,我就問她是什麼出身,她就說是某大學畢業,後來上了北大青鳥的培訓班學的編程。

我們業內一般都喜歡嘲笑培訓班出來的學生,有幾個原因:

  1. 求職簡歷都寫的完全一樣。你第一次收到某培訓班的學生的簡歷,可能感覺還不錯,懂的東西不少,參與的項目也有點意思,說話也頭頭是道。然後,你發現後面30份簡歷都幾乎一模一樣的時候,你就會想說,簡歷這個樣子的我一個也不想要了。
  2. 缺乏自學能力。很多人就是因為覺得沒有自學能力而去了培訓班。去了以後覺得讓我學會的任務,是老師的。這樣的學生,即使最後學會了老師教的一切,往往也是廢的,因為稍微變化一點的東西就學不會。
  3. 不懂得任何的良好編碼習慣、調試、調優技巧。培訓班的老師們把課程全部都灌輸給學生已經夠困難了,這些自然就是奢談。當然,國內大部分大學教出來的學生也是這樣的。這些東西太龐雜,太繁瑣,靠看書和老師教很難習得。必須看自己不斷的去做東西,在過程中,不斷的改進自己。
  4. 很多老師和培訓機構為了追求就業率,傳授各種簡歷面試技巧,甚至不惜幫助學生作弊。統一教出來,所以簡歷和說話都是一個味道。
  5. 因為無知而狂妄。

我個人從來不會天生鄙視任何一個從培訓班出來的學生,但是,對這種現象,對不能跳出來的人,自然也沒有什麼尊重。她倒是有點不同,對我特別客氣,什麼都在問,什麼都想知道。我對所有可以虛心學習,並且有一定悟性的人,都很友善。

我就發現她最大的問題,還在於完全不懂好的編碼習慣是什麼。甚至到了基本上完全不用函數的程度。她當時在那家公司寫ASP,代碼都是麵條代碼,一個頁面可以到幾千行,但是一個函數都沒有。自然遇到了問題也不知道怎麼解決,也沒有任何簡單的調試技巧。更重要的是,找到了問題,改起來也經常出問題。

於是,我就開始教她什麼是函數,什麼是抽象,為什麼代碼要工整,為什麼要縮進對齊。

這些東西她慢慢學會了以後,代碼質量就提高了很多,出的問題也越來越少。

她很高興,說要請我吃飯。我當時收入高她很多倍,當然不會讓女孩子請我吃飯了,於是就我請她吃飯。後來,慢慢的交往越來越多,後來就在一起了。

在一起以後,她才告訴了我很多她以前的故事。

她老家在一個農村,父母務農,姐姐從小去北京打工,哥哥也都在外地打工。她小學成績還不錯,到了初中,上學也沒有心思。結果初中沒上完就輟學了,在家裡務農。幫父母做做飯,放放羊,做些農活。到了16-17歲,她姐姐回老家的時候說,小丫頭這麼小就在家裡務農就廢了,既然不上學就跟我去北京打工吧。

她就這樣來了北京。她姐姐剛嫁了一個本地男人,生了孩子,她來北京的第一份工作就是幫姐姐帶孩子。1年後,孩子上了幼兒園,她和姐姐一起在門口的小飯館,招待所打工,端盤子,洗床單,鋪床單等等。

後來,她姐覺得要學一門手藝,於是去了理髮店打工。因為她姐學得很快,又很會來事兒,慢慢的就成了理髮店的頂樑柱,也成了女老闆的好朋友。然後有一天,理髮店的女老闆,問她姐想不想自己來開店。她姐其實很有野心就答應了,回家兩口子湊了點錢,借了點錢,把店盤了下來。

然後,她就跟著她姐一起學理髮。

這是北京衚衕裡面的一家小理髮店,客戶都是周邊的住戶,大爺大媽為主。她在這樣的理髮店裡面做學徒,月工資也就是800塊錢,住在姐姐家裡。

有一天,來了一個小夥子理髮,這小夥子穿的西裝筆挺,背一個乾淨的公文包,看起來很精神。她很少見這樣的顧客,就攀談起來。小夥子說自己是北京工業大學畢業的,畢業以後,上了一個北大青鳥學編程,現在寫程序一個月可以掙8000。她當時就傻了,整個衚衕裡面都是些北京糙老爺們,都是做一些扯淡的事情,她還沒見過正經上班,而且掙錢那麼多的年輕人。

她就問了一個改變自己一生的問題,她問,我初中都沒畢業可以去學編程么?那小夥子說可以。

於是,雖然她從來沒有碰過電腦,雖然她不知道什麼是編程,但是她已經有了一個理想,那就是做程序員,一個月掙8000塊錢。

她跟姐姐商量,她姐說,你初中都沒畢業,腦子不好使,學不會的,程序員都是聰明人做的。她其實也不知道自己能不能學會,但是8000塊錢太誘惑了,就繼續死纏著她姐。

最後,她姐夫問,學北大青鳥要花多少錢。她說,買電腦需要8000,學習需要1萬。她姐夫就說,這些錢咱們有,既然丫頭有這個想法,咱們就讓她試試吧,萬一學不會電腦也沒有糟踐,咱們可以自己留著玩遊戲看電影。她姐拗不過這兩個人的意見,最終同意了。

於是,家裡買了一台,報名上了北大青鳥。

她說,第一次上課的時候,老師課後說,請大家把今天的資料用u盤拷走,然後關機下課。她悶了一天,終於跟旁邊的人說了兩句話,一句是問什麼是u盤,一句是問怎麼關機。

半年後,培訓結束,她開始找工作,費盡千辛萬苦,找到了第一份工作1800,幹了不到三個月被開除,因為不會的東西太多。第二份工作,2000塊錢,也沒幹完三個月。我認識她的時候,這是她的第三份工作,勉強做下來了,雖然代碼寫得不夠好,但是畢竟沒有被開除。當時她一個月掙2400塊錢。

我當時就問她,2400固然比800塊錢多,但是做學徒包吃包住(雖然是在她姐家,但是去別家也差不多),800花不了多少,而且干滿1年多2年的話,工資差不多也能漲到2-3000多。程序員其實也還好吧。

她就說,她找到第一份工作的時候,就買了白襯衣、西褲、小皮鞋,感覺自己是一個白領。以前理髮,端盤子,都像是伺候人的活。而且她覺得自己現在本事不大,掙少點合理,未來一定可以掙到8000元。

後來,她所在的公司跟我們公司扯皮,想賴掉諮詢費,甚至拿我和她談戀愛說事兒。我的合伙人去起訴了那個公司,我們贏了,拿回了諮詢費。我跟她說,這公司太扯淡,哪裡都有好工作,就讓她辭職了。

後來,我告訴她PHP比ASP市場大,她就開始跟我學了一段時間,然後找了一份新工作,掙到了4000多一個月。

後來,我們結婚了,她懷孕了,生了我們家小寶貝郝依然。斷奶以後,她想去上班,希望我能幫她找一個收入可以提高,而且可以鍛煉的自己水平的工作。

我當時就問了問朋友們,我有個好朋友老劉當時在某家公司負責技術,他正好缺人。我就把我前妻的情況跟他說了下,他說,咱們關係雖然好,你能不能坦率的說,你老婆的水平到底如何。我說,PHP是初學,以前寫過幾年ASP,水平一般,經驗還不夠,但是好處是非常聰明,而且非常肯學。

老劉說,可以讓她來吧,但是我先說明白,即使是你的老婆,我該批評該罵也不會手軟的。你們要想清楚,別到時候被我罵哭了,又走掉,就浪費大家時間精力了。

我就跟我前妻說明了情況,老劉技術很好,對人也很嚴格,在他手下工作成長會很快,但是他性子特別直,不會因為我們的關係就對你特殊照顧,如果你不能努力的話,很可能就沒辦法站穩腳跟。

結果她信心滿滿的答應下來了。

然後第一天下班,她到家就抱著我哭,我說咋了,她說,老劉罵人太狠了,要求太高了,她哭了一整天了。

我說,那就算了吧,哪裡找不到一份工作呢。

她說,不,我覺得老劉罵得對,這樣對我嚴格要求我會成長得很快的。

於是,每天回家都是哭,但是越來哭的越少。

有一天,我打電話問老劉,問問她做的如何。老劉說,基礎真是差,但是人也真是好學,怎麼罵都是只是哭,從來不發脾氣,哭完了認認真真做事情,做完了才走。轉正後,她工資到了6000。

到今天老劉和我前妻都還是好友。

又過了一兩年,我在北京的創業失敗,要去上海的盛大工作。她也要跟我一起去上海。老劉他們公司非常捨不得她,甚至給了她繼續遠程工作的許可權。但是因為網路延遲的問題,工作起來非常不便,最後還是辭職了。

她沒了工作以後,情緒很不好,也經常很無聊,我們經常吵架。我就跟她商量,與其現在找工作,不如趁機學習iOS開發,行業正在起步,機會非常多,容易高薪,而且現在學可以跟很多資深的程序員站在同一起跑線上,非常合算。

她後來就聽了我的在家裡學習,但是可能還是缺乏環境而且對iOS信心也不足,她學的非常慢。

後來又一次有一個朋友約我喝茶,我就拉她去。那個朋友就一根勁的跟我訴苦,iOS程序員不好找,價格已經開到上萬了,還沒找到程序員。我們就一起聊了下這個項目,項目本身挺有意思,但是因為一直找不到合適的人,基本上停工待料,空轉之中。我就暗暗捏了一下她的手。

然後,我說,我老婆做iOS做的還不錯,不過最近一直在幫我做一個朋友的外包項目,走不開,要不然一個月以後項目結束後,讓她來幫你吧。那個朋友非常高興。我就繼續問,如果她過來,你可以開多少。他說,你說個價格吧。我說1萬2吧。那個朋友答應了。

回家,我問她,一個月1萬2,工資翻一倍,你學習有動力了么。

她說,太有了,我保證可以學會。

一個月以後,她去上班,興高采烈的。不過下班回來,她說項目好複雜,不知道自己能不能搞定。我也有點擔心。過了幾天,她說,我們老闆想請你吃飯,今天晚上下班你來接我吧,我們三個一起吃個飯吧。

我心說,難道是乾的不好,要被開除了么?

到了那裡,寒暄了幾句,我就怯怯的問,她做的如何?她老闆非常高興地說,太好了,之前拖了幾個月完全沒有進展的東西,現在全都動起來了,簡直是我的救星。

後來又過了1年多,我們兩個感情越來越差,漸行漸遠,慢慢的感情不在,最後離婚了。

離婚後,她回到了北京,在朋友的介紹下,進了360,月薪1萬5。當時360她所在的部門,大多數人都來自微軟,至少是4-5年年資的程序員。她是技術最差的,不過人緣不錯,也很好學,很快就站穩了腳跟。

一年多以後,很多同事跳槽,都紛紛拉她去,最後她跟著一波同事去了另外一家目前如日中天的公司,月薪1萬9。

再後來,幹了一年多後,她有跳槽到了另外一家BAT級的公司,年薪40萬。

頭些日子,入職以後,她轉發了封郵件給我,是她發給HR的信,大概內容是說:

我發給你的簡歷上說我畢業自某某大學,但是實際上我最高的學歷是初中而且都沒畢業。我是北大青鳥培訓以後自學這麼多年的,不過我曾經服務於360和某某公司,這些公司的同事都知道我的學歷很低,但是他們都可以證明我的工作能力。我之前給你們假的簡歷是怕初篩的時候就把我刷掉。現在既然已經過了全部筆試面試,我不想欺騙你們,如果你們覺得我的學歷是不能接受的,就請收回offer,如果你們覺得可以接受的話,我馬上就可以辦理入職手續。

最後,這家公司的HR回信讓她儘快入職。

她在那個公司幹了幾個星期以後,已經是自己所在小組的骨幹了。後來部門領導還找過她,認為她做的不錯,希望她轉行做這個組的team leader,但是她覺得自己還應該在技術領域在學習一段時間,暫時拒絕了。

我還見過很多很多例子,所以,我看人從來不看起點,只看一個人是不是努力。

我很市儈的把她每一個階段的工資都列出來,其實也是想在說,這是一個從月薪800到年薪40萬的慢慢歷程,說起來很簡單,但是裡面其實有無數的艱辛。

我以前跟很多人講過這個故事,有人說她運氣很好,遇到了我。我也很自得在她的成長過程中,我幫助了她很多。但是,我認為我能起到的只是催化劑的作用。本質原因是因為她是一個對的人,遇到了我這樣的人,可以加速成長,沒有遇到我,也許成長的會慢一點,但是也會在成長。

這個微信號,從來不想成諸位的推動力,如果諸位學習成長還需要人推的話,sorry,我不認為你們是我的讀者,或者說,我要的讀者。我希望你們每一個人都是自己有動力的,自己希望成長,自己付出努力的人。在這個前提下,你有些困惑,你也有經驗不足的東西,我可以盡全力去幫助你。

人是這個世界最偉大的動物,原因在於,從生理上,我們其實相差不大,每個人都大同小異。但是,精神上,性格上千差萬別,每一個人都生來具有無限的潛能。每一個希望不斷改善自己,希望不斷前進的靈魂都是偉大的。

前方沒有終點,一切都有其可能性。我相信此文的大多數讀者,起點都比我前妻更高。她並不是有什麼天賦異稟,只是執著的去追求自己的幸福和成長。雖然我們最終選擇分開,但是我一直對她的信念心存敬仰。我相信,我的讀者里大多數人的成就會遠超我的前妻,也遠超我。因為你們更年輕,更早有機會懂得很多,我到了今天才參悟的道理。你們也都前途無量,千萬不要辜負我的美好願望。


我曾經看到過一個故事。我不記得他是誰,故事哪裡看來的。也許是有些共鳴吧,所以故事我一直記得,他無時無刻不在激勵我,指導我。可以說,這位大哥,就是我的鮑爾柯察金。

故事的主角我就叫他大哥吧。

大哥是小地方的人,上大學以前沒有見過電腦,自然也沒有摸過,至於為什麼選擇了電腦專業,也許是關於那個好就業掙錢多的迷信吧。總之,大哥上了一個二流學校的計算機專業,來到學校一看,同學大多數都是城裡人,都有著不錯的電腦技能。

大哥有些自卑,知道自己是基礎最差的那個,也是經濟條件最差的那個。不過大哥有著中國人既來之則安之的秉性,也有著中國農民的韌性,所以大哥決定,要把學計算機這事兒做好。

大一學習基礎課,有計算機原理,有c語言課。沒有見過電腦的大哥,計算機原理是不可能理解的,沒有辦法,只能靠死記硬背了。至於c語言,沒有電腦,怎麼辦呢,他找來一些習題冊,像高中刷題海那樣,做練習冊,手寫代碼。他課間寫,自習寫,無時無刻不在寫代碼,當然,是在紙上。

等過了一兩個月,有上機課了,他已經寫了好幾大本代碼,他把代碼本帶到機房,學著別人怎麼用編輯器,用一指禪敲入了第一段代碼。可想而知,代碼是根本不能運行的,大量的編譯混雜著大量的邏輯錯誤,連個for循環都是錯的。結果那節課他沒有看到自己的第一個程序。

這讓大哥有些沮喪,他覺得自己過去幾個月都是空做功。不過學習還要繼續,他繼續瘋狂在紙上寫代碼,並且反覆翻閱教材,爭取減少低級錯誤。他還在紙上畫了鍵盤,練習指法,提高輸入代碼的速度,充分利用上機時間。等有了上機機會,就挑出有代表性的代碼,去驗證,修改,記錄。

就這樣沒有效率的過了大概兩年的時間。大三還是大二的時候,大哥終於有了自己的電腦。

那台電腦是用很少的錢,東拼西湊攢出來的。其他的我不記得了,印象最深的就是那台顯示器是二手的,質量很差,屏幕暗不說,還會噼啪響,會像老式電視機找不到信號那樣出現圖像晃動,重影,甚至還會像放電光那樣啪啪閃。

先寫這些,等下到公司了繼續

########## 20160325 13:45,繼續 ##########

不管怎麼說,大哥總算是有了台電腦,比那手寫代碼+偶爾上機要好太多了。於是他又開始了每日沒夜的在電腦上碼代碼。拜這台噼啪響的顯示器所賜,大哥終於練就了近視眼,而且度數以某種斜率穩步上升。

後來畢業後,大哥有了新的電腦,他就把這台噼啪響電腦送給了家裡的一個阿姨,那個阿姨拿它打撲克練五筆,後來終於有一天,噼啪響的顯示器伴隨著一縷青煙和「火光」壽終正寢,那台電腦才被真正淘汰。

後來大哥遇到困難的時候,或者看到新人遇到困難的時候,就會想,當年老子手寫代碼,用放電的顯示器,這種日子都熬過來了,現在這點算什麼?

畢業後,大哥和在大學結識的女朋友,一同找到了工作,努力的勁頭一直保持,比較順利的走到了一個比較不錯的位置,好像是高級架構師一類的吧,收入也相對不錯。這些年,他一直是做傳統業務的。

但是大哥求學的慾望越來越強烈,他覺得自己學的還是不夠,現在也就是做一些應用,一些業務,計算機的核心,他還是不了解。這時候他想,向底層繼續專研。大嫂很支持大哥的想法,於是他們一起裸辭,來到上海,轉行。大嫂對工作的要求不是太高,所以很快的找到了工作,大哥就麻煩一點,他想進入硬體相關的公司。

後來他找到一家公司,去寫驅動一類的事情。由於這方面沒有經驗,所以工資要比之前少一些。而大哥又開始刻苦學習,所以家裡基本都是大嫂在支撐(大嫂很愛大哥,與其說他們剛到上海的那幾年是相濡以沫,不如說是大嫂一直在背後默默支持大哥)。

又過了一段時間,大哥又到了一個瓶頸,雖然他寫硬體驅動沒什麼問題,但是並沒有他一開始想的那麼深入,而且他發現一個現象,就是雖然是做硬體,但是做硬體的人也分軟體工程師,硬體工程師,軟體工程師對硬體沒有深刻的理解,而硬體工程師對軟體也僅僅是了解的程度,幾乎沒有能夠二者都精通的人(woz?),而這樣的現象,導致二者對於自己本專業的了解,也會出現瓶頸,大哥現在就到了軟體的瓶頸。

於是大哥又跳了。他找到了一家做硬體設計的公司,去寫軟體,他想學習硬體。但是他怕公司里人不務正業,所以他不敢在公司明目張胆的看資料,也不好直接去問硬體工程師,畢竟他現在什麼也不會,問了也是小白問題。

於是他又開始死記硬背了,他回到家裡就刻苦學習各種資料,看很多的書。有點知識儲備了,大哥會跟硬體工程師閑聊,偶爾的帶過一些有點深度的問題。漸漸的,他跟硬體工程師聊的越來越深入,越來越有水平,大家開始覺得,哎呀,此人會些硬體嘛。這時候,大哥敢明目張胆的在公司看相關資料了。

我看到的故事,也就截止到此了,大哥講述自己的故事的時候,他還在那個硬體公司,他說他正在業餘時間,為一種晶元開發實時操作系統(記不太清楚具體是什麼了,年頭太長),他的硬體學習之路,還在繼續。

大哥不怕苦,不怕難,利用手上一切資源克服困難,同時不會沾沾自喜,能夠毅然放棄優越的生活去實現自己的追求,這些精神時時激勵著我。

當遇到困難,我也會想,大哥當年紙上寫代碼,人肉編譯器,用噼啪冒火的顯示器,我這點苦,算得了什麼呢?

############ 故事完 #################


肯定還不是大牛,小牛都算不上,勉強算個全棧吧。

就不賣故事了。賣了很多遍了,已經賣了那麼多遍了,何況還有些粉。

直接答題:

  • 怎麼樣能夠快速成長?

這個……,怕是沒有辦法。關鍵是你加了「快速」兩個字的定語。

凡是「速成」的東西,質量就不咋的。

可能唯一的辦法就是:別人一天學習2個小時,你一天學習10個小時,這樣看起來你就比他快5倍了。

我大概就是這樣的,所謂「用四個月的時間完成了大學四年的課程」,我簡單的算了下,4個月*30天/月*14小時/天=1680小時。假設每天學習2個小時,這就840天,快三年了。大學四年,刨去周末寒暑假各種雜課,以及睡懶覺逃課打遊戲泡妹紙……估計還沒學到這麼多個小時吧?

所以,人家不是快,而多半只是看起來快。你相信人家骨骼清奇天資聰穎的,好,當我沒說。

  • 要想成為技術大牛究竟要走什麼樣的路子?

送四個字給你:殊途同歸。

或者再給四個字:功不唐捐。

好像這樣就沒法愉快的聊天了?

關注野生程序員 - 收藏夾 - 知乎吧:裡面有一些乾貨。

乾脆經歷也給你:如何通過自學找到一份開發的工作? - 知乎

另外,我現在正在直播一起幫的開發過程(全部信息見:倡議:我們「一起幫」 - 自由飛 - 博客園),希望也能給你幫點忙。

++++++++++++++++++

另外,這兩天有感而發,隨便說兩句吧。

1、分清「頭腦發熱」和「孤注一擲」

這個其實還有點不好表達。

也是閑的,或者「好為人師」的毛病,一些博客倡議發布之後,很快就有一些同學找到我,紛紛表示要跟著我混啥的。剛開始我很雞凍,現在我都是笑笑,讓他們冷靜一會兒再說。果然,幾天過後人毛都找不到一個了。

以前我還很有壓力,說了要怎麼要怎麼沒兌現,人家還等著的,好像會誤了人家終身一樣,自己創業的事——不說耽擱了,至少牽掛著。後來想通了,哪有這麼回事?

願意學的,有毅力有決心的,自己也就學著走了,說不定早就上路了;不願意學的,哦,不是,假裝很願意學的,或者只是那一刻特別想學的,你……你……你也就別操那份心了。

有句話是怎麼說來著,太用力的人跑不遠?我看過太多的人,一時頭腦發熱,做出一副「頭懸樑錐刺股」的樣子,然後就沒有然後了(學英語算是個典型吧,哈哈)。

除非你是「孤注一擲」的在博。比如當年的我啦,但我也只能博四個月,你讓我博四年,我不瘋,我家裡人都瘋了。

要你分清頭腦發熱」和「孤注一擲」,意思就是,如果說你不是「孤注一擲」的話,還是悠著點。當然,也不能太悠閑,所以有了下面這一點:

2、儘快上手幹起來

關於「堅持」「毅力」「熱愛」「成癮」等東西,我覺得有一個很好的解釋:人做任何事情,都需要反饋(咳咳,暗示你點贊了,聽懂了沒有?)反饋越及時越好,比如嗑瓜子比如打遊戲;那種要長時間的堅持才能看到效果的事情,通常我們都堅持不下來,比如減肥比如學英語。

編程本來是一個反饋很及時的東西,敲代碼運行報錯調試OK……像遊戲通關一樣的。但我看很多人都學歪了,比如我做這個直播,看的人估計也還將就吧,但直到現在,有幾個人把源代碼check出來自己跑一下的?估計90%的人,就是在電腦前面假裝看一看,甚至連看都沒認真看,因為我沒反饋的:顯示有十來個人在聽,但一個冒泡的都沒有。所以我一直懷疑,我是不是遇到了一些「假」粉絲?

真的,同學,這樣不行。

計算機是一個實踐科學,不實踐不敲代碼不跑起來看一看,你哪能學會編程喲!

++++++++++++++++

說到「實踐」,乾脆打個小廣告吧:

註冊·一起幫(包含 邀請人:葉飛,邀請碼:1786)

我自己個人開發的一個網站,開發過程全程直播並有錄像(自由飛:在鬥魚直播寫代碼是一種怎樣的體驗?)

設立的初衷就是為了降低自學編程(也包括各種電腦軟體使用等)的難度,尤其是一些對新人來說「莫名其妙的」問題(比如配置不對、連不上資料庫之類的),問題本身沒多少技術含量,但確實新人自學過程中的攔路虎,自己瞎折騰不知道要花多少時間,但如果有人遠程桌面幫忙看看,很快就可以解決。

有興趣的同學註冊看看吧?

註冊·一起幫(包含 邀請人:葉飛,邀請碼:1786)


計算機的水這麼深,反正我是不敢自稱大牛的,充其量算是一個勉強的「應用工程師」。

此稱號是1996年杭州大學的某教授給的,彼時我是18歲,第一次高考沒考上大學,在這位教授的公司里寫VB程序,公司在文三路。

沒考上大學是因為腦子笨,加上初中時誤入歧途學了點編程,從此以後除了編程和數學什麼都學不進去.....加上父母對考試成績不是很在意(反正沒為考試成績挨過罵)...所以連我爹工作的大學我都沒考上,照顧子弟錄取的分數都不夠。

希望在讀初中、高中的同學看到這篇回答一定要吸取教訓,一些應用層面的編程技術實在不值得用18歲以前的時間去學習,對於絕大多數人來說,考大學是王道。

我的第一個「老師」比我小3歲,我初中學編程的時候他還在讀小學,是他在父母單位機房教我DOS和Basic, 後來我們一起用C做了點小東西,比如一個叫做「戰斧」遊戲的外掛,通過掃描和鎖定內存值讓自己永遠不死。

和現在相比,當時自學編程要容易的多,最核心的原因有三個:

1.資料少

《電腦報》、《計算機世界》是我們為數不多的可更新的技術資料來源。網路?不存在的。因為少,所以珍惜,幾乎每一本書、每一篇文章都會仔細看,還做筆記,這是很深度的閱讀。而且這些技術資料相對現在某度不知道上的答案要可靠的多,基本上按照上面的做都會做成功。

還有一本《Microsoft DOS 5.0 User"s Guide》,英文版的,中學生能有什麼英語水平,但是那是唯一的一本DOS的書,只能一個單詞一個單詞地翻詞典,然後找一個本子抄一遍,再翻譯出來,給老爺子看哪裡翻譯的不正確。無意之中鍛煉了英語閱讀能力。

2.干擾少

當時沒有手游,單機遊戲都是靠朋友們拿著軟盤拷來拷去,很有限的幾個,也沒什麼意思。除編程帶來的成就感外,沒有其他任何有樂趣的事情,不像現在的小朋友,好玩的東西太多了。如果一定要有什麼干擾的話,就是每次月考以後被老師「羞辱」吧...

3.技術選擇少

編程語言方面除了C,Pascal,Basic其他選擇基本沒有,也不分什麼前段後端,選一個技術一門心思學就是了,不會猶豫半天學哪個技術更有前途。

中學階段就這麼過了,高考以後玩了兩個月仙劍奇俠傳,然後所有的(沒錯,所有的!)同齡朋友都上大學去了,本單位的子弟除我以外最差的也是CCNU,在家是沒法出門的,因為當時父母單位的生活區和教學區是在一起的,只要出門就有一大群比我考的好的人在面前晃悠!我就不提那些見面就問你考上哪個學校的人了....

家裡是沒法活人了....

好在那時候已經有了網路,電腦報當時有個BBS, 我就跑上去發了個貼,到現在都記得原文:

有個計算機技術人員(軟體硬體都湊合)想找份工作,有意者請聯繫(****@http://public.xx.yy.cn)

不到一天,就收到一封郵件,就是前面提到的杭大的教授,找我要了電話號碼,然後一個電話打過來,前面是寒暄,然後他問我:「VB會不會」,想都沒想我就回答「會!」,又問「什麼時候能來杭州?」,答:「2周後」。

其實哪裡會啊,趕緊去買了本《Visual Basic 3.0傻瓜書》在家猛啃,2周後買了張票就去杭州了。感謝當時單純的社會環境,所以父母也算放心。杭州東出站的時候是凌晨4點,有個叫程序的小伙(沒錯,他就叫程序)拿這張紙在出站口接我,然後打個車把我丟到他們封閉開發的房子里就回家了。話說他們真的挺放心的,幾台伺服器在裡面也不怕我搬走了。

第二天早上他們都來了,除了教授還有個電視台的傢伙,是浙大的研究生,當時我對他相當仇恨了,哈哈。第一個問題就問我「VB裡面怎麼定義全局變數?」,我趕緊摸出我的傻瓜書:「我查查」。這傢伙也沒吭聲,跟我一起查。

活還是得干,白天干不出來就晚上干,加班的概念是沒有的。別人做的快,我做的慢,那晚上多研究下是應該的。其實環境還不錯,撥號網路雖然慢,但是可以查資料,康師傅泡麵敞開供應。

後來系統資料庫從Access到SQL Server,可是SQL Server我不會裝啊,在上海熱線的IRC聊天室里提問(QQ群?不存在的),有個叫XiaoMa的大哥給我打電話,手把手教我,裝完都一個多小時了,想想那時候中國電信的長話價格,真是感動。那個浙大研究生也教我「如果你發現一段代碼需要到處複製粘貼,那就說明你可以考慮把他寫成一個函數」、「你這個表設計不符合範式,應該這樣做......」更過分的是當時對編碼規範毫無概念,文本框命名是Text1,Text2,Text3......,寫代碼的時候記不住怎麼辦,把UI列印出來放屏幕邊上,被老大發現了才糾正....我在想當時為什麼沒被打出去。

現在想想真心感謝這些貴人,對我這麼寬容,給我工作和學習機會。我大約花了三個月才能真正勝任我的工作,也是三個月以後才知道西湖在哪兒的,在此期間教授跟我說的最重的關於工作的話是「今天我跟X主任聊了下,X主任對現在的進度表示非常擔憂。」當時年輕不懂事,開發的房子里我一個人住,馬桶髒了都不知道刷,教授拿起刷子就開始刷,現在想想真是臉紅。有一次頂撞教授,教授當時沒吭聲,一言不發地走了,過了半小時給我打電話「小X, 就算我不是你的老闆,我年齡也比你大這麼多吧,跟你父親年齡也差不了幾歲吧?你想一想你對我說話的火氣是不是大了點?」,真是慚愧極了。

當時給我的工資是1500(我爹當時副教授工資也不過1200),可是白天他們都帶我吃飯,晚上一個人住在封閉開發的房子里,和女朋友偶爾打打電話,主要還是書信往來。所以基本上花不了什麼錢。寫到這裡我很懷念杭州的東坡肉,還有紅燒大排、片兒川...,杭州的炒螺絲是可以不用牙籤的。唯一不爽的是杭州人喝豆腐腦居然放醬油?!簡直不能忍!不行我必須現在下單買東坡肉。

直到現在我都對江浙人士抱有好感,與湖北人不同他們要簡單、溫和一些....算了,地圖炮打住。

當時做的項目是杭州西湖明珠電視台的OA項目(當時「中國黃頁」有一個小組在給他們做網站,唉!)折騰半年以後也就上線了,一邊干,一邊學。比如系統用了半個月以後綜合部的漂亮姐姐說:「小X,現在我每天打開日表都需要20分鐘」,「啊?不可能吧,我的電腦上是好的啊」,其實是數據量大了,表沒有索引。然後就一邊排查一邊知道了什麼是索引,簡直了。

大概過了四五年我跟杭州的朋友聯繫的時候,他們說那套系統還在用,又簡直了。

做這個項目掛名的的協作公司是微軟,電視台買了一整套他們的軟體,從Windows NT到SQL Server, Exchange Server什麼的。當時這些東西都比較新,所以他們的工程師隔三差五就過來給我們搞培訓,自己會了以後教授又安排我去給別人講課,包括浙江省的一些廳局,我信心不足的時候教授就鼓勵我「學會一項技術的最好方法就是講一次這個課」,當時的學員都比我年齡大,經常被他們調戲,好在這些技術都是新東西,他們都不會,所以也很和諧。微軟當時經常組織活動,比如全球開發人員大會,合作夥伴會議什麼的,還管不錯的飯,為啥我是軟粉?我覺得是吃出來的。

後來客戶提出要做一套基於瀏覽器的查詢系統,我們連概念都沒有,微軟就從上海派工程師過來支持我們,第一撥人教了我們半天CGI,沒搞明白,後來又派了個美女姐姐過來教我們ASP,教了半天,吃了頓飯,其實也還是沒怎麼學會,但是比CGI還是好學。

吃飯的時候,我很SB地問「在微軟工作工資有多少?」,感謝美女姐姐的正面回應:「其實也不多,6000多」。

直到這時,我才知道和他們的差距,而要進入這樣的公司,高中學歷貌似是不可以的。

金錢是個好東西,讓人明確地知道和別人的差距,才能有目標,才能有追求的動力和勇氣。

在杭州呆了大半年,加上受到這樣的刺激,過年以後沒多久就乖乖回老家考大學了。可能是見了更大的世界,不再覺得自己是天才,讀書要比以前用心一些,第二次高考成績也還算過的去,反正不是院子里最差的,加上杭州做的項目浙江省廣電廳給了個科技進步二等獎,證書上有我的名字,這也能加分的,哈哈。

因為有了前面的經歷,所以讀大學的時候略有不同,首先感受到的就是「窮」,因為那會兒我已經學會花錢了,老爺子一個月給的600的生活費根本不夠,《計算機世界》一周一期,得三塊,宿舍是不可能有網的,學校里能上網的地方收費10塊錢或者3塊錢一小時,10塊的是Internet,可以上國外的網站,3塊的只能上國內的網站了(其實改個IP也能上Internet)。後來在學校的IBM技術中心報名學習Lotus開發,50塊錢學費,機房隨時去,每台機器都是獨立公網IP, 17寸純平屏幕!哈哈哈。

所以後來想想得找個兼職工作,做家教我是不行的,後來在武漢熱線的論壇上看到街道口一個做Office培訓的公司招聘機房管理員(一個月600塊),就是學員在那裡練習的時候電腦壞了修下電腦,偶爾也輔導一下,沒課的時候過去。後來有一次華科的老師因事不能來,就讓我去濫竽充數講PowerPoint。好在教學經驗我還是有一點的,至少上台不怯場。後來他們看這小伙不止會修電腦,還可以上點課,課時費還便宜啊(華科的老師30一節,給我25我很滿足了,相當於當時的20碗熱乾麵),後來就在那裡講課了。

學校里的課程,除了高數、離散數學我補考過,其他的還算簡單,基本上也都能應付。編程類的課程基本上平時看看書就行了。和同學們的學習相比,有個好處就是以前有很多實踐中的問題在大學的課程里得到了答案,學習的方向和目的有點不同。

後來大二的時候,一個偶然的機會在楚天都市報上看到一個公司招聘ASP程序員,就在亞貿,於是就打電話毛遂自薦,被我混進去了。老規矩,學校的課表給公司,沒課就去。當時有個好處就是像ASP這樣的技術基本上我們的經理都不會,而且也懶得學,所以也給了我們很大的空間去做事情,不像現在技術成熟了,對開發人員有各種嚴格的約束和要求,這種情況下只要想把工作干好,還是可以學到很多東西的,薪水也不錯(可惜的是在家不小心說漏了嘴,從此每個月600生活費沒了,學費也要自己交了)。公司的管理也很粗放,項目交給你,給你配幾個人,你負責搞定就行。度過了無數個不眠之夜,晝伏夜出的毛病就是那時候養成的。

期間做了幾個項目,包括三峽財務公司的OA,湖南省輸變電系統的GIS什麼的,現在想想技術極其幼稚,但還好也都交付了,公司也掙了錢。重要的原因是當時的客戶沒有被慣壞,預算也充足。

大四和幾個朋友一起搞了一套叫做「中國因圖」的東西,就是互聯網地圖,跟目前百度地圖核心功能差不多,用Java Applet實現的(完全錯誤的技術路線),2000年左右基本上拿個BP就能找到投資,更何況我們還有產品。然後有個美籍華人給我們投了10萬刀,當時年少輕狂不知道錢難掙,長包了三星級酒店的套間做開發,還雇了幾個人做地圖矢量化的工作(就是對著印刷版地圖描圖),折騰到畢業的時候也賣了幾套出去,後來投資人看我們這麼燒錢估計也是怕了,就撤資走人了,樹倒猢猻散。

再往後就是畢業了,那年頭公務員不吃香,所以就一直在各種公司里工作,有做培訓的(算是老本行了),也有做開發和項目管理的。前些年還去某職業大學教了兩年書。再往後就自己開了個小公司,被各種客戶虐得不成人形,直到今年下定決心把開發業務都交給搭檔去做,自己參與一些前期諮詢和設計,或者在他們搞不定技術問題的時候幫忙想一些流氓辦法,撕不過客戶的時候去幫忙撕,其他時間主要就是在家帶娃了(雖然總是被老婆罵帶得不好,但和寫程序一樣有意思,都是自己的作品嘛),有空也學一些技術,特別是以前學的不紮實的技術(比如單片機?),順便想想40歲以後折騰點啥,目前還沒想好。

寫到這裡發現這20年都在折騰了,折騰真的很好玩。

真心想念當年一起學習、一起奮鬥的兄弟姐妹們。

真心感謝和想念在這20年里給我寬容、提攜、指點的老闆和前輩們。

就到這裡吧。十年後再來寫續集。

歡迎關注我的專欄(其實就是學習筆記):

換個姿勢學編程


伴隨我成長的編程書


我覺得我可以算是半個技術小牛了。

首先,有兩點很重要,刻意的練習和堅持。因為編程是一條很長的路。所以,先上我的GitHub(phodal (Fengda Huang) · GitHub)的截圖:

順便曬SegmentFault寫的《我的編程之路》(節選),希望能啟發你~~。

簡單介紹一下自己和目前的工作

我是黃峰達,常用Phodal這個ID活躍於網路~~。自小開始接觸軟體編程,畢業於西安文理學院電子信息工程專業,資深硬體愛好者,偶爾搞搞移動應用開發,人工智慧等等。喜歡寫技術文章,分享研發收穫,長期活躍於CSDN、SegmentFault、Github等網站。個人喜歡的語言是Python和JavaScript,但是從工作上使用的Java語言學到的知識是最多的。

現在是ThoughtWorks公司的一名軟體開發工程師,又稱為Consultant,主要工作是Web開發。至於工作的內容就不是很方便透露了~~。如果你熟悉我司的Martin Fowler的文章,你就知道我們是乙方啦。

詳細寫寫你是如何走上編程的道路

小學時,鎮上的學區(即鎮上的所有小學)會舉辦計算機比賽——雖然是山區農村,但是也要參加。那段時間,整天在學校機房裡玩DOS,不用上課,不用做作業——學生時代最爽的時期。

小學時期的比賽:

  • 四年級, UCDOS下的五筆打字比賽

  • 五年級,使用Logo語言的比賽。

  • 六年級,Windows 95、Windows 98上的Office操作比賽。

初一的時候就是QBASIC的比賽,初中的後來就是用小霸王(家裡窮~~,買不起電腦),用Game Basic——遊戲編程。當時年少無知,寫了各種Goto語句,覺得很屌。

高一的時候小霸王被玩壞了,基本就不玩電腦~~。高二的時候,在學3D遊戲編程。接著,家裡攢了點錢、借了點錢就給我買了個電腦。隨後發現GUI編程時候的需要更深入底層的基礎,就學Linux內核去了。在搞3D建模的時候,發現一個人搞3D遊戲的難度太大了,就沒繼續了。等高中畢業的時候,發現大學的計算機專業好像沒啥有意思的,就去學硬體了。

大學,就是各種焊電路了——最有成就的莫過於拿元件焊了個可以正常使用的電話。因為學校不好找工作的時候,投的硬體公司全都直接被拒了~~。然後發現軟體公司工資高,而且好找工作。我的意思是:不看學校,就改找軟體方向的工作了。

推薦一些書籍或者編程大殺器給大家唄,加 1W 個推薦理由

編程大殺器就是Growth,推薦新手程序員都去試試。

至於編程書籍,大家可以看看我的GitHub進階書單:GitHub - phodal/booktree: A Book TreeGitHub - phodal/booktree: A Book Tree。我寫幾本不錯的推薦給大家:

  1. 《重構到模式》 這本書的中文名字應該叫《重構到模式》!!!重構代碼到設計模式就這麼簡單。它開創性地深入揭示了重構與模式這兩種軟體開發關鍵技術之間的聯繫,說明了通過重構實現模式改善既有的設計,往往優於在新的設計早期使用模式。

  2. 《持續交付:發布可靠軟體的系統方法》 這本書講述如何實現更快、更可靠、低成本的自動化軟體交付,描述了如何通過增加反饋,並改進開發人員、測試人員、運維人員和項目經理之間的協作來達到這個目標。

  3. 《浮現式設計:專業軟體開發的演進本質》 浮現式設計是一種敏捷技術,強調在開發過程中不斷演進。軟體本身就不應該是一開始就設計好的,他需要經歷一個演化的過程。

這三本書很具有啟發性,大家有空可以去看看。

哪些好的習慣程序員值得擁有?

暫時,只想到了下面這三個:

  1. 使用快捷鍵。這是我到ThoughtWorks學到很重要的一點,以前在學校的時候偶爾使用快捷鍵。現在變成了一個快捷鍵強迫者,加上原本的打字比賽的時候練就的手速,操作起來就比較快。

  2. 寫博客。總的來說,寫博客對我的成長很大,不僅僅可以提高影響力,還可以改善技術人員交流不夠的問題。

  3. 寫腳本替換重複操作。這是我最近感觸最深的,以前能力不足的時候就只會手動去做,現在就開始寫腳本來實現功能。

應評論要求上一個之前的快捷鍵使用視頻~~~

視頻封面JavaScript 重構演示一—在線播放—優酷網,視頻高清在線觀看視頻

請推薦一些程序員專用的追妹子 or 漢子大法。

去看看我女朋友寫的《極客愛情》。

2016-03-26更新

-------------------

順便補充一下,我自己的成長四步曲計劃,現在已經是在第四步了啦。

著作權歸作者所有。

商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

作者:phodal

鏈接:晒晒我的成長計劃——寫在成為GitHub最活躍的中國大陸用戶 - Phodal - 手工藝人 - 知乎專欄

來源:知乎

第一步、做到你想做的: Tasking與學習能力

雖然這看上去是一件很難的事,但是也不是一件很難的事。這也不依賴於你是否對某一個技術棧的理解,這隻實際上只是學習能力的一種體現。

在扯這些廢話之前,先讓我們來看看我們是如何實現一個功能、應用的。這也是在Growth里提到的Tasking:

  1. 有一個明確的實現目標。
  2. 評估目標並將其拆解成任務(TODO)。
  3. 規劃任務的步驟(TODO)
  4. 學習相關技能
  5. 執行Task,遇到難題就跳到第二步。

以本文的寫作為例,細分上面的過程就是:

  1. 我有了一個中心思想——在某種意義上來說就是標題。
  2. 依據中心思考我將這篇文章分成了四小節。
  3. 然後我開始寫四小節的內容。
  4. 直到完成。

而如果將其劃分到一個編程任務,那麼也是一樣的:

  1. 我們想到做一個xxx的idea。
  2. 為了這個idea我們需要分成幾步,或者幾層設計。
  3. 對於每一步,我們應該做點什麼
  4. 我們需要學習怎樣的技能
  5. 集成每一步的代碼,就有了我們的系統。

所以,實際上這並不是考驗你技術能力的點,而是考驗你如何劃分任務和學習能力的點。在我不斷地實現一個個系統的時候,最後我才意識到了這一點——學習能力和Tasking才是最重要的。換句話說,你現在學會什麼並不重要,重要的是你以後有沒有學習的能力。

有了一直想著過安逸的生活,所以就會安樂的死去。不過反正人生在世,自己開心就行,不要管別人怎麼說。隨後,我發現大部分我想到的都可以實現。

那麼問題來了:

  1. 用鉛筆寫字也是寫,用鋼筆寫字也是寫,用電腦打字也是寫——到底要用哪個工具來寫。
  2. 用楷體來顯示也是顯示,用宋體顯示也是顯示——到底要怎樣的實現。

這實際上就是:用更好的方法來實現功能。

第 二步、用更好的方法來實現功能

對於這一步來說,有太多的東西值得去探索:

  1. 更好的架構
  2. 更好的工具
  3. 更好的語言
  4. 。。。

對於語言這一點上來說,Python和Ruby是兩個不同的極端,不過看上Ruby是繼承Perl的思想的基礎上,就不多說了。Python,一個問題只有一個方法;Ruby,一個問題有幾個方法。因而在這兩個語言來,想要快感就用Ruby,還有近年來流行的Scala。想要便捷就是Python,不容易出現別的問題。

而這些只是我得到的結論,每個人都會得到不同聽結論的。因而,探索是一件很有意思的事~~,如圖:

所以實際上,這一步是去探索一個更廣闊的天空。我們需要知道不同的語言和技術棧的一些優勢,了解並知道如何去應用即可。

如,以前我用的是Django的RESTful方案Tastypie管理來解決問題。後來,又發現了Django REST Framework,又用它實現了原來的邏輯。大四時,我發現PHP語言中的Laravel在RESTful這件事情上,似乎很有表現力,並且更容易「部署」——LNMP。接著實習時,發現Java在部署上更不錯,它只需要一個Java包。而這個過程,只是出自於部署方面來考慮問題的。

即使現在我是一個使用Node.js的人,我還是覺得Java的打包就是優勢。

在探索的過程中,我們就知道挖掘技術哪家強

第三步、Better Code Architecture

在實際編程的過程中,我們就會遇到很多代碼問題。在這時,我們儘管有好的架構,然而並不能從根本上解決問題。只能保證從藍圖上看是對的,而不能導致質量問題。

代碼的腐爛都是源自於平時的工作習慣問題,而在很多時候是需求導致的。這些看上去就是噩夢——加班,沒有時間學習,效率低。沒有時間學習,效率低,加班。

而對於代碼質量來說,也是如此的一種循環:

而在這時可以學的東西可多了,如Bad Smell,重構,設計模式,編寫測試等等。

最後,我只得到了一個短句:

重構到設計模式

好的代碼是重構出來的。

再往深層次之上就是架構,而架構往往是一種不容易得到的。儘管我看了一系列的書:

  • 《領域驅動設計》
  • 《企業應用架構模式》
  • 《領域特定語言》
  • 《恰如其份的軟體架構》
  • 《面向模式的軟體架構》
  • 。。。

最後,我還是依據一本書的書名,才領悟了一本書的書名《浮現式設計》。也是同樣的話:

好的架構是演進出來的。

而這些都依賴於我們的實踐,聽信別人說的話,並不能讓我們學會什麼。只有自己做了,才知道什麼是好,什麼是不好。

第 四步、代碼之外:Growth Hacking

當我們有了一個好的Idea,一個好的架構以及一份良好的代碼,並且我們還能將其執行下去。那麼,我們還需要什麼?

這也是我現在正在嘗試的領域,也是過去我想做的,但是卻找不到一個好的方向。後來,想了想就有了Growth這個APP。畢竟從一個領域到一個新的領域,最好是通過現有的領域作為過渡。

自媒體正在最近幾年內崛起,同時由於聚合網站的存在,信息在不斷地爆炸。一個好的作品、文章要傳播起來已經越來越越難了。

在現有的領域裡,知乎、微博、公眾號已經開始在壟斷人們的碎片時間。一個東西可能在火了幾天之後,你就很難得到他的信息了。

所以在適當的時候去推銷,在適當的時候持續下去。

也歡迎圍觀我第四步的成長過程,關注我的微信公眾號(搜索Phodal)。

http://weixin.qq.com/r/mnVYQHrEVicprT4j9yCI (二維碼自動識別)


程序員應該是現在這個時代的木匠,傳承匠人精神的職業。我們是實打實的手藝人。為什麼程序員普遍收入較高?因為這是這個時代需要的手藝,是真實產出的職業。你要問程序員怎麼成長?那就看看歷史上的那些手藝人行業是怎麼成長的就可以了。廚師,木匠,行行業業的匠人,我們也是其中一員。

我向來尊敬所有的手藝人,每每看著他們,就一股親切感油然而生。他刨木,我寫方法,他組合部件我組合類,他畫草圖我寫設計文檔,這有什麼不同?完全一樣。你去看看visio,有設計類的圖,有設計傢具的圖。我們是一類的。木匠成為魯班之路,和IT新人成為大牛之路又會有什麼不同?

木匠學徒從打零工開始,跟著師傅學習,年復一年的練習,看他人的作品,自己敲打自己的作品,把自己的作品給師傅品評。直到最後,了熟於胸。程序員也要年復一年的聯繫,看他人的源碼,自己實踐自己的代碼,把自己的作品交給客戶,交給github的同僚去品評。直到最後,了熟於胸。

我是手藝人,手藝人如何成長?千百年來老祖宗已經指了一條明路,無需去尋找什麼捷徑,這條明路走下去就是了。


每一個大牛都是從菜鳥成長起來的,所以首先要有信心。我自己肯定不是大牛,不過做了十八年軟體開發,有些經驗可以分享給你:

1. 眼光比努力重要。先做出正確的選擇,然後再不懈努力。當然,名利不代表正確。

2. 快樂比名利重要。求名者未必得名,求利者未必得利 。就算得到,其代價也可能超出你的想像。所以,順本心行事,不要勉強自己,錯過的未必是壞事。

3. 主動一點,不必客套。技術圈遠比其他行業簡單得多,如果你想結識某個高手,直接問就是,不需要那麼多鋪墊,大家都這麼忙,誰有空跟你客套啊!

4. 先深、再廣、再深。新入行可著一門鑽研到底,不要學猴子下山。在這個基礎上再廣泛涉獵,相互促進。最終在兩三個互補的領域成為高手,形成協同優勢。

5. 不要從眾。技術人有自己的獨立判斷是至關重要的,無論是對人對事還是對技術,千萬不要人云亦云。

6. 不要走別人的路,創新最重要。


感覺大牛和學霸學神美女一樣啊


記得幾年前看到金山毒霸的網頁被黑了,黑客在上面留了ID,結果有人搜出來這個ID兩年前在百度上問"如何成為黑客"

當時就覺得這個人大寫的NB啊


這是一段十多年的旅程。我先來說一下我的技術能力,以證明我應該算是技術還不錯。

我是勺子的創始人(http://shaozi.info)。這是一款純互聯網產品。這款產品從資料庫、後端、前端、iOS、安卓都是我一個人開發的,之後為了增加產能,招了兩個新手程序員,其中一個領悟能力比較好,我一手把他從入門安卓培養成了安卓、iOS都會的移動端前端程序員。

勺子這款產品是2014年開始做的,幾個月就完成了。這款產品所用到的技術和語言有:

  • 資料庫:MongoDB
  • 搜索引擎:ElasticSearch
  • 伺服器:CentOS,Nginx,NodeJS,Express框架
  • 伺服器日誌分析:ELK stack
  • 緩存:redis
  • 網頁前端:AngularJS
  • iOS前端:Objective-C(做的時候swift坑還太多)
  • Android前端:Java
  • 各種輔助管理工具:git,gulp等等

當然,我會的不止這些,我還會:

  • 入門級別的機器學習:使用python做regression,classification,sentiment analysis,knn等。
  • C++、Ruby on Rails、Swift:都開發過成熟的,production級別的產品。
  • react,rn這種也做過一個小項目。

中間插播一句。產品和產品之間,質量是有區別的,光說產品做了多少,產品質量本身很差的話等於耍流氓。對我做出來的產品質量有疑問的同學,可以下載下勺子app,看看質量如何~

最後說一下年齡,今年我31歲。

好了,接下來就說一下我是如何從0成長到現在這個水平的。

----------------歷史分割線--------------------

我是從高一暑假開始學習編程的,這已經是十多年前的事情了,那時候,家裡有一台電腦是很稀奇的,我都是在學校的機房做的練習。我在暑假報了一個c語言學習班,從此踏上了技術的不歸路。當時考完一個c的合格證書之後,高二高三因為學業的問題,沒有碰編程。大學本科第一志願就是報的復旦的軟體工程。

現在回顧來看,大學的學習對我的編程能力影響極大,當時我們所學的比較重要的學科有:ICS(introduction to computer system),編譯原理,數據結構與演算法,離散數學,操作系統,密碼學等等理論性的東西。當然,我們也學過很多實踐性的東西,比如java語言,電子商務網站製作等。但是,正是這些理論性的東西,猶如地基一般,給我的編程能力打下了堅實的基礎。現在的編程相對以前已經很好上手了,有些沒有這些理論基礎的,照樣能做一個App出來。但在實際編程過程中,你會遇到很多稀奇古怪的問題,有些你能google得到,有些google出來你也看不懂。這個時候,如果你對計算機系統的內存緩存結構比較了解,對編譯系統的流程比較了解,那很多問題都會引刃而解。

大學畢業後,我去了一家遊戲外包公司做程序員,當時用的是C++語言,開發XBOX360,PSP,WII上面的遊戲。其實在剛畢業一點多的時間內,我也還是對編程懵懵懂懂的,做很多都東西是連蒙帶猜。在工作之餘,我回家會學習Ruby On Rails。直到工作後的一年半,我突然感覺自己就頓悟了,感覺程序已經脫離了語言層面,在我的腦子裡面變成了計算機運行流程和內存分布。

隨著我之後學的語言越來越多,我越來越熟悉語言的共性。而隨著我所了解的框架越多,我也越能學習到不同作者的優秀思維方式。現在學一個新的技術就很快了。

總的來說,還是靠時間堆積起來的。我相信我在軟體開發上面所花的時間應該已經超過一萬小時了。

-----------建議分割線-------------

最後,我認為只分享自己的經歷是毫無作用的。每個人的能力、性格都不同,每個人的目標也不同。比如我的目標是做一個很好的互聯網產品。產品發展的好的話,我有錢了可以請比我更nb的人才來幫助我一起做事情。而有些人的目標是成為某一特定領域的大牛,那就沒必要像我一樣把技能點點得如此分散。我來說一下我對it初學者的建議。

如果你只是想在這個行業工作,賺口飯吃,還是很簡單的。只要報一個現在熱門語言或技術的培訓班,然後找一個工作慢慢做就行了。

如果你想成為技術大牛,有幾個是必不可缺的:

  • 數學好: 數學好應該是自然而然的,不是你學了數學能夠提升你的邏輯思維能力,而是數學好不好能夠用來驗證你的邏輯思維能力好不好。
  • 英語好:除非某一天機器翻譯已經完美,不然英語決定了你的開發水平。對於開發者來說,google,stackoverflow已經是必不可缺的工具了。你要能夠準確地用英語描述你的問題,從而在google裡面搜索。你也要能夠看懂stackoverflow裡面別人的回答。到了更後面的階段,你都是需要自己直接看別人英文的文檔。
  • 擁抱各種技術:不要只盯著一門技術,每種技術都有自己的優缺點,只有你去了解他們了,你才能有比較,同時,這些技術也會提升你在自己主要技術上面的能力。

剛開始的時候,我和很多初學者一樣,會犯很多很多很傻逼的錯誤,例如分號沒寫,變數名拼錯等等。我認為這是學習的必經之路。要對自己有耐心。

無他,唯手熟爾

補充:

看了評論,有些朋友問到數學要多好的問題。我是這麼看的。軟體開發分為兩種,一種是工業型的,一種是研究型的。我們拿造一輛汽車來比喻。研究型的就是你自己研究打造發動機,工業型的就是你買來各種部件,組裝成一部汽車。

對於軟體開發來說,研究型的就是你自己開發演算法,比如圖像識別中,你改進了某一個演算法,讓準確率提升了x個百分點之類的。工業型的就像我們現在做的各種網站、app,你所要做的就是找到各種好的組件,把他們拼在一起。工業型的對數學的要求就小。

PS.

最近剛開始寫個人博客,有興趣也可以隨便看看哈:https://www.zhuxichi.com


等我兩年!


前言:

這是IT修真院自問自答系列第三篇,同樣是乾貨和硬廣混雜。IT修真院系列 - 收藏夾

第一篇對IT職業做了一個相對深入的介紹,給了想從事互聯網職業的人一個了解各個職業的機會,已經有4000+贊了,我想是真的幫助到了很多人。 IT行業都有哪些職位,初學者(0基礎,新人)該如何選擇,才能夠快速進入這個行業? - xdyl 的回答

第二篇是對敏捷開發和項目管理做了一介紹,這篇貼子還沒寫完,其實它的價值遠遠大於第一篇走馬觀花的介紹。只是大家還沒有到能夠理解敏捷開發的時候,所以我想了很久,決定暫時不寫了。

互聯網公司的「敏捷開發」流程是怎麼樣的,每個職位的角色和分工是什麼? - xdyl 的回答

這是第三篇,寫這個貼子的動機是因為,在修真院有不少人在問,我要學到什麼程度才能找到工作,我是零基礎啊,有沒有視頻和教程可以教我。有哪些IT初學者(新人)成長為技術大牛的真實經歷? - xdyl 的回答

我想了想,解釋這些問題,其實比不上講一下我朋友「暗滅大人」的成長經歷,這樣新人們就會對自己未來幾年內的大致走向有了一個對比和期待,方向有了,路也明確了,就看你想在什麼地方停下來了。

順手推薦一下修真院的專欄,各種IT行業的真實小故事。IT修真院 - 知乎專欄

PS:本文依然是不對任何人負責,觀點依然偏激而且絕不客觀。

=================我是今天很開心的分界線====================

正文

第一章 定調

IT技術是以年來計算的,為什麼會是以年來計算,等你們看完就會明白一點點。

做技術的,會就是會,不會就是不會,做不得假。

這條路從來都是苦逼的路,他需要付出的努力有可能遠遠超過你之前自認為很努力的程度。

做技術發不了大財,但是正常生存略有富餘不是什麼難事。

同行不同利的道理也適用於做技術,同樣是做Java的,同樣是三年經驗,有的人可以沖月薪20K,有的人只能13K,時間越長,差距越大。

80%的人都會在剛開始走彎路,特別是前兩年都會養成很多不好的習慣,錯過了自己成長最快的時間段。等到了兩年之後,薪水上去了,能力跟不上,高不成低不就,也變成老油條了,沒有了對技術的執著和熱情,根本放不下手段去重新調整自己的心態,重新去培養自己的能力。所以,前半年,或者是一年,或者是兩年,特別特別的重要。

目前絕大多數的培訓機構,都沒有真正的項目經驗,出來以後很難真正的承擔開發工作,這裡有一道非常明顯的溝壑。北大青鳥和達內在業界的口碑都談不上好,大部分人都是需要進入到各種小的外包公司,折磨個一年到兩年左右才出來的。

第二章 暗滅大人的故事 求學

暗滅大人98年高考失敗,並不甘心重新復讀,因為不想讓自己的人生過重複的生活,所以直接在鄭州讀了自考。自考的是電子技術專科,和計算機並無太大關係。

3年過去了,總算順利畢業,然後繼續報考本科,本科選了一個計算機網路,所學的內容基本上都是信號系統之類的,只有一本計算機網路原理和操作系統算是沾點邊,寫代碼什麼的基本上神馬都沒有。

這個時候暗滅大人已經有了寫代碼的想法和慾望,自己折騰了點VB,學了點Sql,學了點VC,基本上什麼東西都寫不了。

離暗滅大人高中畢業已經是6年了,由於是自考,基本上沒有人教,全是靠自己自學。

之後暗滅大人決定考研,第一次考的時候因為離錄取線差了1分,本來以為沒機會了,然而當時的鄭州大學有一個神奇的中奧班,可以用去澳洲留學的名義去讀碩士,也可以選擇不去,畢業證學位證和統招一模一樣。考慮了一陣,還是決定去上了,於是又讀了3年的碩士。

但是碩士之間基本上全是在寫論文,在SCI上被收錄,是基於Agent的軟體開發,當時暗滅大人對於數據挖掘啊,分類演算法啊,機器學習啊都是一知半解,畢竟底子差了一些。只是接觸了一些更深層的概念,知道了學術圈是什麼樣,這個時候,寫代碼的經驗,仍然是0.

求學經歷到此結束,暗滅大人資質一般,讀書的時候也並不是特別用心,也是經常玩星際CS之類的各種遊戲。

各位小夥伴可拿這段經歷跟自己對比一下,記著,暗滅大人這時候寫代碼的能力為零。

只是有了演算法導論,機器學習,數據挖掘,計算機網路,數據結構的基礎,而且百分之八十是自學。

這時候已經是了2007年。

第三章 在編程門外徘徊

臨近畢業,要找工作的時候,因為心裡太慫,所以找到了當時一個研究所,這個研究所呢,面試的時候問的問題是:戰略和戰術的區別是什麼,以及對於台灣局勢的看法是什麼。。

So,輕鬆過關,上手的工作也很簡單,深圳那邊一家公司,做了一個平台化的軟體(那時候還沒有Sass的概念),我們這邊的研究所負責部署。

所以跟著深圳那邊的部署工程師,去了一個地市的財政局,跟他們溝通需求,然後通過平台界面定製化App,偶爾寫一點點Sql語句和JS。

這樣很快四個月就過去了。到此為止,暗滅大人還是一個小白,沒錯,雖然本科是計算機網路,碩士是計算機軟體與理論,也工作了四個月,但是在寫代碼上,還是一個小白。

只是熟悉了怎麼跟客戶打交道,用戶的需求是什麼樣,如何溝通,以及一個軟體的開發是怎麼樣的,有種隔岸觀火的感覺。

第四章 出入江湖

暗滅大人決定去北京,首先投奔了他的老同學。兩個人在北京租了一個月450的民房,就這樣開始找工作。

老同學一個月工資6000多,比暗滅大人早去了三個月,做的是自然語言處理,還算不錯的職業。暗滅大人只能找一些寫代碼的編程工作,兩周面試了14家公司,但是因為之前沒有工作經驗,每一家都不太合適。

直到去了一家叫中體動力的,公司比較大,願意培養新人,又是碩士,才勉強被錄用。So,你可以看得到,有項目經驗,找工作真的是比較難。

可是難的還在後面,之前在學校接觸Java的時候,暗滅大人只是一直在搞什麼對象,類,後來NND去了公司才發現。我靠,Myeclipse是什麼鬼?跟Eclipse有什麼區別?

Tomcat又是什麼東西?什麼叫Deploy?JSP呢?JSP是什麼?Struts和Spring倒底是個什麼東西!

暗滅大人感覺自己完全傻掉了,剛開始優化了一下SQL,剩下的就是不敢跟其他人請教,怕被看出來自己是一個菜逼。

上班的地方離住的地方要2個半小時,所以暗滅大人每天都要跑5個小時,第一次通宵做事就是在暗滅大人發狠的時候,一個人在公司里加了一夜班。

有不會的,去網上求各種大牛,找人幫忙看,折騰了半天才發現是自己的Tomcat根本沒啟動成功,種種問題,特別簡單的,會卡很久,要學的東西也很多。那家公司也是從前端到後端都要會。

就這樣,在三個月的時間裡,暗滅大人學會了Tomcat,學會了Linux命令,學會了Spring,學會了Struts,學會了JSP,學會了Hibernate,學會了JS和Html,學會了Mysql以及連接Mysql的客戶端等等各種東西。

沒錯,這個就是在08年1月份的時候,當時的Java工程師要學會的東西。想想暗滅大人當時只是一個孩子~沒有人指點,完全看不懂什麼叫IOC,資料庫連接池也不明白,就這樣硬生生的理解了業務需求,做了點簡單的項目。

親們,你們知道暗滅大人那三個月怎麼過的么?現在給你們同樣的時間,你能否做到這一點?能否在這麼短的時間裡,從一個一無所知的小菜鳥,變成一個懂點東西的小菜鳥?

如果你又是完全的零基礎,人又比較笨,又沒有恆心和毅力呢?

所以有很多人問,自己學到什麼地步能找到工作,覺得自己要解決的問題難,暗滅大人都是笑笑而已,心裡卻在默默的想,難個毛啊,難毛線啊,你們Y的有了問題還有人教,老子當年有問題都不知道該找誰問好么?

你們現在還有人告訴你們,什麼該學什麼不該學,老子當年知道個毛線。

這三個月算得上是築基,基礎還是爛的一塌糊塗。然後,暗滅大人決定換工作了。

原因很簡單,他雖然菜,可是接受不了資料庫的欄位用首字母的拼音縮寫做,更接受不了Url的跳轉鏈接參數也是拼音縮寫。--對了,那時候他連Url的格式都不懂。

第五章 繼續學習

朋友介紹了一家公司,叫做什麼來著忘記了。新工作新環境,薪水不變,還是5K。

只是做的業務比之前複雜多了。

嗯。無限立通,跟移動打交道,做短彩Wap和PushEmail的。

公司的主要骨幹來自西門子--現在回過頭來看,來自西門子的那批人還是不懂互聯網的。

在這家公司里,開始接觸到了一些不同的東西。

比如說。Memcache。

比如說。Maven。

比如說。WebService。

比如說。多線程。

比如說。調試代碼。。。

比如說。發布部署。

嗯。就是這樣的。很多東西都暈乎乎的,但是這個時候暗滅大人已經開始注意性能和代碼的抽象了。

這要得益於海淀圖書城。經常去翻,總能看得到一些似懂非懂的東西。

像重構,最佳實踐等等。所以會有一些概念,自己寫代碼的時候也會有一點感覺。

然而無限立通的系統架構體系,簡直是一塌糊塗,版本管理沒法說。

20多個省,沒有人知道哪個省用的是哪個版本。為每一個省都要單獨開發一套系統,因為每個省的介面是不一樣的。

暗滅大人對這個問題困惑很久。為什麼不能用所謂的Facet做一個統一的介面層呢。每個省的介面不統一,沒關係。我增加一個適配就好了。我自己統一處理成內部的數據格式,整個後面都是統一的啊?

嗯。當時看了不少設計模式,只是一直沒看太明白。現在對有些設計模式也有點暈,然而已經不是特別在意了。

還有當時的部署都是手動執行,寫上1,2,3,4.

那個時候特別困惑。為什麼不能是自己直接寫個腳本,把1234寫到Shell腳本里去?

這些問題都沒有答案,總之,暗滅大人覺得自己寫出來的不是代碼,而是一堆垃圾。所以他決定繼續離職了。

這個時候,在這家公司已經待了四個月,薪水仍然是5K。

親愛的小夥伴們,從暗滅大人畢業到現在,7個月,他幾乎每個周末都泡在圖書城,晚上也會經常看書,加班更是常有的事兒,7個月里從一個什麼都不懂的小菜鳥,變成了一個有了一點點追求的小菜鳥。

你們還會抱怨自己現在遇到的問題難么?想想這7個月,馬不停蹄,一直在不停的學習,成長,可是暗滅大人能夠成長為一個架構師嗎?

到現在為止,你們是否知道了,一個後台工程師要學會多少東西,做多少項目,才可以成長起來?

第六章 拜入名門

08年8月份,這是對暗滅大人非常重要的一年。很多次暗滅大人回過頭來想,假設他當年沒有機會進搜狐--那麼結局會是完全不同。

這也是暗滅大人後來對於編程的認知的出發點--如果沒有一個人能夠在你前期給你正確的指引,你在彎路上多走3~5年是很正常的事兒,很可能就此就走錯了,再也回不來了。這不是危言聳聽,80%的人都是在走錯誤和迷茫的道路。

這是暗滅大人自己招募團隊,見了無數的面試的人的時候才感受到的。

先繼續說暗滅大人的故事。想想,一個工作了半年的小夥子,菜的不行不行的,在搜狐如日中天(08年的時候果斷是一流的互聯網公司,國內頂級)的時候能進到這樣一家公司,招募他進去的Leader要有多大的眼光和魅力。

暗滅大人想了很多次,都覺得自己做不到,風險太大了。這也是暗滅大人後來對新人格外好的原因,因為他當年拿到了這個機會,在別人的一念之間,左右了他自己未來幾年的走向,所以他在自己做leader的時候,更願意給別人機會--可是事情並不完全是這樣的。

接著說暗滅大人進了搜狐。哇靠,這簡直是一個截然不同的世界。

視頻點播次數+1,這麼一個簡單的功能,竟然TMD的出了問題了。

有人點播,就在點播次數+1. 就這麼一個簡單的功能,結果在搜狐當時的數據量下,就是出問題了~

為毛?原因很簡單,在把已有的點播次數取出來,+1,再寫回去的時候,已經有另外3~10個請求把數據再次請求回來,重新寫進去了。所以會出這種情況。有時候,15300次,然後就變成了15299次了。為毛?就因為同時有很多人在訪問。

嗯。這是打開了一個新世界。一個新窗口,原來高並發是這樣的,原來海量數據是這樣的。原來資料庫是不允許執行這樣的Sql語句,原來代碼不可以這麼寫。原來要努力寫出優雅的代碼。原來不僅要會Maven,還要懂得Maven的原理。

原來搜狐會經常組織技術分享,原來要監測伺服器的內存,原來要會抓跑,要會解決內存漏,原來要看GC日誌,原來要懂得GC演算法。

原來要把一個項目拆成多個服務,原來一個大的系統會有上百個服務,原來還要有雙機熱備份,原來還有動態語言,原來可以自己改開源軟體的代碼,原來Memcache要部署好幾台,原來還有Comet這種東西,原來Erlang的Actor模型是這樣的。

剛進搜狐的時候,暗滅大人的老大說,一年左右的時間是正常成長起來的時間。嗯。小朋友們,你們看到了沒?在搜狐的大大眼裡,我還需要一年的時間才能成長為一個能夠獨立負責項目的工程師。

你們現在學點皮毛,就以為自己的路走到頭了么?

其實暗滅大人當時希望的是三個月可以做到這一點,但是實在是太難了。因為缺的東西太多了,身邊的牛人太多了。

現在想來。這就是為什麼暗滅大人一直能夠理解很多人沒有機會的原因。不是在這種應用場景下,不是有這種強烈的業務線的需求,不是有搜狐當時如此重視技術交流和分享,不是肯給一年的時間讓新人成長起來。

暗滅大人恐怕跟他後來見過的很多工程師一樣,工作兩到三年或者是四年,從來不知道什麼是Memcache,也不知道什麼是分散式,更不知道什麼樣的Sql語句能寫,什麼不能寫,負載均衡怎麼做,不知道。要用Cookie還是Session,哪種方式好,不知道。敏捷開發是什麼?不知道。

很慶幸,在當時的那個氛圍里,遇到了一個非常好的項目。就算你在這種公司,也必須是要遇到好的項目才可以--身邊坐的某某項目的同學就沒那麼幸運了。。

然後暗滅大人差不多是花了6個月~7個月的時間,能夠獨立完成項目了。這中間經歷了什麼樣的辛苦和努力,自不用說。曾經為了一個推薦好友的方案,一個星期內拿出了7種不同的方案設計對比。半夜12點等待發布,發布沒問題才去睡覺,這些都是無比普通的節奏。

這就是程序員的生活。親們,你們看到這兒,還要繼續做程序員,或者是做一個程序員的大牛么?

如果還想,那麼我告訴你,還差的遠~

儘管在搜狐過的很好,可是暗滅大人,又有點不安份了。

第七章 離開師門,下山闖蕩

暗滅大人發現,身邊的人太牛了。完全看不到自己有勝過他們的可能性,因為人家是正統科班出身,工作經驗又都在四年到五年甚至是七年。自己本來就是一個半吊子轉行,工作經驗才一年多一點,怎麼比?

自己的優勢是什麼,劣勢是什麼?該從事哪個行業呢。暗滅大人想了很久,最終覺得,自己應該從事演算法。

工程師,程序員,可能寫代碼寫到了三十歲或者是四十歲,就會慢慢的不行了。但是演算法不會,暗滅大人見過史忠植老師,白髮蒼蒼依然活躍在人工智慧界。這會是一個越老越吃香的行業么?

而且,在搜狐上多是偏重工程,而年少無知的人,總是希望改變世界。總是希望做出來更智能的項目,所以暗滅大人很奇怪,為什麼現在的項目都沒那麼智能,為什麼沒有分類,也沒有聚類,也沒有實體識別這些東西呢?是不是暗滅大人應該轉行偏重於演算法,這樣才會越老越吃香?

他覺得自己很菜,但是感覺搜狐做為全國一流的互聯網公司,應該在這方面非常非常厲害,可是身邊並沒有太多這種演算法牛人。於是他決定離開,去招一個偏重於演算法的工作-就像是他的同學從事的工作一樣,每天從Twitter抓數據,做聚合,做分類,分詞,做語義分析。

以及這個時候對創業已經有所耳聞,更想去一家創業公司。這個時候,他在搜狐已經工作了近一年。

算起來,是有一年半的工作經驗了。他換了另外一家公司,一家證券公司旗下的做證券資訊分析系統的小公司。

去的時候只有5個人,薪水定到了12K。在此之前,在搜狐自己折騰了三個星期左右,做了一個小小的通過分組名自動識別好友的推薦系統。

嗯。這就是在搜狐的經歷,這段時間對於暗滅大人來說,是一個質的飛躍,完全開啟了一個新的世界,沒有這段時間的磨練,我想暗滅大人再過兩年,或者是三年,都未必能夠做的好。不誇張的話,暗滅大人是幸運的,而當時有多少工作了半年的新人,沒有機會接觸這些呢?

這也是暗滅大人後來一而再,再而三的願意給新人機會的原因。中國的互聯網大公司,都有自己的編碼規範,架構體系,最近幾年雖然一直在做分享,但是比較偏重於中高端,很少有告訴程序員剛開始就應該怎麼走的。所以有無數的人在不入流的公司里掙扎,徘徊,沒有人帶,自己壓根就不知道自己的水準,不知道未來的方向,更不知道該向哪個領域努力。

所以各位看官們,如果你們打算從事IT職業,你們會怎麼辦?這並不是僅僅入門的問題。入門之後你會發現程序員也分成三六九等,很多時候不是你能力不夠,而是你沒有機會去證明自己。

而那些覺得通過簡單的培訓就能找份工作就達到自己目標的小夥伴們,你們看到了這裡又有什麼感受。程序員是一個按年來計算的生物,前期,你需要的更多的是紮實的基礎,強大的自學能力,這樣才能持續穩定的發展下去。

一年半的時間說長不長,說短不短,這個時候的暗滅大人獨立完成項目沒問題,知識體系也豐富了很多,受益於搜狐兩周一次的技術分享,也對很多框架的原理了解了不少,團隊合作經驗也不錯,對於上線故障的處理和追蹤也是家常便飯。

暗滅大人還是一個菜鳥,你們也可以在這個時間點,自行對比一下。

第八章 小試牛刀

來到了這家證券公司旗下的小創業公司。暗滅大人前半年時間都投入到演算法領域裡去了。CRF看了好久,打出來的論壇資料都放滿了一抽屜,經常坐公交的時候都在看,回家的時候還在想,本來英語就不好,這玩意又只能看英文,所以苦不堪言,不僅要看,還需要做出來真正的項目。

這時候接觸到了很多搜索相關的技術。Nutch抓取,Spotsig的去重演算法,Hadoop的MapReduce,Cassandra的設計理念,正文的自動提取,新聞的自動分類,實體的自動識別,分詞和詞性標註的演算法和實現。

嗯。這些都是在這家小公司積累下來的。差不多是半年左右的時間。然後這個時候,暗滅大人發現了一件事情,這家公司的工程經驗,跟搜狐比起來,差太遠了。

而暗滅大人本身的性格,又是那種不會等著不說,骨子裡喜歡去推動一些事情的發展,哪怕這些事情不歸他負責,可是他還是決定把自己在搜狐學到的東西在這家公司里重新搭建起來。

於是這是一段真正的打磨,憑著記憶,將自己原來成熟的開發流程,技術選型,代碼規範,輔助工具,監控體系等等一整套的東西,從無到有的搭建了出來。這中間遇到了多少困難,無論是技術上的還是跟同事之間的爭執都不必多說,總之是對自己所有的知識體系的一個洗禮。

這時候,慢慢的暗滅大人成了公司里的架構師和小組leader,負擔起了公司里的疑難問題解決和架構選型規劃,以及開發流程,Bug修複流程等等。代碼依然在寫,不過比例有所變動。

親們,看到這裡,是否大概明白了,架構師是怎麼出來的。時間大概是在兩年半或者是三年。差不多做了大大小小20多個項目,不停的維護,修改磨練出來的。

所以你們做好準備了么?再反過來講,現在的你們是怎麼對自己的未來做規劃的?

三年左右他的薪水也從12K到了18K,原來的薪水是5K~6K,基本上保持三年翻三倍的比例。

嗯。再對比一下親們自己的時間和薪水,再想想那是在10年和11年左右的薪水。

第九章 不安份的橫向擴展

這個時間對於暗滅大人來說,有兩種選擇,一種是往深度發展,像之前在搜狐的工程師一樣,一種是橫向發展。

暗滅大人這個時候已經對產品這個行業躍躍欲試,指手劃腳了。所以他在這個時候,順手學了點Drools,又學了點angularJS,重新學習了Erlang,又折騰點Thrift,就暫時在技術上停了停,開始轉到產品和運營。

這部分暫時跳過不談,暗滅大人有往全棧發展的趨勢,總之是自己折騰了一個小網站,從無到有,前端到後端,產品設計到推廣都接觸了一些。

有時候暗滅大人也會想,假設最初沒有那麼不安份,安安靜靜的繼續做一個程序員會怎麼樣?

那個時候不想做程序員,是因為覺得產品經理很多時候做的不對。

所以親們,如果你們到了工作了3年取得的這個成績,可能比暗滅大人技術上牛,或者是比暗滅大人在技術上差--但是我想大多數人應該比暗滅大人牛才對,因為你們比暗滅大人聰明,暗滅大人只是刻苦而已。

你們可以在這個時間點上繼續努力,超過暗滅大人。加油~這個時間點大概持續了兩年左右。

第十章 新生

這時候,暗滅大人已經工作六年了。薪水到了22K。這個薪水在那個時候,已經是比較低的了。因為公司的緣故,漲薪並未很高,暗滅大人幾乎每年都鬧一次離職,薪水在30K的Offer拿了幾個,但是總是因為暗滅大人領導的緣故,留了下來。

直到最後暗滅大人覺得自己真的應該出去走走了。

找到的架構師,年薪是40萬上下,也慶幸於是互聯網的泡沫。

在這家公司里,又是從無到有,從頭開始搭建一家公司的完整體系。這個時候招聘團隊的時候,越來越發現,太多的人被坑了。

很多人工作了五年甚至六年,甚至七年,都停留在傳統的軟體開發 方式上,無論是視野,還是技術深度,都差了好遠好遠。

有無數的人,都在自己的小小的世界裡,壓根不知道現在有什麼技術,哪些是合理的,哪些是不合理的。他們的眼睛被封起來了,看不到世界是什麼樣子,他們的思維模式被凍結了,根本不知道怎麼去思考,他們的時候被浪費掉了,錯過了最好的時機,他們的潛力被掩蓋了,對於公司來講,已經沒有價值了。

舉個例子來說,你已經工作4年了,還是只懂的一點點技術的皮毛,怎麼招你,怎麼發展呢。

這個公司,對於暗滅大人來說是新生,具體原因不必多說,單純的技術積累的話,只是對於微信開發的流程更為熟悉,了解微信開發流程。

嗯。剛剛少說了幾句,在行業上,對於金融也算是比較了解了。程序員也是需要有一定的行業經驗。

暗滅大人在這家公司遇到一個工作了四年的小夥子,以前是外包公司,不會打日誌,遇到問題不知道怎麼差,不懂什麼叫負載均衡,不知道什麼是REST,也不會看伺服器的性能指標,不會打包部署。

就是這樣。我可以一點都不負責任的說,如果你們沒有能力去到一個相對規範的大公司(我現在都覺得,已經很少有公司像當年搜狐一樣有那麼強的技術氛圍了,好像大家都突然間變的功利起來了),你們在四年五年後能跟我說的這個小夥子一樣,就已經是不錯了。

可是這樣能繼續往上走么?不可以。

親們,看到自己未來的歸宿了么。

第十一章 CTO

在那家公司待了不到四個月,因為種種原因,暗滅大人投身去了P2P。在這家公司,年薪是50萬。

P2P都是豪,有了自己的辦公室,開始帶的團隊也多了,之前都是帶後端,現在是前端,後端,產品,UI,QA都負責。

在這裡對於P2P行業的積累更多一些,管理做的更多,已經基本上不碰代碼了,注意力在於招聘,規劃,流程,監控和業務等等。差不多待了近一年的時間。

然後又去了另一家公司,薪水到了60萬。同樣是技術總監,只是團隊到了60人,不再負責產品團隊。

這就是基本上暗滅大人的成長經歷。前三年在技術上拼的比較凶,跟著兩年橫向擴展的比較快,最後兩年轉了管理比較多。

嗯。這個暗滅大人就是我。我自己本人,我知道自己在技術上仍然比較菜,那幫搜狐的兄弟比我厲害的多了。

可是即便是這樣,還是能看到很多很多人走了太多太多的彎路。就拿我之前提過的小夥子,他有幸遇到了我,我告訴他以後的路怎麼走,缺什麼,該補什麼,一年之後他接替我做了P2P公司的CTO,之後又去了另一個比較大的公司做了架構師,薪水在30K,而一年前他的薪水只有15K。

篇後語

我之所以寫這篇文章,是因為看到總有太多人在問,我學到什麼程度能找工作,我覺得這個太難了,我學不會。或者是太累了,太辛苦了。

別的不談。每天兩個小時的單次車程,早7點出發,晚12點到家,加班熬夜流鼻血是經常的,我現在還保留了四張不同時間點鼻血直流的照片。

寫代碼,做技術,沒那麼簡單,沒那麼容易。做為新人的人,首先要找到對的人,走對的路,找到家好的公司。

如果你有了這個機會,仍然不夠努力,那沒辦法。這取決於你自己,我只能說。

親們,我把我知道的告訴你們,希望你們不要走錯路。

但是不要認為別人幫你都是理所當然的,不要把你能不能學好歸結於別人能不能教好。

有那麼一個人,能夠指引你入門,告訴你怎麼走,已經是千恩萬謝了,別再期待別人抬著轎子你坐裡面了。

還有。我也根本談不上是什麼技術大牛,整篇文章都是我編造出來的,我的真實身份是一個網路寫手~

正直純潔善良的網路寫手~

========================我是寫的好多好累的分界線=========================

技能樹.IT修真院 http://www.jnshu.com

「我們相信人人都可以成為一個工程師,現在開始,找個師兄,帶你入門,學習的路上不再迷茫。這裡是技能樹.IT修真院,初學者轉行到互聯網行業的聚集地。"

加QQ群:

1群2000人 185354188(已滿)

2群 1000人 424031650 (已滿)

3群 500人 493806441(已滿)

4群 500人 580626624 (已滿)

5群 500人 604640559 (已滿)

6群 1000人 254078081(已滿)

7群 200人 5628***59(已滿)

8群 1000人 516***591 (已滿)

9群 200人 515693173(招募中)

微信公眾號:葡萄藤IT技能樹

IT修真院系列 : IT修真院系列 - 收藏夾

專欄:IT修真院 - 知乎專欄 各種IT行業的真實小故事


看了一圈,果然沒人敢說自己就是大牛。

像編程這種需要學一輩子的行業,估計不會有完全意義上的大牛,相對來說站在金字塔一層的人倒是很多。

相比於剛接觸編程的人來說,我也算得上大牛了,可實際情況我僅僅做了三年的android開發,java算是入門了,android算是中級往上。

所以,沒事少看別人的雞湯,別人煮了再多的雞湯,也跟你沒關係,真的有興趣就一直幹下去,總有一天你能成為別人眼裡的大牛。


先存著,過幾年來回答這個問題~


推薦一本書《瘋狂的程序員》,會有啟發的


推薦閱讀:

知乎上有哪些有趣的程序員?
學機械的看不到前途想轉 IT ?
在IBM工作是怎樣一番體驗?
如何理解下面這幅關於js的圖?
大學有儘力讀,卻發現找不到工作怎麼辦?

TAG:互聯網 | 程序員 | Android開發 | IT行業 |