揭祕程序員在「外包」、「技術導向型」和「業務驅動型」公司的平常生活

目錄

1、寫做背景前端

2、各種型公司的環境氛圍java

3、各種型公司的開發流程規範git

4、如何提升在公司的核心競爭力github

5、一些中肯建議面試

1、寫做背景

本人在大學期間有過三段實習,大二在一家外包公司,大三去了技術型公司,如今待在一個業務驅動型公司。認識我比較久的讀者應該知道,我經歷了一次優秀實習生,兩次提早轉正,最近這份工做本來半年的試用實習期,只實習了一個月就提早轉正。數據庫

寫這篇文章有三個目的:
  1. 純粹地分享這三家的工做經歷。
  2. 分享的同時,給在校生和未在這些公司中從事工做的同窗一些參考。畢竟在本身沒有真正經歷過以前,都只是別人口中所說,也是所謂的「圍城」。
  3. 因爲本人有階段性覆盤的習慣,對這三段工做的表現自認爲還能夠,這邊也會針對不一樣類型的公司分享一些提升核心競爭力的經驗。

2、各種型公司的環境氛圍

①外包

咱們當時團隊有10我的,入駐到一家國企裏面進行開發,分配給咱們的只有一個小房間,並且這個房間以前仍是倉庫,在公司的最角落。設計模式

房間裏面的氛圍「很符合」開發氣氛,只有到飯點了有人喊吃飯了纔有聲音,其餘時候一片寂靜。服務器

這家國企有本身的食堂,他們的員工都是包餐的,人手一張卡。可是這家企業給到咱們團隊的只有一張卡,也就是咱們團隊共用一張卡,因此到食堂以後咱們得排在一塊兒輪流刷。吃完飯以後,團隊的每一個人須要給CTO轉12元做爲中午的飯錢,CTO收完以後統一轉給該企業財務,也就是咱們不包餐。架構

輪流刷卡,不包餐這些都還好,畢竟外包團隊嘛,也能理解。可是食堂有時在節假日特地煮了湯或者其餘什麼的,一看到咱們團隊來了,就直接說咱們沒有。有一次中秋節,人事部在食堂門口發禮盒,團隊的老員工要去領,人事部的人因爲對咱們比較陌生,因而問了一下基本信息,一聽到咱們是技術部的,趕忙揮了揮手說沒有。ide

雖然這家外包996,一個月只發我800工資,並且還用支付寶轉帳,但我仍是挺感激給予我這樣的機會讓我學習,沒有「歸屬感」和「認同感」也告訴我僅僅只能實習,這兩種感受相信在外包的朋友都深有體會。

②技術導向型

這家公司是真正意義上的技術型公司,公司產品的核心競爭力就是技術,解決市場上其餘競品解決不了的。

該公司的創始人及管理層全都是技術人員出身,企業內部還設了一個大學,上面有必修課和選修課,上完課以後要參加考試,考試成績做爲年終績效指標之一。上到HR,下到底層研發人員都得接受大數據知識的洗禮,隨口就是各類Hadoop、Spark。除此以外,公司還會常常外界技術人士來公司分享,企業內部也會常常性作分享。

這種技術氛圍也是每一個技術人所向往的,遇到什麼難題,內部員工頭腦風暴一下就能解決。

這種企業裏的技術人員是具有核心地位的,核心部門也必須是開發部,而且針對不一樣的技術,內部分工會分的比較細,具體到哪一個模塊,哪一個功能。

③業務驅動型

在這種公司,開發部門正常都不是核心部門,但同時又是不可缺乏的。拿我如今的電商公司來講,數據部門主要是爲了給運營部提供一些數據讓他們更好地去訂價,定製活動等。

公司的核心競爭力應該是產品,其次是模式,而模式包含着運營、銷售等。技術只是做爲輔助這種模式創建的一份子,搭建一個平臺,或者出一些指標數據,都是爲了更好服務業務。

市面上大部分互聯網公司都是業務驅動型公司,這類公司會把部分邊緣業務外包出去,重點作核心業務,對於核心業務的技術又沒像技術型公司同樣苛刻,謀求最佳性價比。

3、各種型公司的開發流程規範

①外包

無論是爛代碼仍是冗餘代碼,只要能實現功能的就是好代碼。大部分的外包公司或者說基本全部的外包公司都不會作code review,只要能把功能實現交給客戶就行。

