看板 Soft_Job 關於我們 聯絡資訊
我覺得這是個有價值的問題,希望自己的一點想法可以對你有所幫助 先討論什麼是 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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.22.77 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1549380689.A.BBE.html
godead236: 太久沒用了,好難排版喔 QQ 02/05 23:34
kevinyin9: 好文推 02/06 00:10
tz5514: 推 02/06 03:30
sachung28: 選擇的原因那段好像在說我XD psql和k8s和go都中了 02/06 05:40
afg12: 好文 我還在菜逼8 看完受益良多 02/06 11:25
wanlinlin: 認真推 02/06 19:20
moon2519: 推連結 02/06 23:50
louis70109: go psql中槍 02/07 00:22
testPtt: 我對抽象類別跟介面也沒什麼感覺Q.Q 02/07 08:20
b27294301: 中槍+1 02/07 16:36
youweit: 推 02/11 01:04
k80097: 推 02/11 23:11