我如何把薪水從 50人民幣/天 提高到 100美圓/小時的 (1)

此文來源於個人blogphp

這個標題看起來有點像標題黨? 好吧, 我必須在全文開始以前就澄清一下這一點, 這是千真萬確的事實. 我本能夠只把一些結論貼在這裏供你們參考, 可是那樣顯得太生硬且沒有說服力. 因此我決定把整個故事告訴你, 並在每一篇的最後總結出結論, 這樣會更輕鬆愉快一些. 我不敢說這個經歷是否可複製, 可是我相信若是你的目標是作一個優秀的軟件工程師, 軟件諮詢師, 或者是 freelancer的話. 它應該會對你有一些啓發, 或者說借鑑的意義. 好了, 就讓咱們開始吧.html

zealot.jpg

故事開始是在差很少六年前, 那時我還在大學, 和大多的學生同樣, 天天玩玩星際, 打打籃球, 看看妹紙, 固然也幫系裏寫寫程序(Java). 一樣和大多數無知的學生同樣, 都會犯一些認識上的錯誤, 好比, 我當時真的認爲 Java 很酷。java

直到有一天,不經意的看到一個視頻 是 DHH 用 Ruby on Rails 15分鐘創建Blog的視頻 (不能訪問youtube的朋友能夠看 youku 上的版本 ), 我被這個視頻深深的震撼了, 實在是太cool了, 連續播放了5, 6次, 注意觀察着每個細節, 從操做系統, 到編輯器, 到每一行代碼和命令, 一切都是那麼陌生而又新奇...(若是我沒記錯,我第一次看愛情動做片的時候都沒有這麼仔細和認真)。程序員

接着立馬下載了Rails(on Windows,當時仍是1點幾的版本),並在噹噹訂購了上面惟二的兩本關於 Ruby 和 Rails 的書 "Programming Ruby中文版""應用Rails進行敏捷Web開發"編輯器

接下來的好幾個月, 很是單純, 看書, 敲代碼(書裏的代碼我來回敲了至少有5遍,我幾乎能夠把那個「書店」的程序揹着敲下來), 除了看書, 我還訂閱了幾個很少的Ruby/Rails Blog, 學習一些關於 Ruby/Rails 好的實踐. 這個過程是痛並快樂的,那時我幾乎無法請教任何人(我嚴重懷疑我是學校第一個學Rails的), 除了問人, 那時連搜索的資料都沒多少. 如今回想一下,其實我走了不少的彎路,若是換做如今,我相信這個學習的時間能夠再大大的縮短的.post

hardworking.gif

差很少自學了有5-6個月, 並本身敲了個論壇和博客程序後, 我決定出門去找個實習的機會. 看看真正世界的工程師是怎麼玩的. 這種感受很強烈, 就像我初中玩星際時, 除了和同窗玩局域網, 老是想上戰網上看看別的高手是怎麼玩的. 若是記得沒錯, 那時我纔剛剛上大三, 決定這麼早出去實習實際上和家庭也有必定關係, 我迫切的想要自立. (具體的緣由 is a secret)性能

我所在的城市只有兩家用 Rails 的公司, 我投了其中一家。沒想到直接就中了, 緣由也很簡單. 他們歷來沒有期待過能找到一個懂 Rails 的人, 他們都只是想的招進來再培養. 既然有個現成的, 那確定得要了. (至今這種狀況在不少地方都很廣泛)學習

50.jpg

那個美女HR給我說得很清楚,我還沒畢業, 因此只能按照實習生的標準給我發工資, 算下來也就是50人民幣一天. 07年成都的物價仍是蠻低的, 50一天基本能夠吃飽喝足了. 記得當時還簽了很多文件, 我也沒太注意細節, 只是不斷的確認工做內容是寫代碼,不是援交什麼的就好。如今想起來,我當時確實想多了, 50人名幣一天作援交, TM會有人會作嗎? 至少應該60嘛.google

辦好入職, 來到辦公桌, 下載我要作的第一個項目, 這個項目是一個社交應用,一個同事, 讓我看看代碼, 不懂的地方問他. 下載代碼的時候心裏很是緊張和激動, 但願看看運行在真實世界的代碼到底長什麼樣.spa

