提高新老碼農生產率的6點可行性建議
譯文【51CTO.com快譯】有人認為:無論是新手程序員、還是編程老司機,說到底并非代碼的創造者,而是程序的“搬運工”。在項目開發中,他們希望自己能夠高效、且頗有成就感地交付出完美的代碼,但是現實卻往往事與愿違。本文將從一名深耕編程領域多年的資深碼農的角度出發,和您分享六個方面的經驗總結,希望能夠幫助您最大限度地提高生產率、并加快產品的交付速度。
1.使用恰當的編程語言
俗話說:“工欲善其事,必先利其器。”如果您的團隊能夠為應用程序選用合適的編碼語言,勢必會對開發任務的高效完成產生積極的正面影響。例如:
- Python能夠“扎根”于科學計算,因此那些重視程序穩定性、以及問題解決一致性的開發人員,會時常選擇Python。
- Ruby非常適合網站的表達性代碼,并且Ruby社區可以為同一問題提供多種解決方法。
- PHP是針對快速服務器端應用的絕佳選擇。它幾乎可以在任何地方被部署。由于社區中擁有大量的PHP開發人員,因此它形成了一套生態系統,并能夠對您手頭的項目及時提供幫助。
- Node.js雖然稍許復雜,但是它允許Web開發人員在服務器端使用與客戶端相同的語言。如果您需要提供高度交互性的客戶端體驗,那么就可以選擇Node.js來進行優化。
不過,無論如何,請盡量不要讓最新的編程時尚影響您的語言選擇。最新的不一定是最適合您手頭項目的語言。就我個人而言:十年前,我們會用一些JavaScript在服務器端呈現頁面。五年前,我們會用REST或GraphQL API進行客戶端的數據渲染。而在2020年初,我們在應用程序中使用了TypeScript,來呈現服務器端數據。
2.不要自行實施身份驗證
我參與過多個項目,其中有些是在應用程序中實現了自定義的身份驗證,并且將加鹽(salted)的密碼哈希值保存到數據庫中。實際上,這完全沒有需要。由于我們擁有將身份驗證委派給活動目錄(Active Directory)的基礎架構,因此用戶完全可以使用與Windows登錄名相同的密碼。如今,我們已經擁有了Auth0及其類似產品,完全可以將身份驗證委托給Auth0。據此,我們不但可以降低自行設計與實現身份驗證所帶來的潛在風險,而且能夠為應用程序提供更好的安全性。
3.首先編寫單元測試
沒有測試驅動的設計,就像只知道編寫代碼,而不開展測試一樣,您最終會發現各種無法解決的長方法、長參數列表等問題,而且這些代碼也會變得難以維護和改進。有時候,您需要手動去執行“git reset”,或直接轉入代碼重構(https://www.refactoring.com/)。
為了成功地進行單元測試,我們可以將某些功能分解為如上圖所示的“紅色、綠色、重構”,這樣的微循環。其中:
- 紅色 - 直接從那些失敗的單元處開始編寫測試,通過排除真實運行環境中的干擾因素,以便隨時運行單元測試。
- 綠色 - 編寫使該單元能夠測試通過的代碼。
- 重構 — 清理代碼,重構并再次運行單元測試。
如此往復循環下去,以提高代碼的質量,并增強團隊對于軟件產品的交付信心。
4.利用SaaS、IaaS和PaaS
如今,開發人員需要將更多的時間投入到那些非代碼性的任務上,其中包括:基礎架構、DevOps、以及集成等方面。實際上,您完全可以通過簡單的git push,這類SaaS服務與工具,來部署應用的新版本,且無需與DBA、系統管理員等搶奪內網資源。SaaS、IaaS和PaaS等服務供應商可以幫助我們打理各種有關軟件項目開發的基本瑣事。例如,您不需要自行配置Logstash和ElasticSearch的復制,第三方服務公司會從您的應用中檢索并提取相關日志,同時在保存了90天后再刪除掉,以滿足GDPR(歐洲《通用數據保護條例》,https://www.ctrl.blog/entry/gdpr-web-server-logs.html)的要求。當然,您既需要花時間去找到能夠提供此類服務的可靠提供商,又要充分衡量將客戶的信用卡、短信、郵件等信息,存放到第三方平臺所帶來的安全性問題。
此外,像Heroku之類的平臺即服務(PaaS)提供商,不僅能夠實現應用程序的外包托管,而且可以通過各種技術棧的預配置安裝,提供基礎架構和平臺的日常運維。據此,您可以更加專注于軟件產品的交付時間。
5.使用IDE來分析代碼
一些常用的、廣受歡迎的IDE(集成開發環境,如:Eclipse、IntelliJ、Visual Studio、以及VS Code等),要么過于復雜,要么只能發現case塊中沒有最終默認子句之類的問題。我們在實際項目中使用到了linter這一套開發工具(生態系統)。它能夠集成IDE或編輯器的各種內置功能,方便我們開展各種調試。其中,SonarLint不但能夠支持前面提到的各種IDE,還可以提供針對程序中安全問題、細微錯誤、以及不規范編碼的各種建議。此外,您還可以使用SonarQube來衡量代碼的質量,修正IDE中的錯誤建議,最終交付安全且易于維護的代碼。
6.快速構建
作為獨立的開發人員,您可能會選擇在本地的開發環境中,運行測試和部署代碼,并據此得到快速的反饋。但是,當您在進行團隊協作時,程序代碼就可能需要在CI/CD管道中運行了。為了按時完成任務,我們往往會用到Makefile、Gradle、或其他適合編程語言與運行時環境的構建工具,以便實現數據庫的遷移、打包、部署、以及分發等過程自動化,并保證代碼能夠順利地運行在生產環境中。
在任何新的項目開啟時,我們都需要對其進行一些基礎性的探索與研究。而在開發的生命周期中,我們的重點除了編寫代碼,還應當兼顧實施構建,搭建IDE,配置運行環境,部署生產環境,以及順暢地與外部進行各種調用和交互。
小結
當然,在實際開發程序的過程中,我們可能會碰到許多影響到生產率和交貨時間的因素。希望上面介紹的六種提高生產率的可行性技術建議,能夠對您的項目實踐提供幫助,讓您事半功倍。
原標題:6 Productivity Practices for New (or Old) Developers ,作者: Michael Bogan
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】























