1. 程式人生 > 實用技巧 >服務端開發工程師應該具有哪些能力?

服務端開發工程師應該具有哪些能力?

洞察身邊的程式猿,可以歸類出這幾種型別:

  • 理論型,理論能力很強,對前沿技術略有了解,性格比較強勢,需求分析和方案設計頭頭是道,對自己的設計的內容比較自信固執,反觀程式碼,質量差的一匹,邏輯亂,難維護難拓展,但是往往這種在公司評級還都挺高
  • 潛力型,業務能力強,開發設計和問題排查思路清晰,可以提出優化/改進方案,能對業務適當抽象,自我技術要求比較高,程式碼質量好,平時會調研前沿技術
  • 表面型,業務需求基本都可以完成,但是程式碼質量比較差,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