目錄
一磕洪、寫作背景
二吭练、各類型公司的環(huán)境氛圍
三、各類型公司的開發(fā)流程規(guī)范
四析显、如何提高在公司的核心競(jìng)爭(zhēng)力
五鲫咽、一些中肯建議
一、寫作背景
本人在大學(xué)期間有過(guò)三段實(shí)習(xí)谷异,大二在一家外包公司分尸,大三去了技術(shù)型公司,現(xiàn)在待在一個(gè)業(yè)務(wù)驅(qū)動(dòng)型公司歹嘹。認(rèn)識(shí)我比較久的讀者應(yīng)該知道箩绍,我經(jīng)歷了一次優(yōu)秀實(shí)習(xí)生,兩次提前轉(zhuǎn)正荞下,最近這份工作原本半年的試用實(shí)習(xí)期伶选,只實(shí)習(xí)了一個(gè)月就提前轉(zhuǎn)正史飞。
寫這篇文章有三個(gè)目的:
- 純粹地分享這三家的工作經(jīng)歷。
- 分享的同時(shí)仰税,給在校生和未在這些公司中從事工作的同學(xué)一些參考构资。畢竟在自己沒(méi)有真正經(jīng)歷過(guò)之前,都只是別人口中所說(shuō)陨簇,也是所謂的「圍城」吐绵。
- 由于本人有階段性復(fù)盤的習(xí)慣,對(duì)這三段工作的表現(xiàn)自認(rèn)為還可以河绽,這邊也會(huì)針對(duì)不同類型的公司分享一些提高核心競(jìng)爭(zhēng)力的經(jīng)驗(yàn)己单。
二、各類型公司的環(huán)境氛圍
①外包
我們當(dāng)時(shí)團(tuán)隊(duì)有10個(gè)人耙饰,入駐到一家國(guó)企里面進(jìn)行開發(fā)纹笼,分配給我們的只有一個(gè)小房間,而且這個(gè)房間之前還是倉(cāng)庫(kù)苟跪,在公司的最角落廷痘。
房間里面的氛圍“很符合”開發(fā)氣氛,只有到飯點(diǎn)了有人喊吃飯了才有聲音件已,其他時(shí)候一片寂靜笋额。
這家國(guó)企有自己的食堂,他們的員工都是包餐的篷扩,人手一張卡兄猩。但是這家企業(yè)給到我們團(tuán)隊(duì)的只有一張卡,也就是我們團(tuán)隊(duì)共用一張卡鉴未,所以到食堂之后我們得排在一起輪流刷枢冤。吃完飯之后,團(tuán)隊(duì)的每個(gè)人需要給CTO轉(zhuǎn)12元作為中午的飯錢歼狼,CTO收完之后統(tǒng)一轉(zhuǎn)給該企業(yè)財(cái)務(wù)掏导,也就是我們不包餐。
輪流刷卡羽峰,不包餐這些都還好,畢竟外包團(tuán)隊(duì)嘛添瓷,也能理解梅屉。但是食堂有時(shí)在節(jié)假日特意煮了湯或者其他什么的,一看到我們團(tuán)隊(duì)來(lái)了鳞贷,就直接說(shuō)我們沒(méi)有坯汤。有一次中秋節(jié),人事部在食堂門口發(fā)禮盒搀愧,團(tuán)隊(duì)的老員工要去領(lǐng)惰聂,人事部的人由于對(duì)我們比較陌生疆偿,于是問(wèn)了一下基本信息,一聽到我們是技術(shù)部的搓幌,趕緊揮了揮手說(shuō)沒(méi)有杆故。
雖然這家外包996,一個(gè)月只發(fā)我800工資溉愁,而且還用支付寶轉(zhuǎn)賬处铛,但我還是挺感激給予我這樣的機(jī)會(huì)讓我學(xué)習(xí),沒(méi)有“歸屬感”和“認(rèn)同感”也告訴我僅僅只能實(shí)習(xí)拐揭,這兩種感覺(jué)相信在外包的朋友都深有體會(huì)撤蟆。
②技術(shù)導(dǎo)向型
這家公司是真正意義上的技術(shù)型公司,公司產(chǎn)品的核心競(jìng)爭(zhēng)力就是技術(shù)堂污,解決市場(chǎng)上其他競(jìng)品解決不了的家肯。
該公司的創(chuàng)始人及管理層全都是技術(shù)人員出身,企業(yè)內(nèi)部還設(shè)了一個(gè)大學(xué)盟猖,上面有必修課和選修課讨衣,上完課之后要參加考試,考試成績(jī)作為年終績(jī)效指標(biāo)之一扒披。上到HR值依,下到底層研發(fā)人員都得接受大數(shù)據(jù)知識(shí)的洗禮,隨口就是各種Hadoop碟案、Spark愿险。除此之外,公司還會(huì)經(jīng)常外界技術(shù)人士來(lái)公司分享价说,企業(yè)內(nèi)部也會(huì)經(jīng)常性做分享辆亏。
這種技術(shù)氛圍也是每個(gè)技術(shù)人所向往的,遇到什么難題鳖目,內(nèi)部員工頭腦風(fēng)暴一下就能解決扮叨。
這種企業(yè)里的技術(shù)人員是具備核心地位的,核心部門也必須是開發(fā)部领迈,并且針對(duì)不同的技術(shù)彻磁,內(nèi)部分工會(huì)分的比較細(xì),具體到哪個(gè)模塊狸捅,哪個(gè)功能衷蜓。
③業(yè)務(wù)驅(qū)動(dòng)型
在這種公司,開發(fā)部門正常都不是核心部門尘喝,但同時(shí)又是不可缺少的磁浇。拿我現(xiàn)在的電商公司來(lái)說(shuō),數(shù)據(jù)部門主要是為了給運(yùn)營(yíng)部提供一些數(shù)據(jù)讓他們更好地去定價(jià)朽褪,定制活動(dòng)等置吓。
公司的核心競(jìng)爭(zhēng)力應(yīng)該是產(chǎn)品无虚,其次是模式,而模式包含著運(yùn)營(yíng)衍锚、銷售等友题。技術(shù)只是作為輔助這種模式建立的一份子,搭建一個(gè)平臺(tái)构拳,或者出一些指標(biāo)數(shù)據(jù)咆爽,都是為了更好服務(wù)業(yè)務(wù)。
市面上大部分互聯(lián)網(wǎng)公司都是業(yè)務(wù)驅(qū)動(dòng)型公司置森,這類公司會(huì)把部分邊緣業(yè)務(wù)外包出去斗埂,重點(diǎn)做核心業(yè)務(wù),對(duì)于核心業(yè)務(wù)的技術(shù)又沒(méi)像技術(shù)型公司一樣苛刻凫海,謀求最佳性價(jià)比呛凶。
三、各類型公司的開發(fā)流程規(guī)范
①外包
不管是爛代碼還是冗余代碼行贪,只要能實(shí)現(xiàn)功能的就是好代碼漾稀。大部分的外包公司或者說(shuō)基本所有的外包公司都不會(huì)做code review,只要能把功能實(shí)現(xiàn)交給客戶就行建瘫。
大二的時(shí)候崭捍,我們團(tuán)隊(duì)雖然駐扎在一家國(guó)企里面,但真正做該企業(yè)項(xiàng)目的只有我一個(gè)人啰脚,其他人都在做不同的項(xiàng)目殷蛇。我那時(shí)既自豪又感概,自豪地跟同學(xué)說(shuō)我自己一個(gè)人搞一個(gè)國(guó)企項(xiàng)目橄浓,感慨公司心真大粒梦,把一個(gè)國(guó)企項(xiàng)目交給我的一個(gè)實(shí)習(xí)生來(lái)做。
那時(shí)也不懂什么叫好代碼荸实,都是沖著功能實(shí)現(xiàn)去的匀们,各種調(diào)包,copy & paster准给,if else while for常常寫出死亡三角泄朴,沒(méi)人批評(píng)我說(shuō)代碼寫的丑,沒(méi)人讓我封裝露氮,都是夸我功能實(shí)現(xiàn)的快叼旋,就是bug多了點(diǎn)。
產(chǎn)品經(jīng)理時(shí)不時(shí)地走到我身邊沦辙,跟我說(shuō)要加哪些功能,哪些不要讹剔,業(yè)務(wù)邏輯都是freestyle油讯,現(xiàn)場(chǎng)畫邏輯圖详民。剛開始不懂,認(rèn)真地聽產(chǎn)品經(jīng)理說(shuō)陌兑,然后拿小本本記沈跨。后來(lái)我的leader跟我說(shuō):別聽產(chǎn)品經(jīng)理的,有不懂的問(wèn)我就行兔综,到后來(lái)國(guó)企的運(yùn)營(yíng)部也來(lái)找我提需求饿凛,真的是人人都是產(chǎn)品經(jīng)理啊软驰!
團(tuán)隊(duì)里沒(méi)有專門的測(cè)試同事涧窒,都是上線那天一起加班,國(guó)企運(yùn)營(yíng)部的人幫忙測(cè)試锭亏,我們開發(fā)就在旁邊實(shí)時(shí)解決測(cè)出來(lái)的問(wèn)題纠吴,順利的話當(dāng)天發(fā)布,要是有遇到解決不了的bug就結(jié)束加班慧瘤,明天繼續(xù)戴已。
這個(gè)項(xiàng)目經(jīng)過(guò)我手之后寫的是又大又爛,現(xiàn)在的我也看不下去那些代碼了锅减,這個(gè)項(xiàng)目在我走之后也下線了糖儡。
在這家公司,我從跟甲方博弈怔匣,到跟產(chǎn)品經(jīng)理撕逼握联,再到前端后臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,全搞了一遍劫狠。不得不說(shuō)這也是一個(gè)難得的學(xué)習(xí)機(jī)會(huì)拴疤,但是我在下一家公司嘗了這家公司帶給我的苦。
②技術(shù)型公司
一年后來(lái)到了這家公司独泞,這家公司是數(shù)倉(cāng)行業(yè)的標(biāo)桿呐矾,產(chǎn)品是To B的,客戶都是各領(lǐng)域的KOL懦砂,又是中國(guó)第一個(gè)Apache頂級(jí)開源項(xiàng)目蜒犯,無(wú)論是技術(shù)還是開發(fā)流程規(guī)范說(shuō)領(lǐng)先的應(yīng)該不過(guò)分。
先看看我們的開發(fā)流程和規(guī)范:
1. PRD/issue
如果是新功能荞膘,而且相對(duì)比較大的罚随,需要產(chǎn)品經(jīng)理畫出原型圖以及詳細(xì)說(shuō)明清楚;如果是bug或者比較小的功能羽资,需要在github的issue上說(shuō)清楚淘菩。口頭說(shuō)的永遠(yuǎn)無(wú)效,如果產(chǎn)品經(jīng)理口頭對(duì)我們說(shuō)什么潮改,我們都會(huì)要求他給文檔狭郑、發(fā)郵件或者在issue上說(shuō)明清楚,也是保留證據(jù)汇在,防止互相甩鍋翰萨。
2. 本地Reproduce
本地重現(xiàn)bug。也就是出現(xiàn)bug的時(shí)候糕殉,我們開發(fā)要進(jìn)行本地重現(xiàn)亩鬼,只有重現(xiàn)出來(lái)才能從根本上解決問(wèn)題。這一步是最難的阿蝶,也是耗時(shí)最長(zhǎng)的雳锋。如果連bug本地重現(xiàn)也重現(xiàn)不出來(lái),后續(xù)工作基本難以進(jìn)行赡磅。
3. 定位Root cause
對(duì)于Bug魄缚,我們要先找到引起的根本原因,這塊最考驗(yàn)綜合能力焚廊。mentor給我的箴言就是:「大膽假設(shè)冶匹,小心求證」。 把所有可能性列出來(lái)咆瘟,然后一個(gè)個(gè)去證實(shí)嚼隘。只有定位了Root cause,你才能開始去寫代碼袒餐。
4. Design review
這是代碼架構(gòu)設(shè)計(jì)上的一個(gè)review飞蛹,是跟mentor或者leader對(duì)接確認(rèn)的,在編寫代碼之前完成灸眼,避免設(shè)計(jì)不行卧檐,被全部推翻。這塊也要寫在github的issue焰宣,一方面為后人留下痕跡霉囚,便于后面維護(hù)或者迭代復(fù)盤。而且高層也經(jīng)常翻閱issue匕积,design review做的不好盈罐,也會(huì)被指出來(lái),及時(shí)發(fā)現(xiàn)問(wèn)題闪唆。
5. 代碼編寫(阿里巴巴手冊(cè)盅粪,UT,IT)
寫好代碼是新手的基本要求悄蕾,不寫低質(zhì)量代碼票顾。這邊要求按照effect java以及阿里巴巴代碼手冊(cè)進(jìn)行約束,以及每寫完代碼都要通過(guò)UT或者IT進(jìn)行覆蓋。
6. Test plan
當(dāng)你寫完代碼之后库物,你需要制定一個(gè)測(cè)試計(jì)劃霸旗,也就是測(cè)試用例,去解決之前相同操作下會(huì)出現(xiàn)的bug或者驗(yàn)證你的新功能戚揭。
7. Test evidence
也就是Test plan制定完之后進(jìn)行實(shí)施,將驗(yàn)證成功的截圖進(jìn)行保留撵枢,貼到issue民晒,作為你完成功能的證據(jù)。
8. CI
Continuous Integration-持續(xù)集成服務(wù)锄禽,它會(huì)自己運(yùn)行構(gòu)建和測(cè)試潜必,反饋過(guò)程中是否存在Bug或者其他問(wèn)題,看是否與我們預(yù)期的結(jié)果一致沃但。我們是在Jenkins上完成的磁滚,當(dāng)你的代碼有點(diǎn)改動(dòng)你就需要去跑CI,避免影響到系統(tǒng)的其他模塊宵晚。
9. Code review
當(dāng)你寫完代碼并且通過(guò)測(cè)試之后垂攘,通過(guò)pr的方式先給導(dǎo)師review,導(dǎo)師review完之后提交給leader淤刃,對(duì)于一些比較重要的模塊晒他,在leader看完代碼之后還要進(jìn)一步提交給CTO∫菁郑看完這個(gè)你還敢提交爛代碼陨仅?別說(shuō)爛代碼了,一個(gè)變量名定義的不好都得被打回來(lái)铝侵。
剛開始入職的時(shí)候覺(jué)得這些操作很煩灼伤,改一行代碼就得去issue上面寫一堆,而且也要跑個(gè)幾小時(shí)的CI咪鲜。當(dāng)后來(lái)吃了幾次虧狐赡,真香。別看除了代碼編寫還有很多其他操作嗜诀,其他操作也是為了讓你更好地去編寫代碼猾警,幫你梳理整個(gè)開發(fā)流程,也不自覺(jué)地提升你工作的嚴(yán)謹(jǐn)性隆敢。所以到現(xiàn)在发皿,我來(lái)公司解決的第一個(gè)bug,我都還知道Root cause拂蝎,以及其他細(xì)節(jié)穴墅。其他人也知道,因?yàn)槲叶假N在issue上面。
由于我在第一段工作中養(yǎng)成很多不好的習(xí)慣玄货,比如說(shuō)代碼寫的又快又爛皇钞,debug各種log亂打,為了實(shí)現(xiàn)功能破壞了設(shè)計(jì)模式等等松捉。所以在第二段工作經(jīng)歷中被罵的狗血淋頭夹界,國(guó)慶7天看了4本關(guān)于代碼設(shè)計(jì)的書籍并做了總結(jié),對(duì)項(xiàng)目源碼進(jìn)行深入閱讀隘世,學(xué)習(xí)一些設(shè)計(jì)模式等等可柿。
在第二家公司,雖然被懟了很多丙者,但是收獲非常大复斥,可以看我在第三家的表現(xiàn)。
③業(yè)務(wù)驅(qū)動(dòng)型
業(yè)務(wù)驅(qū)動(dòng)型的公司處于外包和技術(shù)型之間械媒,也是以實(shí)現(xiàn)功能為主目锭,又要注重后期維護(hù),對(duì)規(guī)范處于中立狀態(tài)纷捞,不挖坑痢虹,不矯情。
由于我從第二家公司出來(lái)后兰绣,對(duì)代碼有一定的潔癖世分,所以到了第三家公司一有空就重構(gòu)項(xiàng)目代碼,leader也贊同我的行為缀辩,經(jīng)常找我聊代碼設(shè)計(jì)和規(guī)范臭埋。我也主動(dòng)申請(qǐng)要補(bǔ)充部門的開發(fā)流程規(guī)范,數(shù)據(jù)庫(kù)的字段規(guī)范臀玄,并補(bǔ)全項(xiàng)目代碼的UT瓢阴、IT等等。這也是我能提前轉(zhuǎn)正的原因之一健无。
四荣恐、如何在不同類型的公司提高核心競(jìng)爭(zhēng)力
在外包公司,不能局限于一個(gè)點(diǎn)進(jìn)行開發(fā)累贤,外包公司需要的是全能型人才叠穆,哪里缺哪里補(bǔ)上。在外包公司不需要你技術(shù)多厲害臼膏,但需要你會(huì)利用現(xiàn)成的資源以最快的速度完成項(xiàng)目開發(fā)硼被。你會(huì)的方面越多,公司需要你的地方也就越多渗磅,你得到的也更多嚷硫。
在技術(shù)型公司检访,不需要你會(huì)的有多廣,你只需要針對(duì)公司產(chǎn)品的一個(gè)點(diǎn)進(jìn)行深入了解仔掸,不斷地進(jìn)行優(yōu)化脆贵,這個(gè)點(diǎn)就是你的核心競(jìng)爭(zhēng)力。再由這個(gè)點(diǎn)切入到相關(guān)模塊起暮,技術(shù)深度才是王道卖氨。
在業(yè)務(wù)驅(qū)動(dòng)型公司,不能光會(huì)技術(shù)鞋怀,當(dāng)其他開發(fā)人員只會(huì)跟老板講技術(shù)双泪,而你能將具體技術(shù)落實(shí)到業(yè)務(wù),并且能從業(yè)務(wù)層面反推到技術(shù)實(shí)現(xiàn)密似,老板能不喜歡嗎?但也要記住葫盼,技術(shù)是生存之道残腌,別顧此失彼,耍小聰明贫导。
技術(shù)人員的核心競(jìng)爭(zhēng)力終究是技術(shù)抛猫,但技術(shù)也分廣度、深度孩灯、與業(yè)務(wù)結(jié)合的能力闺金,在不同的環(huán)境下,應(yīng)該學(xué)會(huì)取舍峰档。
五败匹、一些中肯建議
1.外包公司能不能去?
在沒(méi)有更好的選擇下讥巡,能去掀亩,有總比沒(méi)有好。并不是所以的外包公司都是一個(gè)模樣欢顷,說(shuō)不定你的leader好槽棍,服務(wù)的又是又好又有錢的甲方,好吃好喝好款待抬驴。但大部分的外包還是不咋地炼七,這邊調(diào)查好背景就行。
2.技術(shù)型公司哪里找布持?
所有開源項(xiàng)目背后的公司都是技術(shù)型公司豌拙。比如開源Kylin的Kyligence,開源Dubbo鳖链、RocketMQ的阿里姆蘸、開源Flutter的谷歌等等墩莫。而像阿里、騰訊這種大公司逞敷,每個(gè)BU就是一個(gè)類型的小公司狂秦,有些負(fù)責(zé)技術(shù),有些負(fù)責(zé)業(yè)務(wù)推捐,有些外包裂问。
3.對(duì)于應(yīng)屆生的選擇?
建議去技術(shù)型公司或者核心技術(shù)部門。從我的案例就可以看到牛柒,技術(shù)型公司對(duì)我一個(gè)整體的塑造幫助最大堪簿,可能貫徹職業(yè)生涯。當(dāng)你習(xí)慣了低標(biāo)準(zhǔn)的東西久了皮壁,就很難對(duì)高標(biāo)準(zhǔn)產(chǎn)生興趣椭更。
4.我對(duì)于這三種公司的看法?
對(duì)于外包公司來(lái)說(shuō)蛾魄,我覺(jué)得會(huì)缺失“歸屬感”和“認(rèn)同感”虑瀑,畢竟做的不是自家的產(chǎn)品,還得去客戶現(xiàn)場(chǎng)駐扎滴须,而且對(duì)于外包的技術(shù)也是不太看好舌狗。
對(duì)于技術(shù)型公司來(lái)說(shuō),對(duì)于個(gè)人成長(zhǎng)幫助絕對(duì)很大扔水,但在這種公司由于周圍都是level比你高的人痛侍,解決的問(wèn)題也都是比較難的,所以無(wú)形中會(huì)有壓力并且會(huì)產(chǎn)生焦慮魔市。
對(duì)于業(yè)務(wù)型公司來(lái)說(shuō)主届,最好是選擇你比較擅長(zhǎng)的并且有相關(guān)工作經(jīng)驗(yàn)的業(yè)務(wù)。我第一段實(shí)習(xí)做的是電商項(xiàng)目嘹狞,所以我現(xiàn)在的工作也是找的電商岂膳,畢竟業(yè)務(wù)邏輯都是相通的,就算之后跳槽磅网,也會(huì)選擇電商行業(yè)谈截,畢竟除了技術(shù),行業(yè)知識(shí)也是競(jìng)爭(zhēng)力之一涧偷。
選什么類型公司簸喂,仁者見仁,可以根據(jù)自己的興趣以及擅長(zhǎng)的地方做選擇燎潮。
讀者福利
針對(duì)于上面的文章我總結(jié)出了互聯(lián)網(wǎng)公司java程序員面試涉及到的絕大部分面試題及答案做成了文檔和架構(gòu)視頻資料免費(fèi)分享給大家(包括Dubbo喻鳄、Redis、Netty确封、zookeeper除呵、Spring cloud再菊、分布式、高并發(fā)等架構(gòu)技術(shù)資料)颜曾,希望能幫助到您面試前的復(fù)習(xí)且找到一個(gè)好的工作纠拔,也節(jié)省大家在網(wǎng)上搜索資料的時(shí)間來(lái)學(xué)習(xí)。
資料獲取方式:加qun群:956011797點(diǎn)擊立即加入 找管理小姐姐免費(fèi)獲确汉馈稠诲!
合理利用自己每一分每一秒的時(shí)間來(lái)學(xué)習(xí)提升自己,不要再用"沒(méi)有時(shí)間“來(lái)掩飾自己思想上的懶惰诡曙!趁年輕臀叙,使勁拼,給未來(lái)的自己一個(gè)交代价卤!