解決問題和開發 Bug 哪一個更難

相信本身做代碼開發的,很大很大一部分時間也都是在 Debug 自己的代碼,不過也得要分爲好幾種情況。

  1. 自己做代碼設計、編寫、Debug。
  2. 只編寫代碼,同時 Debug 自己的代碼。
  3. Debug 別人的代碼。

通常如果是按照職業來區分的話,有分爲 FAE、CE、RD 等等,FAE 和 CE 偏向於只解決問題,並不去做代碼的設計與開發,這個都大概知道,RD 就是 Research And Development engineer,也就是常說的研發工程師。雖然呢,RD 有很多時候也是要搞別人的鍋,但是總歸是會有一部分比例得要進行開發性的設計與實現的,而且同樣是解決問題,有些時候的一些側重點和 FAE、CE 並不是非常一致。本文準備說下這幾個職位的各側重點和主要職能,同時也寫下自己的一些想法。

FAE、CE 前面即是說,完全的偏向於純解決問題,也就是處理 RD 留下的爛攤子hahah。這個部分的主要工作包括但不限於下面幾個層級:

  • 對客戶問題進行診斷、分流,有點兒像分級診療的意思,問題是多種多樣的,天南海北的哪兒都有,得要快速的定位到問題在哪裏,首先得確定大的模塊。
  • 對分好類的問題進行檢索(人腦加資料庫),看是否能夠找到之前已經解決過的問題,嘗試找到相似的問題來進行下一步分析。
  • 嘗試找到問題的根本原因(Root cause),如果已經有存在的案例,那麼嘗試 fix,如果是比較簡單的邏輯問題,也可以嘗試直接 fix。
  • 如果無法短時間內 fix,那就往 RD 導入問題進行進一步的支持。
  • 評估並提出合理的部分客戶需求,導入給 RD,拒絕不合理的客戶需求。
  • 其它若干大大小小的問題。

難點在於哪裏呢?首先一個就是問題的分類,因爲客戶報過來的問題那是不管哪個模塊的問題都有的,就拿我所在的手機 Camera 模塊來講,基本上就很容易出現仿若跨行一般的 Camera 類的問題,不得不說現在的分工協作已經細到了極其髮指的程度。所以呢,這個分流的過程就是很難的一件事,你得要通過現象、log 來進行分析判斷,同時客戶問題一天那可是好幾個的那種,並且有時間的限制在那裏,如果心理素質不過關的話很容易心態就崩了,一旦心態崩了你的效率就會極大的降低。

還有就是時間和效率,因爲但凡是實時週期性的玩意兒,它的 log 不是按 KB 來算的,那動輒就是 0.X GB,好復現的問題還好,不好復現的直接奔着 2GB 去了,試問就這種 log 你沒點強大的邏輯分析能力和心臟,那怕是 Hold 不住啊,往往問題分析不會是那麼簡單的幾個小時就可以搞定的事情,所以時間還有經驗就顯得極其重要了,不熟悉這個系統的話找一個問題點差不多等於大海撈針。

所以某種程度上來講,這部分工作都是對身體和心理雙重的刺激,我覺這部分工作要想做好,難度還是有相當程度滴。


再說 RD,從前面的也可以推知,RD 這部分主要就是深度挖掘、解決問題,這部分也是有很大概率要解別人寫的 bug,還有就是發現問題點不等於可以解決它,很多時候你發現了問題的本質,但是並沒有辦法短時間內想到解決方案,不過總體上來講這一部分還是要比 FAE、CE 的難度小那麼一丟丟。然而,萬事皆有例外,他們給過來的問題並不一定真正的找到了問題點在哪裏,可能是找錯了方向,這個時候有一定的可能就產生了誤導導向,要能夠及時發現並把邏輯分析拉回到正確的道路上來,從這種情況來看需要對系統有更加深入一點的瞭解。

除了解決別人的問題,還要能夠解決自己的問題,當然這部分就比較簡單了,不說了。沒那麼簡單的是 RD 會需要自己進行代碼的編寫調試,也就是開發部分,相信做軟件的都知道,會看代碼和會寫代碼,那玩意兒就是兩個差不多獨立的事件了(誇張),代碼編寫也分爲幾個層次:

  • 在已知功能已知設計的情況下實現代碼邏輯,這部分就是我們說的完全的碼農狀態,就基本是體力活,需要注意的就是實現細節,雖不是特別簡單,但是我覺得已經足夠簡單了。
  • 只知道功能和大體的框架走向,代碼模塊結構需要自己去構思實現,哎,這個就有點意思了,他不是完全的 0->1,但是要考慮與現有系統的兼容,也要考慮實現出來之後的擴展性、可調試、可維護性、可讀性等方面,要比上一個難一點。
  • 只知道功能,需要自己去構思實現框架來完成整個功能,這個是最有意思的,差不多是完全的 0->1 的過程了,難度最高以至於有極高的掉頭髮風險,我覺得這個是 RD、FAE、CE 裏面難度最高的以至於接近一丟丟架構師的水平了。
  • 架構師,這玩意兒我就不放在 RD 描述裏面了,高山仰止,還無法形容。

毫不要臉的說,我可能就是在第二層到第三層的過渡中間,仍需艱苦奮鬥。所以對於我來講,總體上開發性的任務難度是最高的,解決問題難度次一點點,不過後者對心理素質身體素質要求我覺得會略微高那麼一點點。


話說,每個程序員都有一個架構師的夢,我呢,老實說也有,但是我不太一樣,我並不覺得我一定要實現這個夢,我的想法是能夠參與進去一個從零到一的、世界範圍內廣泛使用的軟件架構開發與實現,哪怕是做一顆安安靜靜的螺絲釘也好,當然如果能夠到扳手、腳手架、地板、承重牆甚或更高的層級就更好了。可以說現在我僅僅實現了一半,就是廣泛使用這一點(並不是一半),想來在我退休之前能夠搞出一點事情就是最好不過的了,小系統的架構師想必我還是有信心達到的,但是廣泛使用就算了,畢竟自己也就是沒幾斤沒幾兩的。


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