來自一個程序員的反思
阿新 • • 發佈:2018-02-24
程序員
程序員大軍魚龍混雜,水平的高低無法簡單的從一個功能完成情況來評定,同樣一個需求,功能都可以完成,但是不同程序員完成質量會不一樣,完成質量的好壞需要從多方面評定,可以參考這些條件:易維護,易拓展,高可用,高穩定,高性能,安全性,容錯,風控
洞察身邊的程序猿,可以歸類出這幾種類型:
- 理論型,理論能力很強,對前沿技術略有了解,性格比較強勢,需求分析和方案設計頭頭是道,對自己的設計的內容比較自信固執,反觀代碼,質量差的一匹,邏輯亂,難維護難拓展,但是往往這種在公司評級還都挺高
- 潛力型,業務能力強,開發設計和問題排查思路清晰,可以提出優化/改進方案,能對業務適當抽象,自我技術要求比較高,代碼質量好,平時會調研前沿技術
- 表面型,業務需求基本都可以完成,但是代碼質量比較差,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 (相同功能需要提取函數+過分深層)
總結:
- 無論你是什麽類型的程序員,期望你能夠對得住自己在崗位的這份責任
- 多反思自省,反觀以前的代碼,肯定也是有些不合理的設計,總結並且沈澱
2018 新的一年,上班第一天,比較空閑,重新整理了下心情,拾起待寫的博文,把它完成,期望新一年我可以有更多的沈澱
原文地址
來自一個程序員的反思