你知道入職時安排你改Bug的目的是什麼嗎

5103.jpg

    《5分鐘從學生到程序員》第10課。

    被涼在一邊看代碼基本上是每個程序員都會經歷的過程,只是時間有長有短,短的幾天,長的一兩個月,這個跟公司文化、領導或師傅的時間有關係,領導或師傅自己在火燒屁股,就沒有時間管你,讓你在旁邊自生自滅。

    前面分享了很多主動學習、成長的方法,也知道理想會破滅,有挫折期這麼個階段,我們也簡單的做了下心態調整。現在開始真正幹活。

1. 程序員入行的兩種方式

    一般程序員入行,會有兩種不同的方式:

    1)做簡單功能

    我比較喜歡用這種方式。它是有一套方法的,不是說從功能入手,就安排一堆的功能給剛入行的程序員,這是想弄死他。我以APP端工程師爲例,來分享這個方法的步驟:

    步驟1:先做顯示性的功能

    比如靜態頁面,類似於關於我們,有界面調用,界面內只是顯示,沒有交互,有點基礎基本上能做出來。

    步驟2:再做有簡單業務的功能

    比如列表界面,從接口接收數據,用List控件把數據顯示出來。

    步驟3:然後做有簡單交互的功能

    比如修改名字、修改資料。


    功能的難度可以慢慢增加,這樣帶一個項目,就可以獨立負責功能開發。

    有個原則,剛入行的程序員,不要安排核心功能、主流程業務的功能,做項目我們要能放能收,從簡單的功能入手,帶新入行的程序員,這個是放;如果安排核心功能和主流程的業務,他搞不定,領導就收不回來了。

    2)改BUG

    大部分師傅帶徒弟,都喜歡從改BUG入手。因爲做功能有風險,如果徒弟搞不定,會影響項目進度;但是改Bug不會影響進度,就算徒弟搞不定,自己可以出手幫他,改bug不會佔自己太多時間。雖然從改Bug入手有很多弊端,不過做爲最常用的入行方式,我們也從改Bug開始。

5016.jpg

2. 正確的改Bug姿勢

    雖然,我比較少讓新生從改Bug入行,但是這行做久了,Bug也改多了,所以還是可以給些建議的。

    1)從低優先級的Bug入手

    Bug都有分優先級,優先級1是流程性的、影響大的Bug,優先級4是界面性的、優化的Bug。新入行的工程師,業務的理解能力和流程的把握能力偏弱,所以剛開始不要去改優先級1和2的Bug,先從改優先級3和4的Bug開始。

    2)不懂的要多問

    中級工程師有獨立解決問題的能力要求,初級工程師只有基本解決問題的能力,所以有遇到不懂得就問,特別是代碼質量低的項目。

    我以前見到一個項目,有個類似朋友圈發佈功能,一個函數有三千多行,單單顯示發佈日期,就有六個地方,後面維護的人看不懂代碼,不敢刪,有的用透明字,有的把顯示區域設成0,有的用隱藏屬性,讓前面的都顯示不出來,再自己重新加一段顯示的內容。有經驗的都不一定找得到真正顯示的那段代碼,新人就更別想了。

    這個案例比較好玩,我多講一點,這個項目的負責人能力一般,他擔心被老闆知道,就想方設法把有經驗的人擠走,後面的員工都是他招的,都是剛畢業的程序員。新人都改不動bug,他能改bug,就顯示他能力強。我發現跟着他混的新員工,畢業半年,連bug都改不好。

    我前面有講,在一家公司裏要工作兩三年,才能學會一套完整的項目流程、開發方法和團隊協作方式。但是,如果你進到這種公司,那就要趕緊跑,不然會把你的職業生涯搞殘。

    講了題外話,我們回到這個話題,遇到問題,經過看代碼、調試還是搞不懂,就問開發的人,或師傅。在入行的時候,所有問問題都對成長有幫助,對方會給你講很多東西,不僅會講這個問題怎麼解決,還順帶會講很多開發方法。這時,你就把自己當成海綿,拼命吸收他們的經驗。

    3)培養做記錄的習慣

    在Bug的過程中,或請教的過程中,會學到很多東西。有項目流程的,有開發方法的,有產品理解的,有寫代碼的技巧,有實現功能的優質代碼,要養成習慣,把這些記錄下來。下次再遇到就知道怎麼處理,而且這個就是自己的經驗庫,隨着記錄量的增加,能力成長會越來越快。

