Re: [請益] senior該是什麼樣子的?新人怎麼進階?

作者: godead236 (科科彬)   2019-02-05 23:31:26
我覺得這是個有價值的問題,希望自己的一點想法可以對你有所幫助
先討論什麼是 senior 該有的樣子,由於我本身是 backend developer 下面的說明主要是
我自身的經驗,不過只要你的工作是 software enginner 我覺得大部分的概念都是通用的
senior 跟 junior 的主要差別在於抽象跟選擇,造成兩者能力落差的主要原因是經驗跟基礎
知識的深度。
留下重要的資訊省略所有不必要的細節就是抽象,好的抽象才能產生有好的程式碼(可讀性、擴
充性、robust、正確度、效能...) 新人往往會關注於功能的實現與細節,而忽略了功能背後
的脈絡與目的,因為他不曉得如何從比較高的層次來抽象化,所以產生了一系列可怕的結果(錯
誤百出、可讀性差、沒辦法改寫)。
選擇其實也是一樣的情況,選擇不同的寫法、Framework、 Language、 Databsase
、 是否要寫測試、哪些 exception 需要處理... 在這些選擇背後的是足夠的知識與經驗
去做出正確的取捨,而不僅僅只因為某個原因(我只會用 PostgreSQL、k8s 很潮、
Golang 聽說很快)。 如何根據使用情境做出正確的選擇是一件困難的事情,而 senior 比
junior 更有機會做好這件事情是因為 senior 踩過夠多的雷,有更扎實的基礎知識與
domain knowhow,所以他們懂得利用這些資訊去找出最適合的選擇。
新人怎麼進階?
* 做每個功能前先確認這個功能的目的是什麼,你的工作不是完成某個 for loop,而是
確保你的 code 有幫助到你們公司/組織。
* 學好工作上常用工具(i.e. Database、Framework)的底層知識,這是非常值得的投資。
* 先 code 前先用紙筆把想像中的實作大概描述一下,看一下是否合理(容易理解、擴充)
* 寫測試,這是一個抽象化的好練習,抽象做得好,測試沒煩惱。
* 學好英文,正確的命名是好的開始、很多重要的知識都是英文居多。
* 請同事 review 你的 code 看有沒有改進的地方(跟你的寫法有什麼差異、看不看得懂、
有沒有辦法修改)
最後推薦幾本書
Designing Data-Intensive Applications: The Big Ideas Behind Reliable,
Scalable, and Maintainable Systems
https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321
Site Reliability Engineering
https://landing.google.com/sre/sre-book/toc/index.html
A Philosophy of Software Design
https://www.amazon.com/Philosophy-Software-Design-John-Ousterhout/dp/1732102201
作者: godead236 (科科彬)   2019-02-05 23:34:00
太久沒用了,好難排版喔 QQ
作者: kevinyin9 (kevinyin)   2019-02-06 00:10:00
好文推
作者: tz5514 (屁安)   2019-02-06 03:30:00
作者: sachung28 (00)   2019-02-06 05:40:00
選擇的原因那段好像在說我XD psql和k8s和go都中了
作者: afg12 (afg12)   2019-02-06 11:25:00
好文 我還在菜逼8 看完受益良多
作者: wanlinlin (wanlinlin)   2019-02-06 19:20:00
認真推
作者: moon2519 (~X~X~)   2019-02-06 23:50:00
推連結
作者: louis70109 (Nijiayu)   2019-02-07 00:22:00
go psql中槍
作者: testPtt (測試)   2019-02-07 08:20:00
我對抽象類別跟介面也沒什麼感覺Q.Q
作者: b27294301 (莖毛濕王)   2019-02-07 16:36:00
中槍+1
作者: youweit (Teng)   2019-02-11 01:04:00
作者: k80097   2019-02-11 23:11:00

Links booklink

Contact Us: admin [ a t ] ucptt.com