jy.jpg

結果當我仔細翻看代碼後, 大失所望, 這個代碼基本違反了全部我在先前學習到的最佳實踐. 我以爲這個是有難度的, 不亞於用槍兵甩地刺, 不亞於甩狙爆3個頭, 不亞於藍胖子連續10次出四倍.... 我沉默了好久, 在思考是保持沉沒,仍是去找同事問個明白,最終,我仍是鼓起勇氣,決定去和同事表白 ... oh, 不是,是說出我真實的想法。

輕聲的走到同事旁邊, 低聲的說道: "你好, 有幾個問題不太明白想請教一下. 請問爲何model不申明 has_manybelongs_to 的關係呢, 這樣就能夠用 user.posts 而不用本身寫SQL來找了啊? "

同事: "哦, has_manybelongs_to 這種東西沒什麼用, 影響性能, 你不知道嗎? 你沒用過 Hibernate 嗎? 」

兩個反問句直接塞住了個人喉嚨, 我保持沉默無言以對, 少時緩和後又接着問下一個問題...

我: "那我想再請問一下, 爲何這個地方全部的邏輯都放在 controller 裏呢? 而 model 徹底是空的, 這個地方的邏輯是否是能夠移動到model裏去會更好一些?」 其實我略微有誇張, 嚴格來說, model仍是有兩行代碼, 並不徹底是空的:

class User < ActiveRecord::Base
 end

同事變的很不耐煩道: "這個你不懂,等你工做幾年有經驗就懂了." ...

這回答讓我愣在那裏久久回不過神來, 第一次感覺到, 原來真實的社會這麼恐怖. 當我意識到個人問題不受歡迎時, 我比較自覺的回到了本身的座位. 心想之後和他當不了朋友了, 至少基友是確定當不了了.

boss.jpg

接着, 我把項目的幾乎全部功能都跑了一遍, 驚奇的發現, 它盡然能跑, 並且基本的功能也都實現了. 心裏忽然開始糾結一個問題, 究竟是能跑就夠了? 仍是隻能跑還遠遠不夠呢? 還沒等我想清楚, 公司的老闆(男)忽然叫去旁邊的小房間:

問道: "代碼都看了吧? 你以爲代碼寫得如何?"

我內心犯着嘀咕, 我是應該吸收剛剛說實話的教訓呢, 仍是應該繼續不撞南牆不回頭呢? 我猜若是得罪了他, 可能明天就不用來上班了, 短暫的糾結後, 我仍是決定說實話, 若是在一個不能說實話的地方呆着工做, 還不如早早回家洗洗睡了.

我硬着頭皮說: "我以爲這個代碼寫得不是太好, 還有不少地方能夠改進的空間, 好比 ... 好比..." 我不停的在屏幕上比劃着。「我在想, 若是我是客戶可能不太能接受目前的這個代碼." (我認可, 我當時說話很委婉, 其實我當時是想說 "The code is shit!" . 但, 即便是說真話, 也要用正確的方式. 否則我估計我真能夠捲鋪蓋回家了.)

老闆聽了之後很是吃驚的看着我. 眉頭略微鎖緊, 還直視着個人雙眼. 你沒猜錯, 就和青春基友偶像片裏演得差很少. 我當時很是緊張, 隨時準備"落荒而逃"...

忽然, 他大聲道: "你說的太對了,客戶目前就是對代碼的質量很是不滿意. 在這個代碼的基礎上改 bug 和加功能已經顯得很是的吃力和緩慢. 雖然它如今能跑, 可是維護性已經極差了."

聽了這番話, 心中大石落地, 原來他不是要和我搞基, 我自做多情了... 但同時剛剛內心的疑問也獲得了答案. "代碼只是能跑是遠遠不夠的, 它必需要容易維護 (結構清晰,易讀,易改)."

他接着說: "正好客戶如今剛剛 hire 了一個在美國的獨立諮詢師叫 Tim, 遠程參與到這個項目來對項目作大規模的重構. 這個工程師很是有經驗, 他如今已經50多歲了, 你願意和他一塊兒參與到這個項目的重構中嗎?"

