從軟件公司的異同點講起,聊聊未來的程序員該如何選公司和謀規划


    過了年以后,新的一輪春招又要開始,於是一個迫切的問題就擺在廣大計算機相關專業的畢業生面前,那就是,找工作時該如何挑選公司?該如何避坑?

    在本文里,作者就將以一個有多年校招經驗的IT技術面試官的身份,和大家聊聊這方面的話題,同時還會在此基礎上再分享些職業規划方面的經驗。

1 剛畢業的大學生一般做什么活?

    不少的未來程序員對即將到來的工作有着無限的憧憬,但可能會有更多的畢業生會擔心,是否能勝任未來的工作?他們的擔心其實不無道理。

    1 不少大學課程可能更偏重於理論,在軟件開發方面的課程寥寥無幾,而對一些自動化等相關專業的畢業生而言,可能相關的課程就更少了。

    2 對於很多畢業生而言,不了解公司的組織形式,軟件項目組的構成,以及軟件開發的日常工作,由於不了解,所以就不知道未來能否勝任。

    3 對很多大學生而言,接觸到的軟件開發項目都是學習項目,比如畢業設計或課程設計,可能未必能親身經歷過一個軟件開發流程。

    但這種擔心其實可以不要有,因為很多公司對新招來的程序員畢業生期望並不高,具體而言,對於零工作經驗的軟件方面畢業生,平時需要干點什么活呢?

    主要是跟着當前項目學,做些基本的增刪改查工作。每個項目組用到的技術不同,有spring系列框架,有hadoop大數據框架,或者是python,但如果有剛畢業的員工入職,在基本的培訓之后,會給些范例代碼,讓照着寫。比如會讓模仿訂單模塊的增刪改查代碼寫個風控模塊的。具體再拆分下,還可以分為如下的任務點。

    1 配置環境,比如在自己電腦上搭建pycharm,idea等開發環境,再搭建mysql或oracle客戶端,再配置些jenkins,jira等環境,只要人勤快些,肯請教,肯學習,這些工作一般也沒問題,大不了就嘴甜些請些前輩幫忙即可。

    2 環境搭建好以后,就從svn或git上拉下代碼,然后結合各種環境變量讓程序跑通,這塊問題也不大,大不了也是請教人的事情。

    3 后面就是仿照着寫代碼里,在這個過程中,可能會遇到各種新的技術,比如調用的API不熟悉,各種參數不熟悉,各種框架不熟悉。但可以這樣說,哪怕是一個有5年經驗的老手入職到一個新的公司,也會遇到類似問題,因為軟件方面的技術太多了。所以在剛開始的工作中,軟件相關的畢業生一定得多學,其實就是多百度多問多照着人家的代碼寫,而且這種新技術絕對不是高不可攀的,每個程序員都是這樣過來的。

    4 對剛畢業的大學生而言,寫代碼絕對不是唯一的事,還包括測試,參加各種(需求評審框架設計和代碼評審)等會議,排查問題,以及項目上線。 

    畏懼來自未知,在這里針對即將畢業的軟件方面的大學生,描述了未來可能的日常工作。這里不敢說,你一定能適應,一定能勝任,但對於大多數畢業生而言,只要付出必要的努力,多學習,多請教人,甚至多加班,一定能在短時間里勝任這種工作。