大二的時候,咱們團隊雖然駐紮在一家國企裏面,但真正作該企業項目的只有我一我的,其餘人都在作不一樣的項目。我那時既自豪又感概,自豪地跟同窗說我本身一我的搞一個國企項目,感慨公司心真大,把一個國企項目交給個人一個實習生來作。

那時也不懂什麼叫好代碼,都是衝着功能實現去的,各類調包,copy & paster,if else while for經常寫出死亡三角,沒人批評我說代碼寫的醜,沒人讓我封裝,都是誇我功能實現的快,就是bug多了點。

產品經理時不時地走到我身邊,跟我說要加哪些功能,哪些不要,業務邏輯都是freestyle,現場畫邏輯圖。剛開始不懂,認真地聽產品經理說,而後拿小本本記。後來個人leader跟我說:別聽產品經理的,有不懂的問我就行,到後來國企的運營部也來找我提需求,真的是人人都是產品經理啊!

團隊裏沒有專門的測試同事,都是上線那天一塊兒加班,國企運營部的人幫忙測試,咱們開發就在旁邊實時解決測出來的問題,順利的話當天發佈,要是有遇到解決不了的bug就結束加班,明天繼續。

這個項目通過我手以後寫的是又大又爛,如今的我也看不下去那些代碼了,這個項目在我走以後也下線了。

在這家公司,我從跟甲方博弈,到跟產品經理撕逼,再到前端後臺數據庫服務器,全搞了一遍。不得不說這也是一個可貴的學習機會,可是我在下一家公司嚐了這家公司帶給個人苦。

②技術型公司

一年後來到了這家公司,這家公司是數倉行業的標杆,產品是To B的,客戶都是各領域的KOL,又是中國第一個Apache頂級開源項目,不管是技術仍是開發流程規範說領先的應該不過度。

先看看咱們的開發流程和規範:

1. PRD/issue
若是是新功能,並且相對比較大的,須要產品經理畫出原型圖以及詳細說明清楚;若是是bug或者比較小的功能,須要在github的issue上說清楚。口頭說的永遠無效,若是產品經理口頭對咱們說什麼,咱們都會要求他給文檔、發郵件或者在issue上說明清楚,也是保留證據,防止互相甩鍋。

2. 本地Reproduce 本地重現bug。也就是出現bug的時候,咱們開發要進行本地重現,只有重現出來才能從根本上解決問題。這一步是最難的,也是耗時最長的。若是連bug本地重現也重現不出來,後續工做基本難以進行。

3. 定位Root cause 對於Bug,咱們要先找到引發的根本緣由,這塊最考驗綜合能力。mentor給個人箴言就是:「大膽假設,當心求證」。 把全部可能性列出來,而後一個個去證明。只有定位了Root cause,你才能開始去寫代碼。

4. Design review 這是代碼架構設計上的一個review,是跟mentor或者leader對接確認的,在編寫代碼以前完成,避免設計不行,被所有推翻。這塊也要寫在github的issue,一方面爲後人留下痕跡,便於後面維護或者迭代覆盤。並且高層也常常翻閱issue,design review作的很差,也會被指出來,及時發現問題。

5. 代碼編寫(阿里巴巴手冊,UT,IT) 寫好代碼是新手的基本要求,不寫低質量代碼。這邊要求按照effect java以及阿里巴巴代碼手冊進行約束,以及每寫完代碼都要經過UT或者IT進行覆蓋。

6. Test plan 當你寫完代碼以後,你須要制定一個測試計劃,也就是測試用例,去解決以前相同操做下會出現的bug或者驗證你的新功能。

7. Test evidence 也就是Test plan制定完以後進行實施,將驗證成功的截圖進行保留,貼到issue,做爲你完成功能的證據。

8. CI Continuous Integration-持續集成服務,它會本身運行構建和測試,反饋過程當中是否存在Bug或者其餘問題,看是否與咱們預期的結果一致。咱們是在Jenkins上完成的,當你的代碼有點改動你就須要去跑CI,避免影響到系統的其餘模塊。

9. Code review 當你寫完代碼而且經過測試以後,經過pr的方式先給導師review,導師review完以後提交給leader,對於一些比較重要的模塊,在leader看完代碼以後還要進一步提交給CTO。看完這個你還敢提交爛代碼?別說爛代碼了,一個變量名定義的很差都得被打回來。

