談自動化精神

Ant發表於2020-04-06

關於自動化這個被炒了無數次的概念,我不想再多說什麼了。這裡我想提一個概念,我暫且把它叫做自動化精神,意思是盡一切可能讓程式來對程式負責,讓程式碼來保障程式碼,讓軟體來管理軟體,因為傳統方式裡,這些都是由人來做,不管這個人多麼熟練細心、人出錯的機率也絕對遠遠大於機器,這就是自動化精神。


我經常覺得自動化總被跟測試繫結在一起來說,企業招聘動不動就問你會不會自動化測試。筆者看來,現在特別是國內的IT公司裡,需要自動化遠遠不止測試這個領域。我們來細數專案團隊中那些由人來做的事吧:

  • 產品設計需求,發起專案
  • 設計師美工設計產品原型
  • 開發構建框架完成程式開發
  • 打包部署工程師完成安裝包製作
  • 測試按照需求驗證結果
  • 市場客服人員收集使用者反饋
  • 開發、測試、產品針對反饋不斷的改善產品


在每一個環節中,其實都存在許多本來由人來做但是卻可以被機器代替來做的事。機器代替人來做一來可以7x24不停歇,二來機器在一定的規則範圍內也絕對不會出錯。而這些統統都可以叫做自動化,現代IT行業不再是人海戰術堆積苦力幹活的時代了,專案也不再是動不動上百人規模了,技術的水平也允許機器在遵循規則的時候可以更加智慧高效了。在各個公司、各個團隊,其實大家都或多或少正在做著自動化的事:

  • 因為需求經常變更,有的團隊會自研發需求變更管理系統,把需求分模組的儲存和組合,變化的畢竟大多數情況下是個別模組,這樣各個模組獨立維護也能方便的衍生出各種User Story
  • 美工做出來的icon,為了適應瀏覽器的併發下載模型,經常需要被合成整圖然後頁面按座標訪問,但是任何單個icon的變更,意味著整圖也需要重新合成,於是有些團隊的前端工程師就會研發工具來自動做這件事
  • 開發寫完程式碼,許多團隊裡經常會互相review,畢竟程式碼的質量直接決定了產品的質量,同時也會使用靜態程式碼檢查程式,讓程式碼來檢查程式碼,更優秀的團隊會隨時更新完善靜態程式碼檢查的邏輯,使得工具能夠與時俱進甚至自我學習進化
  • 測試就不必多提了,為了驗證功能經常要重複的執行很多重複的操作,然後檢查日誌、檢視資料庫、稽核頁面,這些都可以被機器來代替,甚至衡量監控產品軟體長期執行的效能和資料,讓程式來監視檢查程式,效率比人要高得多
  • 打包部署裡一個很火的概念就是持續整合,Hudson/Jenkins的日益流行,讓每天團隊的進度都可以被自動的做一個總結,方方面面的做一個稽核,從編譯、到單元測試、到打包、到部署、到功能自動化、到issue/bug統計、到最終報表的生成。這一切都在有條不紊的進行著,而且是由機器來完成,而不是一群不同職能的人跑來跑去……
  • 市場客戶的工作裡,為了服務10萬使用者公司不可能僱傭10萬客服,可以根據使用者的問題進行20/80分類然後把常見固定模式匹配的使用者諮詢,做成機器人程式,機器人客戶來智慧回答,只有剩下20%的複雜場景需要真實的客服人員介入提供服務。
  • 市場運營收集使用者的資料進行分析,就更不用多做解釋了:Google Analysis,網際網路的人都懂的


其實這一切都是在讓機器代替人來做事,也是未來必然發生的改變。本質上來說它們都是自動化的範疇,當然Google/Facebook喜歡稱呼它們為工具文化,而在中國測試領域平均技術水平的落後,也導致了這些例子其實由測試人員來完成的部分寥寥無幾。筆者覺得拋開測試和開發不說,企業是需要這種角色來完成這些自動化工作的,可以稱呼它們為自動化工程師,而企業也時刻需要鼓勵團隊擁有這種自動化精神,然後就不必再區分什麼開發、測試的職位定義了,整個團隊時刻不忘自動化精神,提高工作效率降低出錯機率最終產出更出色的產品。


當然,這一切都是隻是筆者的個人願景而已,大部分的公司還是在守舊堅持傳統的方式,用堆人來解決問題,惡性迴圈下人的技能也被固定死了……



相關文章