我一聽很是驚訝, 能和這樣優秀的且有經驗的人一塊兒工做是我求之不得的. 並且 50 多歲應該不會有被潛規則的風險吧, 況且他還在美國. 其實當時心裏仍是頗有一些不安,以爲本身經驗還不足,不知能不能和這樣的牛人一塊兒工做,但最終仍是硬着頭皮答應了。

接下來的時光 ....

working.png

多是我這輩子學習效率最高的時光, 接觸了一大堆之前都沒怎麼聽過的概念, TDD, Continuous integration, Pair, Scrum, Refactor, Deployment... 這裏面任何一個單獨的概念都足以寫好幾本書, 並夠我研究上好一整子. 但惋惜的是沒有這麼多時間讓我先看完全部相關的書, 再開始幹活, 因而邊幹邊學成了我惟一選擇. 先知道一些粗淺的概念, 而後開始幹, 經過 Tim 的反饋再結合本身遇到的問題, 而後針對性的看書和 google 資料.

100.jpg

如此反覆, 慢慢我已經能夠基本跟上 Tim 的節奏了, 他也愈來愈喜歡我(不是那種喜歡). 並給了我很是不錯的評價, 客戶也所以很是開心. 這讓老闆對我另眼相看. 幾乎快丟掉的一個項目盡然被挽回了. 因而我很快獲得了加薪. 若是我沒記錯, 是增加了一倍, 達到了100人民幣一天. 聽說這已是公司給我破例了, 由於實習生是拿不到這個數字的. 我當時真的很是開心, 我能夠不須要老媽給我一分生活費了, 這意味着我某種程度上自立了, 最重要的是我以爲我真的學到好多東西, 我作出的貢獻獲得了認同.

這裏讓我簡單的總結一下第一次加薪的緣由吧:

  1. 代碼僅僅能工做是遠遠不夠的, 它必須優雅易讀且易維護. 能讓代碼工做的人這個世界上太多了, 你放心吧. 絕對不缺乏你一個, 就連 model 裏只有兩行代碼的項目, 它不也能夠工做嗎? 你要想變得更有價值, 那麼你必需要作到, 不只讓代碼工做, 並且要寫出優雅易讀且易維護的代碼.

  2. 在工做中和同事必定要說實話, 可是說實話必定要注意方式 不少人以本身不撒謊爲"藉口", 就經常赤裸裸的說出一些很讓人難以接受的話, 傷人無數, 還自覺得以爲這是正義的. 其實你錯了, 說實話也須要正確的方式, 特別是在你和其餘人合做完成項目的時候.

  3. 不要指望看完了書再開始作事, 邊學邊幹才是高效的學習方式 我愈來愈以爲這是惟一的學習方式了. :p

  4. 工做方式和流程很是重要, 特別是當你和其餘人合做的時候 不少程序員一提到流程二字就不削一顧, 認爲本身是 geek 是hack 怎麼須要談論這種東西. 再加之衆多諮詢公司近幾年狂炒這個話題, 確實讓人聽着就有點反感. 拋開這些讓人不愉快的表面, 本質上, 一個團隊要想作好事情,好的流程就是必須的. 除非你永遠都一我的工做.

  5. 掌握一門相對小衆而又不那麼過小衆的技術, 對薪資是有必定的幫助的 雖然追求小衆不是我當時學習Ruby/Rails的緣由, 可是不得不認可, 它是一個結果. 個人確也所以收益, 這是一個客觀事實. 若是以我當時的水平, 我是寫php或者java, 那麼我根本不必定能拿到這個實習的機會.

好了, 第一次提薪就講到這裏, 100人民幣/天 不算多, 可是對於07年的成都,和一個實習生來說已是很讓人知足了. 什麼? 還不夠? 別急, 咱們下回接着講. 看看咱們怎麼到 100美圓/小時的.

你能夠訂閱個人blog feed 最快獲取推送, 或關注個人 weibo 和我更多的交流.

相關文章
相關標籤/搜索