2 相似的日常工作,相同的項目組構成形式,和相同的項目開發模式,

    軟件公司有不同種,但對於這些不同的公司而言,項目開發模式,項目組的組織形式和在其中的日常工作大致相同。日常工作已經在前文里描述過,這里就說說剩下兩點。

    先說項目組的構成,項目的規模一般不同,但大家別把部門規模等同於項目組的規模。比如一個部門有50人,甚至更多,但一般在部門里還會分成若干個項目組。

    比如作者工作過的一個部門叫“線下服務部”,有60人左右,在其中分為線下收單,搜索服務,前端項目,app項目等若干的項目組。在大多數公司里,每個項目的規模一般不會太大,一般也就10個人組成,一般有一位項目經理,若干位程序員,若干位測試構成,對於一些項目組,可能還會引入前端設計,數據庫管理和運維等崗。

    項目經理的作用是對外接需求,然后根據需求制定開發周期和發布周期,然后再用需求設計,詳細設計等工作,把業務方面的任務拆分成一個個開發任務,再分配給程序員。然后再確保或督促程序員在規定的時間內完成開發,然后再測試通過后,把代碼部署到產線上。在有的項目組里,項目經理往往還擔任着技術負責人的角色,不過也有在一個項目里再配置一位負責技術的架構師。

   在項目組里最常見的角色就是程序員,也就是各位即將要從事的,程序員除了要開發以外,一般還要和測試人員溝通問題,和其它組的程序員溝通接口設計和調試等事項,如果再高級點的話,最好還要等排查和調試各種線上問題。

    而在項目組里,一般會配置測試人員,大多數情況下,會有資深的程序員兼任,比如某位熟悉業務和熟悉技術的程序員在開發之余還兼做測試。

    大多數的項目組就是由項目經理和程序員構成,在部門里有專門的數據庫管理團隊和運維開發團隊,以及前端開發團隊,這些團隊為這個部門里的所有項目開發團隊服務,當然如果有需求,項目組還會額外配置前端或數據庫開發等職位。

    而對大多數公司而言,項目開發和發布的流程大致相同,而且當前一般都采用的是敏捷開發模式。

    1 每個項目開發和發布周期為1個月,當然也可以是1個半月或2個月,往往在年初,會定好當年的發布日。

    2 在每個發布日的開始階段,各項目組從業務方等渠道接各種開發需求,這往往有個截止日,比如開發周期開始后的一周后,就不能再接新需求了,如果再有,如果緊急,可以適當調整任務,如果不緊急,可以移到下個開發周期。

    3 接到任務后就各種會議各種開發,比如通過架構設計會議,定好開發架構,通過詳細設計會議定好模塊,通過接口會議,定好和其它組的接口,什么都定好以后,就開發,開發時遇到任何問題,就自行或討論解決,當然開發也有個截止日期。

    4 開發好的代碼會提交測試,測試一般分為模塊測試和同其它組的聯調,一般測試以及對應的修改工作會在發布前的一周前做好。

    5 最后就是發布,往往在發布日是最緊張的,各團隊依次把代碼部署上線,如果有問題,先排查原因,然后對應方得趕緊解決。

    在一個開發周期的末尾,把當前周期的代碼發布上線后,就開始下個周期的工作,如此循環。

3 不同的公司類型和不同的項目類型

    雖然對軟件公司而言,項目的開發模式和項目組構成可能差不多,但對於不同類型的公司和不同類型的項目,程序員在里面的體驗大相庭徑。在本人的借着談轉正感想的時機,再聊聊外企和互聯網公司的工作體驗這篇文章里,就給出了外企和互聯網公司的不同工作體驗,在這里就將更加詳細地說說相關的差別。

    1 對廣大畢業生朋友而言,比較適合的是大的互聯網公司,比如阿里系的,騰訊,百度等,或者拼多多等。在這類公司里,節奏一般比較快,比如外企里干一個月的任務,在這種公司里往往一周(甚至更短)就要干完。在這種公司里,在一個項目開發周期里,隨時可能插入新的任務,比如遇到問題了,就得趕緊修復,而且面臨的技術挑戰也比較高,比如需要應對高並發和高數據壓力的挑戰,而且所用到的技術也會比較新,比如會用到大數據,機器學習或分布式組件。當然可能加班也工作壓力也比較大。

    在這類公司里,可能個人提升比較快,錢也比較多,但對應的,人可能就會比較辛苦。

    2 第二類是國企或比較傳統的公司,在這類公司里,可能任務開發周期比較長,用的也是比較穩妥的技術,其它特點大家可以自行想象。

    3 還有就是外企,目前外企的吸引力可能沒之前那樣大,但外企由於一般規模比較大,而且文化多元,依然是個比較好的平台。在外企里,可能人比較輕松,但可能技術提升的速度就沒有互聯網公司來的快了。

    4 或者是一些創業公司,在其中,由於成本等的關系,可能需要一個人同時掌握多種技能,對畢業生而言,可能在其中也能接觸到各種方面的技能。

    而對於項目類型,對廣大畢業生朋友而言,尤其需要注意外派和外包公司類型的項目。

    外包公司就是一個公司沒有自己的產品,然后從其它公司接各種外包的活,或者從日本等地接各種活。在其中主要是定制化開發,比如對方給某產品里某個功能模塊讓開發,在這種項目里,可能用到的技術比較單一。

    相對於外包公司而言,還有一種就是人力派遣公司。比如某公司和畢業生簽好協議,然后把他派遣到其它公司里。在這類項目組里,人員一般分為正式員工和外派員工兩種,可能這兩類員工干的活差不多,但地位和薪酬未必相同。

