很多人覺得大公司的程式碼很牛逼,在大公司呆了很長時間,其實除了一些不錯的中介軟體程式碼牛逼之外,一線業務程式碼也是各種水平都有。但是在大公司除了程式碼之外,其實還有更值得學習的東西。

主管的週報,領導的演講,大牛的分享

首先,主管的週報,甚至主管的主管的週報一定要看。一方面是看看上層是怎麼進行體系建設的,上層寫週報時,主要關注哪些事情,哪些指標,下一步要做哪些事情,其實這對自己的工作是一個指導。另一方面,看看老闆們是怎麼組織自己週報中的內容的,看看他們週報的結構,對自己今後寫類似東西有幫助。

領導的演講有時間要去聽一聽。週報是可以花時間打磨的,而演講基本上沒有太多時間思考,只能事前做充足準備,這兩者還是有區別的。聽領導的演講,除了關注內容本身,主要是要看看領導如何把一個複雜的概念講明白,這一點其實非常重要。如果對比過馬雲和馬化騰的演講,就會發現馬雲的演講大部分人都能聽懂,而馬化騰的演講就只有一小部分人能聽懂。

大牛的分享,這個有時間也可以去聽,最好找那種和自己做的東西比較相關的去聽一聽。內部分享很多都是乾貨,都是別人一路走來踩過的坑和總結的經驗,非常值得借鑑。並且除了聽分享本身之外,你還了解了同公司在做這個領域的人和團隊,以後可以多多交流。

學習大牛解決問題的思路和精神

去大公司,有一個好處就是身邊有很多優秀的人,大牛如雲,經常和他們在一起處理問題,潛移默化就能學到很多。

有一次,由於業務複雜和歷史原因,我需要在系統中接入兩套登陸方式,而這兩套方式使用的session都是各自實現的,我雖然用了很多hack,最後還是卡在集團安全庫的csrf token上,就是檢驗不過去。

由於必須用集團安全庫,所以我幾乎要向主管彙報這個方案不行了。但是,彙報之前,我找安全同學問了一下,說明了一下情況。說來也巧,那個安全同學剛好也在北京,手頭事情也不多,就跑到我的工位上來除錯了。上來就直接斷點到庫原始碼裡面去找原因,我心想,能找到原因又如何?難道還能自己改一下庫裡的程式碼重新編一個?但是集團是不允許的。

不過我還是陪著他一起看,他看原始碼的速度和思路都很好,能夠在紛繁複雜的原始碼中一下子找到問題的焦點,就好像在百萬軍中直取上將首級一樣。就這樣,搞了半個小時沒結束,他有事先走了。要知道,在大公司,有一個人能花半個小時來幫你解決一個問題,那是多麼難得的一件事情。

在他的影響下,我繼續看程式碼,找原因,心想最後彙報的時候好歹也能說得更加明白一點。突然我欣喜地發現,安全庫裡面竟然隱藏了一個hack方法,通過反射可以自定義token檢查方式,我立即把這個事情和那個安全同學說了,他說可以這麼做。這件事情就這麼解決了,並且這個解決方案還成為了一個標準,以後其他人碰到這個問題,就按照這個方案來解決。

從此以後,我就不再害怕讀原始碼,甚至刻意去培養這樣一種能力,因為所有問題的答案,在原始碼中都能找到。這也算是高階程式設計師的一個基本能力吧。

當然這只是一個例子,大牛解決問題的思路和手段還有很多,都值得我們去學習。

學習大公司的技術體系建設

很多人認為大公司人多,能夠有時間和精力把技術和產品做到非常精緻。其實不然,大公司雖然人多,但是業務也多,最後分到每個業務的人數也就幾個人。而且公司對KPI的要求是成倍上升的,簡單說今年營收目標如果是一百萬,明年就是一千萬,後年就是一個億。

那麼這樣一種壓力下面,肯定不能堆人去解決,因為人數不可能進行成倍增長。所以公司會做一些事情,能夠讓大家在做業務的時候個個都以一敵百。這件事情就叫體系建設。

說具體點就是把一些重複勞動的工作標準化,平臺化,自動化。在大公司上班,很重要的一個感受就是平臺很多,流程很多。建立專案,申請程式碼庫,提交構建,申請釋出等等,都需要在特定的平臺進行,而且一些關鍵步驟還需要審批。

這些平臺其實有幾個作用:第一,把大量重複勞動自動化。這不僅能夠節省時間,更能夠避免出錯。第二,建立標準,拉平剛入職程式設計師的水平。第三,卡口設定,統一管理。這一點舉一個簡單例子。比如有一個公司常用庫爆出了安全問題,這時候就可以通過釋出平臺在釋出前進行檢測,沒有更新庫的程式碼不讓釋出。這就是卡口的作用。

當然,這樣做也有一些不好的地方。首先,強依賴平臺,平臺掛了全公司不能釋出。第二,業務方對平臺原理不瞭解。這也是為什麼很多大公司工作幾年的人,出去面試,除了用過公司裡面幾個平臺,其他啥都不會。

當然,技術體系建設中,平臺只是一個方面,還有一些框架的建設也是很重要的一部分。公司自研框架能夠讓我們專注於自己的業務,同時試錯成本也會大大降低。

當然不要以為這些只有大公司才有,小公司其實也有,如果沒有,可能是等著你去做。

好了,本篇文章就分享到這裡了。如果有正在學java的程式設計師,可來我們的java技術學習扣qun:59789,1510裡面免費送java的視訊系統教程!