剛開始入職的時候以爲這些操做很煩,改一行代碼就得去issue上面寫一堆,並且也要跑個幾小時的CI。當後來吃了幾回虧,真香。別看除了代碼編寫還有不少其餘操做,其餘操做也是爲了讓你更好地去編寫代碼,幫你梳理整個開發流程,也不自覺地提高你工做的嚴謹性。因此到如今,我來公司解決的第一個bug,我都還知道Root cause,以及其餘細節。其餘人也知道,由於我都貼在issue上面。

因爲我在第一段工做中養成不少很差的習慣,好比說代碼寫的又快又爛,debug各類log亂打,爲了實現功能破壞了設計模式等等。因此在第二段工做經歷中被罵的狗血淋頭,國慶7天看了4本關於代碼設計的書籍並作了總結,對項目源碼進行深刻閱讀,學習一些設計模式等等。

在第二家公司,雖然被懟了不少,可是收穫很是大,能夠看我在第三家的表現。

③業務驅動型

業務驅動型的公司處於外包和技術型之間,也是以實現功能爲主,又要注重後期維護,對規範處於中立狀態,不挖坑,不矯情。

因爲我從第二家公司出來後,對代碼有必定的潔癖,因此到了第三家公司一有空就重構項目代碼,leader也贊同個人行爲,常常找我聊代碼設計和規範。我也主動申請要補充部門的開發流程規範,數據庫的字段規範,並補全項目代碼的UT、IT等等。這也是我能提早轉正的緣由之一。

4、如何在不一樣類型的公司提升核心競爭力

在外包公司,不能侷限於一個點進行開發外包公司須要的是全能型人才,哪裏缺哪裏補上。在外包公司不須要你技術多厲害,但須要你會利用現成的資源以最快的速度完成項目開發。你會的方面越多,公司須要你的地方也就越多,你獲得的也更多。

在技術型公司,不須要你會的有多廣,你只須要針對公司產品的一個點進行深刻了解,不斷地進行優化,這個點就是你的核心競爭力。再由這個點切入到相關模塊,技術深度纔是王道。

在業務驅動型公司,不能光會技術,當其餘開發人員只會跟老闆講技術,而你能將具體技術落實到業務,而且能從業務層面反推到技術實現,老闆能不喜歡嗎?但也要記住,技術是生存之道,別顧此失彼,耍小聰明。

技術人員的核心競爭力終究是技術,但技術也分廣度、深度、與業務結合的能力,在不一樣的環境下,應該學會取捨。

5、一些中肯建議

1.外包公司能不能去?

在沒有更好的選擇下,能去,有總比沒有好。並非因此的外包公司都是一個模樣,說不定你的leader好,服務的又是又好又有錢的甲方,好吃好喝好款待。但大部分的外包仍是不咋地,這邊調查好背景就行。

2.技術型公司哪裏找?

全部開源項目背後的公司都是技術型公司。好比開源Kylin的Kyligence,開源Dubbo、RocketMQ的阿里、開源Flutter的谷歌等等。而像阿里、騰訊這種大公司,每一個BU就是一個類型的小公司,有些負責技術,有些負責業務,有些外包。

3.對於應屆生的選擇?

建議去技術型公司或者核心技術部門。從個人案例就能夠看到,技術型公司對我一個總體的塑造幫助最大,可能貫徹職業生涯。當你習慣了低標準的東西久了,就很難對高標準產生興趣。

4.我對於這三種公司的見解?

對於外包公司來講,我以爲會缺失「歸屬感」和「認同感」,畢竟作的不是自家的產品,還得去客戶現場駐紮,並且對於外包的技術也是不太看好。

對於技術型公司來講,對於我的成長幫助絕對很大,但在這種公司因爲周圍都是level比你高的人,解決的問題也都是比較難的,因此無形中會有壓力而且會產生焦慮。

對於業務型公司來講,最好是選擇你比較擅長的而且有相關工做經驗的業務。我第一段實習作的是電商項目,因此我如今的工做也是找的電商,畢竟業務邏輯都是相通的,就算以後跳槽,也會選擇電商行業,畢竟除了技術,行業知識也是競爭力之一。

選什麼類型公司,仁者見仁,能夠根據本身的興趣以及擅長的地方作選擇。

END

彩蛋福利

免費獲取Java學習筆記,面試,文檔以及視頻

部分資料以下:

相關文章
相關標籤/搜索