服務端開發工程師應該具有哪些能力?
阿新 • • 發佈:2020-10-21
洞察身邊的程式猿,可以歸類出這幾種型別:
- 理論型,理論能力很強,對前沿技術略有了解,性格比較強勢,需求分析和方案設計頭頭是道,對自己的設計的內容比較自信固執,反觀程式碼,質量差的一匹,邏輯亂,難維護難拓展,但是往往這種在公司評級還都挺高
- 潛力型,業務能力強,開發設計和問題排查思路清晰,可以提出優化/改進方案,能對業務適當抽象,自我技術要求比較高,程式碼質量好,平時會調研前沿技術
- 表面型,業務需求基本都可以完成,但是程式碼質量比較差,bug多,問題排查效率低,難維護難拓展,很少了解前沿技術,空閒時間就刷刷微博,看新聞,聊天
- 老實型,做事勤勤懇懇,程式碼質量一般,平時表現比較不起眼,與同事溝通少,業餘時間也不清楚具體在做什麼
- 大神型,總結就是各方面都很NB,問啥都能給予建議或者解決方案,但是這種人很少
服務端開發工程師應該具有哪些能力?
身處網際網路公司的後端開發,所以用一個後端開發者角度出發
-
基礎能力
- 程式碼規範
- 分層清晰
- 邏輯清晰
- 資料庫操作
- 瞭解http,能抓包工具和模擬請求工具
- 瞭解前端/js,能使用瀏覽器控制檯工具除錯
- 安全預防
- sql 注入
- xss 跨站指令碼攻擊
- csrf 跨站請求偽造
- http 劫持
- ddos 攻擊
- ... ...
- 高階能力
- 面向抽象程式設計
- 適當使用設計模式
- 模組封裝
- 非同步程式設計
- 多執行緒程式設計
- 經驗
- 高併發處理/優化
- 效能優化(載入速度、提高介面tps 、... ...
- 解析需求,能給予合理的建議和解決方案
- 能靈活使用快取:redis,memcache 等
- 能靈活使用訊息佇列中介軟體:rabbitmq,activemq,zeromq,kafka,等
- 輔助能力
- 爬蟲
- 能開發爬蟲功能就代表對web這塊已經掌握比較好
- 攻擊別人業務(適可而止,自行把握)
- 手段
- 模擬請求,尋找突破口,如:修改引數
- 併發請求,導致併發邏輯問題。如:獲得多簽到積分(多資料操作介面可能會壓垮伺服器)
- 嘗試攻擊,sql注入,跨站指令碼攻擊,等 ...
- ...
- 懂得攻擊別人,自己就知道如何防禦
- 手段
- 爬蟲
- 溝通能力
- 成員溝通,討論設計方案,分享思路,技術點
- 協作溝通,主動性很重要
- 排錯能力
- 問題反饋快速響應
- 根據問題現象快速定位問題
- 快速給出解決方案並上線,告知客服,反饋給使用者
- 學習能力
- 調研前沿技術並且最好是可以運用到專案業務中
- 多語言開發:python,java,nodejs,php ... ...
- 開發語言只是完成業務開發的工具,學習並在專案實踐,這樣才能從中學到東西
- 預知能力
- 程式碼未來,方便業務拓展
- 架構未來,方便架構拓展支撐業務增長
- 架構能力
- 分層
- 分割
- 分散式
- 快取
- 叢集
- 非同步
- 沉餘
- 自動化
- 安全
壞程式碼味道
列出曾經遇到的比較典型的壞程式碼味道截圖,引以為戒,BGM("多麼痛的領悟"),醒醒吧,別把自己想的多牛逼,先從程式碼質量開始,拿著高薪,寫著學生水平的程式碼人到處都是,遇到這樣的程式碼請問要怎麼拓展?
-
壞味道1 (分層不清,在控制層拼接sql)
-
壞味道2 (函式引數過多)
-
壞味道3 (過分深層)
- 壞味道4 (相同功能需要提取函式+過分深層)
總結:
- 無論你是什麼型別的程式設計師,期望你能夠對得住自己在崗位的這份責任
- 多反思自省,反觀以前的程式碼,肯定也是有些不合理的設計,總結並且沉澱
轉載於:https://my.oschina.net/wugong/blog/1627559