5107.jpg

3. 改Bug的目的

    你要是問師傅說:“師傅,爲什麼讓我改bug,而不直接帶我做功能?”,他通常都會說:“你先別急,現在還沒辦法做功能,先改改bug,熟悉下業務,熟悉下代碼。差不多了,我再帶你做功能。”

    大部分新入行的程序員也不會去問爲什麼要先改bug,所以對改bug的目的不瞭解。反正讓我改bug我就改,總比坐在那裏看代碼來的好,至少不會那麼無聊。這樣認爲也沒有什麼不對,只是把自己成長的掌控權丟給了命運,這樣的操作,基本上都會混的不好,最後就是抱怨自己的運氣不好,公司不好,領導不好。

    我們要把成長的掌控權拿回來,自己爲結果負責任。那我們就得了解改Bug的目的,實際上師傅已經說了很清楚了,熟悉業務,熟悉代碼,加上熟悉流程和團隊協作方式,這些熟悉了,你就可以開始做功能開發。

    所以我們改Bug的時候,不能傻傻的拼命去解決問題,就算你把bug全改好了,也只能得個6分。你要通過Bug去了解業務,不懂的就問師傅或產品經理,去了解代碼框架、運行環境、業務流程等開發相關內容,去了解項目不同角色的人是怎麼配合的,這樣你既把bug改了,又學會了初級工程師必備的能力,就可以得個10分。

5104.jpg

4. 這個階段常見的錯誤

    1)解決不了的問題,不懂得求救

    這個是最常見的情況,一個bug在那裏搞一天,搞不出來。第二天師傅或項目經理問了,才說沒有搞定,而他們經常一句話,就把你點醒,馬上就改好。


    2)對代碼管理不懂,經常跟別人造成代碼衝突

    雖然git和svn都很好用,但是新生經常會搞不清楚,覆蓋別人的代碼,或者造成打包的問題。如果出現這種情況,就好好的向同事請教,把這個問題搞定,不然就會捱罵。

    分享個案例:之前我有招個Java初級工程師,用來做梯隊建設,他就經常覆蓋別人的代碼,剛開始測試經理受不了,來找我說:“陳總,那個某某出現好幾次覆蓋代碼的情況,我們測試驗收好的功能,又搞出問題,你處理一下吧。”,好,我處理。過幾天項目的技術老大受不了,又來找我:“老大,那個某某還是覆蓋別人的代碼,這沒辦法搞了。” 我給他開個了玩笑,反問他:“要不要把他炒掉?” 他當下傻了,說:“不炒”。這種情況不會被炒,但是,你有看到,有多煩人。

    3)改bug就是純粹改bug

    新員工一般是跟一個項目改bug,下個項目或版本,會開始做功能。而新生改bug,一般是界面性的、簡單的業務邏輯的BUG,所以純粹的改Bug,對業務和代碼會有一定的熟悉,但綜合能力還是偏弱,做功能開發的時候,就會比較困難。

5. 總結

    這節課我們講程序員入行,基本不是從“hello world!”(做功能)入行,而是從改Bug入行,就算是改Bug,我們也不能傻傻的改Bug,我們要知道爲什麼要改Bug,同時去了解產品、代碼框架、運行環境、業務流程等內容,這樣你才能既把Bug改了,又掌握了初級程序員要求的能力。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章