4 不能妄自菲薄,去哪些公司得慎重

     在介紹完公司和項目情況后,這里針對軟件相關方面的畢業生而言,給出具體的建議。

     對各位來說,好歹也是大學生,所以也是有一定的挑選余地的,對於如下的公司,大家需要慎重些。

     1 有些公司可能以招工為名,然后巧立名目,讓你掏錢培訓。這其實是變相的培訓班,哪怕大家即使要再通過培訓班提升下自己,也可以找些比較正規的和比較有名氣的。

     2 人力外派公司,就把你外派到甲方公司做項目。這時你要看外派協議,如果外派到大型公司,或者給錢比較正規,那么這對畢業生朋友也不失為一種選項,但如果外派協議比較苛刻,或者多層轉包,或者甲方公司不正規,那么就要慎重的。

    3 或者去干其它專業的活。比如計算機專業的畢業生做開發是正常的,做測試也行,做產品設計或軟件方面培訓老師也能說得過去,但如果去做銷售或者業務員之類的活,那么可以說,你之前讀的書對你未來的工作幫助不大,而且如果這樣,后面再要回轉到軟件行業,那可能就比較吃力了。

    4 可能會暴雷的公司,比如有些p2p公司。這種公司可能存在跑路風險,這可能對剛走上職業生涯的畢業生同學而言,會存在不小的污點。

    5 創業公司或規模比較小的公司,這種需也需要慎重。倒不是所有的此類公司都會存在風險,但公司規模小,或者初創,后期可能會存在資金和運營等方面的風險,一旦出現公司倒閉現象,對各位而言,可能就會在簡歷上落下“工作干不長”等不良記錄。  

5 短時間之內如何提升自己的能力,從而能進到心儀的公司

    所以相對而言,對廣大軟件方面的畢業生而言,應該可以關注如下的公司。

    1 互聯網大廠  2 外企  3  規模比較大的公司 4 或者一些是獨角獸企業 5 或者可以考慮以外派身份進大公司 6 或者可以考慮一些中小型的軟件公司。

    畢業生一般是從大四開始找工作,找工作的時間范圍一般是從大四剛開始的9月到來年的5月。哪怕之前你沒接觸過任何軟件開發的項目,如果你在這段時間里比較上心,依然有機會進大公司,或者是好點的公司。具體該怎么做?

   1 一般大四都有實習,就趁着實習的機會,真實地干一個軟件項目,別的不說,好歹體驗下真實的軟件開發流程,以及針對具體的業務需求,做些真實的增刪改查的事情。

   2 然后就把這段經歷,以商業項目的形式寫入簡歷,注意別寫成學習項目。當然如果大二大三干過軟件方面的活,比如幫老師干過,或者自己在外面干過兼職,也可以寫入簡歷,總之簡歷中,商業項目經驗越多越好。

   3  盡量經營一個能展示你技能的平台,比如利用這段時間做個公眾號,或者到技術網站發表若干成系列的文章。這些文章未必要描述過於深刻的技術,甚至點擊量都不需要搞,但在面試時,你能以此。

   4 在此基礎上,到網上搜各種面試題,筆試題和算法題,總之第一要有項目經驗,第二面試時能說出相關項目經驗。

   做到上述四點,畢業生給公司的印象是,第一至少有半年相關項目經驗,第二熟悉基本的開發,外帶些責任心強和學習能力強等的熟悉,這足以幫助到畢業生找到公司了,而且能找到的公司應該可以有500人以上的規模,且業務穩定,足以能幫助畢業生開始良好的職業生涯。如果再加上名校因素,或者拿過編程的獎,或者能通過公眾號等證明自己的能力,甚至更有可能在校招里直接一步到位進到大公司。

6 莫欺少年窮,進大廠也就2,3年的事

    各大廠每年校招的名額畢竟有限,而且也不是所有的軟件相關畢業生都能一下子進大廠,但只要上心,對廣大畢業生朋友而言,工作2,3年進大廠不是什么難事。本人在進大廠也就這回事,工作后2到3年進大廠操作指南這篇博文里就給出具體的建議。

    1 哪怕你進的是小公司,或者是外包外派公司,首先你得通過半年時間里,做熟基本的開發工作,並了解軟件開發的基本流程。

    2 不能光局限於本職工作,更不能得過且過,在做好本職工作后,還得關注測試和項目發布等事項。

    3 多解決線上問題,因為通過排查問題最能提升自己的技術和分析解決問題的能力。

    4 多關注些值錢技能,比如分布式組件開發技術,或者機器學習深度學習相關技術。

    5 工作后,更得通過寫博客等方式來證明自己的實力,最好再在某個方面出版本書。

    其實能做到上述幾點,哪怕你剛畢業時能力一般,且畢業后公司一般薪資一般,在2,3年后至少能做到工資大漲。

7 總結和預告:本系列更關注於簡歷,面試和招聘問題

    本文面向廣大軟件方面的畢業生,介紹了項目開發的日常工作和在不同種公司里干項目的體驗以及發展前景,並在此基礎上給出了在短時間內快速提升自己的建議。總之一句話,只要努力,不管在什么階段,總能有收獲。

     本人有長時間的技術面試官經驗,所以將在后繼博文里,成系列地面向程序員,講述簡歷,面試和招聘相關的事項,敬請大家關注。     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM