做主程序員是怎樣的體驗?

做了兩年遊戲伺服器開發,依舊徘徊在業務邏輯上。

想成為一名主程序,不知道主程序需要會哪些東西。

是不是每個主程都有自己的框架?是不是要熟悉各種技術的底層內核?

各位前輩,我想了解的是需要哪些技術才夠支撐起一個主程。


你想成為技術負責人是好事,說明你是一個有事業心的人,如果真的想成為技術負責人就該賣力工作,多解決工作中實際問題,做到比別人業務更熟練,然後先成為骨幹,再有合適的機會成為主程。

自己工作中出成績,比你寫什麼框架都強。別搞反了,成天把時間費在和工作無關的事情上,耽誤了本職,最終給別人留下一個:知道的挺多的,可惜工作不突出,做東西又慢的印象。

見過的凡是得到提升任命的主程們,無不是出色的解決了工作中各種實際問題,或者優化了性能,或者降低了整體開發成本,引入更多自動化機制,或者解決了效率問題。他們都是主動在工作中爭取承當更大責任的人,不是成天鑽研各種虛無縹緲的東西的人。

怎麼爭取承擔更大責任呢?一句話,快,做東西要快,別人做兩天你做一天,天下武功唯快不破。時不時告訴主程你已經做完了,接下來做什麼?多問幾次,然後主動跟他提,哪塊還需要搞一下,你想把它搞一下,不然以後XXX。

承當了更多責任的時候,就可以象主程提建議說自己這邊事情太多,能不能有1-2個實習生或者新人。然後從帶好實習生和新人開始,多為組內培養人才,進而成為組內骨幹。

最後謙虛謹慎,等待時機即可。

以前一位朋友是某團隊技術負責人,產品上線前兩天發現重大設計問題,機制考慮不周到,不是簡單的bug,時間又是個deadline,他和另外一個同事連續奮戰三十多個小時重寫了數個相關模塊,最後成功上線了,沒提倡你象他一般加班,身體還是首位,但是在有限的合理工作時間內能否保持他那份持之以恆的衝勁來工作呢?(PS:人家是三十多歲的年紀了還那麼拼)

世界就是那麼殘酷,你需要和別人搶工作,請用實際工作證明自己的能力,而不是一個人躲在出租屋裡擺弄一些自己覺得高大上的小玩具。

------

註:樓下說,只寫引擎不寫業務,只寫低層不寫邏輯,我告訴你,任何一個團隊所有程序員都是這麼想的,但那麼多程序員,主程該分誰寫這些低層呢?讓誰寫對項目穩定有利,讓誰寫最可靠呢?第一是業務骨幹,第二是他自己。你如果哪天成了主程,自然可以自己想做什麼做什麼,但如果連業務骨幹都成為不了,怎麼去「只寫低層」 呢?

註:技術當然要學,個人當然該自我提高,這方面不用我強調,是個合格程序員都會自我提高,我是讓大家別忽視和你自身利益最相關的本職工作,而一味把時間投入到一些虛無縹緲的東西里,而忽略了項目本身對人的鍛煉,以及對個人價值的直接體現。

最後:要成為主程,先成為主程的得力助手,要成為業務骨幹,先成為業務骨幹的得力助手,職位這種東西要講天時地利人和,但先成為一個業務骨幹,一個主程的好幫手,卻是完全可以憑藉你自己的努力做得到的。

別總等著別人給你鍛煉的機會,每個人都想要有鍛煉的機會


為產品負責!為產品負責!為產品負責!

主程意味著你不僅僅是寫業務的程序員了(是的,主程寫框架?主程很多時候還是在寫業務邏輯的),你手下可能有至少一兩個程序,你也要為他們的代碼負責,要能夠發現他們的bug,有最壞情況的應對方案。天下武功,雖說唯快不破,但是穩也是非常重要的。

成為主程後,還會承擔相當多的溝通工作,所以為溝通能力也很重要。

最後,不斷學習才是正道。

見過很多優秀的程序,你會覺得他們天生就是做程序的料,這種人遲早都會成為核心或者主程。然而有些人就是沒發入門,可能祖師爺沒賞飯吃吧

所以努力學習,沉下心來,有潛力的,成為主程或者技術總監,只是時間問題。如果沒有潛力....


深夜失眠,也來稍微補充一些。

想從新人逐步成長為主程其實就是不斷的在團隊中擴大自己影響力的過程。

什麼是影響力?我認為就是話語權。有些人說話,即使是對的,也會被人各種挑戰,有些人說話,即使是廢話,也會被各種人視為真理。

除了老闆領導這些天生自帶影響力光環的角色,想在一群平級的同事中建立影響力,搶奪話語權,只有一個辦法就是:超出預期

有個新特性,團隊中沒有人沒有處理過,你說你來搞定它;

有個疑難的bug,大家推推搡搡,互相甩鍋,你說我來看看;

有一段屎一樣的代碼,維護起來很蛋疼,但重構成本太高,出了問題還會背鍋,你思考清楚後,主動向領導申請用自己的周末來嘗試重構,經過充分自測後上傳;

美術策劃同學,在工作中的一些環節效率低下,且經常出錯,是研發流程中的一個瓶頸,主動嘗試製作工具優化流程;

。。。。

只有不斷的,持續的,諸如此類的超出預期。才能在同輩中脫穎而出,成為一個有影響力的開發,機會到來之時,主程就是你了!


如果還在業務邏輯 那提主程還早 首先你要成為核心。如果小公司不需要優化 那就積極些 讓主程覺得你做事又快又好,交給你的東西不需要過問進度 你就能搞定 只有提前沒有延後 公關能力強。能自己發現需求提出來 主程同意後要把他落地做出來. 一直以這個態度做事 下一個項目主程就是你了


普通程序員的一天

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

主程||技術負責人||技術經理的一天

--1--2--345--6-7--8--9-10-11---12---13--14--15-1--5--6--4--16--17--18-----19--20--21--22--1--3--5--6---7--23--


手起刀落,如果斬不到敵人,那就斬了自己吧!


主程序有啥好,各種事累成狗,當了8,9個月主程序後,主動離職了,到新公司後,干一個月後,有個更好的機會,提離職,項目經理為了留我,允諾我做主程序,薪資多了5000塊加三千塊獎金,還是走了,當了主程序就沒那麼多時間研究技術,很多煩心事


別人一星期做的你兩天做完,別人一個月的你一星期做完,再來操心主程的事情吧。


沒有當過並不知道為什麼邀我。

不過solo代碼的感受是,如果擔當了項目中比較核心的開發指責,那麼會把更多的時間貢獻給工作。並且即使閑暇時間的研究也會跟工作方向有關了。並不清楚應該算是好事還是壞事。


2010年和朋友創業做生物信息相關的項目,我擔任技術總監。然後生物專業的我一度成為公司唯一的java程序員,從一個弱雞一路走到目前還算老練的司機。當然目前慢慢脫離公司主程序的職位。

第一 需要想的很多很全。可以說公司的產品線和產品質量等全壓在我的頭上,我的眼界、技術高度和所做的東西在不少程度上決定公司銷售的策略以及接單偏好。這對個人的壓力會比較大,每天晚上都在想是否部分模塊功能還有不足,部分體系是否還需要優化,是否能拓展新產品來幫助增加訂單。所以996是很正常的,當然這麼多年下來已經習慣了,我現在每天還基本到10點多才下班。不寫代碼手癢哈哈。

第二 需要強的學習能力,並不斷提高自己。小公司的缺點是如果我不會,沒有人能指導我給我幫助,所以要相對比較強的學習以及信息採集的能力。當然最開始的時候我也很弱,部分模塊重構了2-3次。

第三 遇到什麼新技術,感覺好的就可以用。有段時間我剛接觸泛型,感覺不錯,於是有一個模塊大概10來個類都涉及到定義和使用泛型。再譬如那會兒看到zookeeper比較火,就用這個寫了個簡單的任務調度;然後前段時間docker比較火,也用了起來--和hadoop-yarn結合著用的;還有最近開始用jsr203-hadoop讀寫hdfs,比原生的api方便不是一點點。以及一些公司內部標準的推進,譬如測試驅動開發,領域模型,想用哪個我說了算。最近打算把持續集成搞起來,哈哈是不是暴露了我們底子薄弱的問題呀。

第四 有時候會有孤軍作戰的感覺。2014年底我開始把我們的系統從自己搭建的任務調度遷移到hadoop-yarn上,那是我至今為止職業生涯最黑暗的一段時間。由於我以前從未接觸過yarn,不知道如何對yarn開發application,然後無從下手。先入了spring-yarn的坑,spring-yarn是基於gradle構建的,我又去把gradle相關的英文教材看了一遍。走不下去又去看twill,也是一頭霧水。最後看了hortonworks的案例才緩過神來,把任務跑上了yarn。然後又因為yarn的配置文件導致無法順利提交任務折騰了好久。關鍵這東西網上代碼挺多,但是真正教你怎麼跑起來的很少。以上工作總計花費1個多月時間,曾經若干次想要放棄。好在最後終於搞定,現在項目也受益很大,我對yarn也算有了一定理解。

第五 運維也要做。因為很多技術是我引入的,譬如hadoop,docker等,那麼全公司我對這個最了解,理所當然我要負責這些服務的運維工作。不過做著也挺有意思,然後現在在推進自動化運維和監控。有用第三方的ganglia,nagios,也有在自己開發一些,主要是基於yarn的restful查日誌和docker的remote api。

總體來說做小公司的主程有利有弊。

優點是什麼都懂點,然後也很充實。在公司內部地位比較高(當然我是創始人了哈哈)。現在公司有程序員了當然都歸我管,看了他們跟我一起搭建系統感覺好開心呢,有一種能力被放大的錯覺。

缺點是沒有經過科班培訓(我是生物專業,畢業就做這個項目),自己摸索了很久也沒人很好的指導。所以水平跟我一個在淘寶的同學比可能要差不少(他好像是p8),特別是高並發這塊我理解比較薄弱,對並發包也了解不多。

我還是很遺憾沒有去好的互聯網公司呆過的。剛畢業去大廠鍛煉下可能對眼界開闊很重要。


只寫底層,不寫邏輯,關鍵時候能幫別人擦屁股。


累,能少寫點代碼。


白天寫代碼 晚上看無碼~~


不怕累,不怕煩;能衝鋒,能救火。不笨、肯干,足矣!


主程不僅僅是解決技術上的問題,還是要解決整個團隊的效率問題。

@韋易笑 回答得到位,我這裡還補充多一點。

還要時刻關注手下同學的心理狀態和情緒,適當的引導和開解。

特別在項目出現延遲,進度推進不合理,加班又特別多時,這樣的狀況下更要關注大家的心理狀態。


推薦閱讀:

程序員大神都如何支配自己的薪水?
程序員轉行燒烤需要做哪些準備,有哪些優勢和劣勢?
知乎上的程序員大神的擇偶要求高嗎?
如何評價王垠的《Go語言,Docker和Kubernetes》?
JAVA ReentrantLock可見性?

TAG:程序員 | 編程 | X是種怎樣的體驗 |