我的程式設計人生

weixin_34146805發表於2019-01-16

忽然間想起了4年前,那是2014年的8月,我再次畢業。感謝兩次上學的城市福州。

畢業後我又離開了這座城市,回到了之前工作的城市廈門。報導到一家專做軟體外包的公司。先到之前同事家落腳,只待公司召喚報導。

晚上我和朋友一起喝酒,擼串。

朋友問我,打算怎麼辦?我說之前的工資都交給學校了。同事說,他們大部分都在廈門付了首付買了房,在考駕照,哥們得好好幹。

是啊,我說,現在從頭開始,一定得好好加油。

過了幾天我遇到了在上海上班來廈門出差的朋友。

他興奮地和我說,上海有個網際網路公司剛被併購,缺研發工程師,是個機會,邀請我前往。我喜歡網際網路,之前還做過站長,反正現在是零,不如一試。那天晚上我們打著計程車在廈門城區轉了幾圈。9月我買了一隻皮箱,裝著夢想,坐上了廈門通往上海的火車。沒有臥鋪,硬座的感覺也那麼好!

坐了一夜的火車,當我走出地鐵站,外面的陽光是那麼耀眼。

我拖著皮箱,走在長江路上,看著似乎比廈門要高又多又厚實的樓群。從那時,我從零起步,一腔熱血,正式開始了我的魔都生活。

至此,我的職業生涯,軟體開發行業到現在已經超過5年。從程式設計師到架構師、半個技術管理者,以及創業者和作者之路。

現在回過頭看,從當年的選擇技術這條路,做了幾個明星級產品,雖然苦,卻也有樂趣,也給自己帶來了一些價值。

興趣驅動

我的高中時代,親人送我一本basic語言書。後來我翻了翻,發現很有趣,幾行程式就可以讓計算機做題,實現比人能夠完成更強大的應用,還能顯示不同的圖形。

我的家鄉在農村,那時候電腦還是“新東西”沒什麼概念,少有人裝潢電腦。興趣驅動我尋找有電腦的崗位,那時打字影印社也不多,終於找了一家店,我不和人家要錢,免費幫助人家打字,只要讓我用機器就可以。我家離他不算遠,大概5公里。就這樣,在暑假,我來來回回十幾次,不僅學會了BASIC,還學會了五筆字型,UCDOS和WPS。

那時候最喜歡看到紅藍相間的UCDOS介面和WPS的純藍介面,看到香港金山和求伯君幾個字,很是佩服,希望將來有機會也成為一個程式設計師。

到了大學,我學的是計算機,除了功課之外,還有在校外網站和網路維護。

所有的這些初心,都需要有興趣驅動,否則是堅持不下來的。

如果你只想多賺點錢生活,開始可能幹勁很足,但我擔心你可能堅持不了多久。

當有了興趣驅動,你會有熱情,有方向,更具有信念。此時的你應該專注在目標上。

清晰的目標

目標是你在一段時間內要達成的結果。比如說在一段時間內學好一門語言。

要注意基礎的積累,寫程式需要有嚴謹和邏輯思維。否則寫不出好的程式碼。

我記得有一次,有一個同事寫的程式碼邏輯存在問題,迴圈成了死迴圈。這段程式是後臺的批量下單,結果顧客在同一天收了幾次貨。好在,客戶並未多收,禮貌給拒絕了,才沒給公司帶來損失。

所以,你要訓練自己有一個嚴謹的態度和思維方式。基礎紮實的人

你可能是那個“不適合程式設計的人”

在程式設計的時候,是多多少少處在一種在困難中解決問題的情緒,你會覺得,你會努力,再大的努力去解決它,不管它有多棘手,還是有多簡單,你都會想辦法做好它。你除了自己努力還要有三五好友,多出去走走,沒事喝點小酒。

然後你才能從悲觀到孤寂後收穫那滿滿的成就。

在二到三年的時間,我曾遇到過嚴重的瓶頸,程式設計很苦逼,每天都面對電腦,和人打交道少,加班嚴重等對自己的思維干擾。

我覺得寫程式很累,有點不願意幹了,想轉行,可是又沒有想出要做什麼。也有人說:“你很聰明,做點別的吧”,後來我不斷的拓寬自己的深度和廣度,看書,實踐,溫習演算法,資料結構。

後來我嘗試寫書,從感覺到容易,再到寫起來難,再到寫出來,有沒有書商願意出版。出版社說你寫吧,我們給你出。再到出版了,有沒有人願意買,你又擔心賣得好不好。

如此這般,經過幾關,終於從別人的眼光裡跳出來,做回了自己。

人適不適合,只有自己知曉,或者自己願意不願意堅持。

透過現象看本質

寫程式經過四五年了,應用級別越來越複雜,使得開發強度越來越大。有的人也可能會產生厭倦。你可以這樣來做:

這時不妨嘗試一些新語言,或者檢視底層的原始碼,比如C或者PHP的原始碼。看得多了,你就不是隻知其然,而知其所以然了,理解了底層機制後就可以觸類旁通,對應用級開發簡直就是小菜一碟。

還有learun的開源平臺上也有很多優秀的原始碼可看。在learun前幾代有learun framework v6等開源軟體,這些平臺為什麼能快速崛起?這些平臺的本質其實是相同的,但是能做龍頭卻是鳳毛麟角。

停下來多想想,你的核心競爭力是什麼?是和別人一樣的Coder?

向上,向左還是向右?向上,是架構師。向左產品經理,向右轉行?

實踐出真知

當你累積了一定編碼量,以及應用開發經驗後。你所在的公司可能會推著你向技術經理或架構師轉換。

技術經理會承擔一些專案、產品計劃,而架構師會多承擔技術上的深一層,比如大併發,高負載、可擴充套件等能力。

你可能要面臨著一堆冗餘的爛程式碼,不同架構的系統,經常當機的網站等等棘手問題。我們需要根據這些情況,一邊要讓車正常跑在路上,還要邊快跑邊修車,這個難度顯而易見。

人生就是一個難題接著一個難題,需要我們用極大智慧來解決,來克服,包括我們自身的改變。

非權力領導力

程式設計師轉型管理,在此方面應該是偏弱的。因為創造環境是需要更多的與環境和人互動。而技術者更多擅長的是與計算機互動。與環境互動,與人打交道所需要的技能和與人機互動所需要的技能是完全不一樣的。

在此方向,我也曾遇到過,哪個工程師”揹著手上廁所,就是不扶你“的情況,有的同學投機取巧,寫爛程式碼,遲到早退,屢教不改被我開除,還跑到百度知道上罵我和我的書不好云云。

還有經常事必恭親,程式設計師盼著我來救火,上司看著我像頭牛,動不動就自己拼了命。結果上下不討好,搞得自己精疲力盡。

所以,對於程式設計師來說,成為技術領導的道路真心不太容易。下面是我的事後諸葛亮:

第一步,你需要建立在整個團隊的威信。比如在某個時候上線,一個人遇到了問題卡在那裡,在這個關鍵時刻,你走上前,幾分鐘解決問題。另外,能夠搞定問題,但不要陷入細節,這些是你團隊的問題,不要讓猴子跳到背上。

第二步,招合適的人,對路的人,招比自己年輕且優秀的人。你需要側重的是讓大家的方向感,目標感。還有自己與同級、上級的溝通技巧。

除了是技術大牛,你還得是情商、管理大牛。這條路,我和電腦前的朋友們共勉。

相關文章