發(fā)布于:2020-12-31 11:44:00
0
151
0
當(dāng)新的Web開發(fā)人員開始他們的第一份工作時,會發(fā)生一種奇怪的現(xiàn)象。您剛剛獲得CS學(xué)位或從訓(xùn)練營畢業(yè),并且花了數(shù)月或數(shù)年的時間學(xué)習(xí)編寫高效的代碼,練習(xí)面試和構(gòu)建項(xiàng)目組合項(xiàng)目。最終,您接受了一個要約,并感到很興奮?–您現(xiàn)在是一名Software Engineer?。您在第一天就進(jìn)去了,抬起頭來。然后,在您工作的第一周,對您的了解就變得微乎其微。
在尋求成為開發(fā)人員的過程中,您已經(jīng)學(xué)會編寫高性能,優(yōu)雅的代碼,可以解決任何定義明確的問題。但是,為了有效地支持和擴(kuò)展Web應(yīng)用程序,您需要了解工具,框架和工作流,這些文件,框架和工作流使您的團(tuán)隊(duì)可以協(xié)作并部署實(shí)時(“生產(chǎn)”)應(yīng)用程序。
在學(xué)習(xí)或從事個人項(xiàng)目時,這些技能很難掌握,并且在訓(xùn)練營或CS程序中通常不會擴(kuò)展。不用擔(dān)心!本文將作為速成課程,內(nèi)容涉及您在成為第一份工作以成功成為一名開發(fā)人員時需要知道的許多事情-除了實(shí)際編寫代碼之外。
原因:從個人項(xiàng)目到產(chǎn)品代碼
在處理個人或項(xiàng)目組合項(xiàng)目時,您可能已經(jīng)部署并維護(hù)了代碼。那么,推動更改您的個人項(xiàng)目與為DoLitter(您剛剛加入的快速增長的新小貓垃圾交付啟動公司)的代碼庫做出貢獻(xiàn)之間有什么區(qū)別?
用戶負(fù)載:來自世界各地的數(shù)百甚至數(shù)千用戶都可以同時訪問DoLitter。停機(jī)可能會使公司每分鐘損失數(shù)百美元的訂單,破壞品牌并激怒現(xiàn)有客戶。
規(guī)模:DoLitter是一項(xiàng)強(qiáng)大的服務(wù),提供面向消費(fèi)者的應(yīng)用程序,用于移動和本地應(yīng)用程序的API,以及與行業(yè)中其他主要參與者的集成。隨著團(tuán)隊(duì)和代碼庫的增長,需要對代碼進(jìn)行良好的結(jié)構(gòu)化和文檔化,以便其他開發(fā)人員能夠有效地做出貢獻(xiàn)。在對用戶進(jìn)行任何更改之前,需要在盡可能接近生產(chǎn)的環(huán)境中對其進(jìn)行全面測試,以確保它不會妨礙現(xiàn)有功能并可以在多個設(shè)備上正常工作。
安全性: DoLitter是受惠于國際隱私法像GDPR,并與大型企業(yè)的合作伙伴,其遵循的作品嚴(yán)格的規(guī)則如何圍繞他們的用戶數(shù)據(jù)必須被處理。如果有任何問題,您將需要監(jiān)視軟件以盡快發(fā)現(xiàn)漏洞或數(shù)據(jù)泄露,并需要強(qiáng)大的服務(wù)器日志記錄以準(zhǔn)確地查明出了什么問題。
輔助功能:并非所有DoLitter用戶都具有相同的視覺,聽覺和運(yùn)動能力,并且可以將DoLitter與屏幕閱讀器等輔助設(shè)備一起使用。遵循諸如Web內(nèi)容可訪問性指南之類的標(biāo)準(zhǔn),所有用戶都可以平等地訪問該應(yīng)用程序,這一點(diǎn)至關(guān)重要。
可靠性:用戶-尤其是付費(fèi)用戶-始終希望網(wǎng)站正常運(yùn)行,可訪問且安全。DoLitter需要安全地存儲業(yè)務(wù)數(shù)據(jù)并定期對其進(jìn)行備份,以便例如在一臺數(shù)據(jù)庫服務(wù)器崩潰時,您可以從另一臺數(shù)據(jù)庫服務(wù)器快速恢復(fù)數(shù)據(jù)。
溝通:要實(shí)現(xiàn)我們到目前為止概述的目標(biāo),需要與其他開發(fā)人員,設(shè)計師和產(chǎn)品經(jīng)理合作。您可以自己設(shè)計,編碼和支持個人項(xiàng)目。但是,在DoLitter,您不能獨(dú)自完成所有事情?,而您的同事是您的最佳支持!學(xué)會與其他開發(fā)人員進(jìn)行有效溝通,如何尋求和提供幫助以及如何委派工作,這些都是與一個大型團(tuán)隊(duì)合作的必不可少的(也是最有意義的)方面。這是構(gòu)成整個基礎(chǔ)的關(guān)鍵主題其他文章!
方法:通過流程旅行
那么開發(fā)團(tuán)隊(duì)如何滿足所有這些崇高要求?擁有大量的工具和流程!讓我們討論一下如何對個人項(xiàng)目進(jìn)行更改與將項(xiàng)目推送到DoLitter代碼庫所涉及的所有過程之間的區(qū)別。
根據(jù)團(tuán)隊(duì)和代碼庫的規(guī)模,您的工作場所可能不會使用所有這些工具,或者可能會使用更多的細(xì)分工具。不必?fù)?dān)心記住所有名稱和縮寫。關(guān)注每個工具試圖解決的問題,如果您經(jīng)??吹皆摴ぞ?,請確保對其進(jìn)行進(jìn)一步研究。
Git工作流程
如果代碼是您對軟件進(jìn)行更改的方式,那么如何跟蹤和共享您的工作就可以使用git之類的版本控制系統(tǒng)(以及諸如Mercurial和SVN等不太受歡迎的替代品)。當(dāng)您處理自己的項(xiàng)目時,git可以是一個有用的工具,可以還原到以前的代碼版本或與他人共享您的代碼。但是,在DoLitter,其功率得到了極大的放大。
使用git(及其緊密相關(guān)的Web界面,如GitHub和GitLab),您可以共享部分工作,檢查代碼,查看其他開發(fā)人員正在從事的工作,將您的工作與其他開發(fā)人員合并,甚至查看個人提交。當(dāng)多個人處理(并提交)同一文件時,Git還可以幫助合并更改并解決沖突。所有這些都有助于DoLitter確保您貢獻(xiàn)從同事環(huán)境中受益的高質(zhì)量代碼。
對代碼更改有信心后,您可以提交拉取請求(您希望對代碼庫做出的更改),新代碼將由團(tuán)隊(duì)的幾位成員進(jìn)行審核。?有時,同事們具有特定的領(lǐng)域知識或重點(diǎn),有時還會有人愿意看看。
在學(xué)習(xí)時,您可能已經(jīng)在git中遇到了三個主要活動:推送,拉動和提交代碼。在工作中,您需要適應(yīng)以下情況:
創(chuàng)建描述新功能或工作范圍的分支
提交引入請求(“永久居民”),為你的本地修改被拉到到中央,或“主”資源庫
解決幾個工程師對同一代碼進(jìn)行更改時的合并沖突
通過確保描述性和準(zhǔn)確的提交來維護(hù)干凈的git歷史
重訂,以合并是一個常見的替代有助于保持清潔,線性項(xiàng)目歷史
cherry-picking,它允許您在分支之間移動提交
blaming,它顯示了您之前接觸過您正在使用的代碼的人。聽起來可能是指責(zé),但事實(shí)并非如此。它在那里,所以您知道誰在請求上下文,而不是指責(zé)。
了解git將使您更輕松地保存,操作,共享和查看所編寫的代碼。適應(yīng)它,您會發(fā)現(xiàn)它更容易協(xié)作。
測試,分期和制作,哦,天哪!
在個人項(xiàng)目上,您通常可以將代碼直接投入生產(chǎn)中-您的七個用戶非常容忍錯誤(謝謝,媽媽?。5?,DoLitter使用幾種不同的編程環(huán)境來幫助您快速編寫代碼,有效測試并自信地部署代碼。例如,在代碼上線之前,最好在與用戶看到的環(huán)境相似的環(huán)境中使用它。
您可以通過推送到“暫存環(huán)境”來完成此操作。生產(chǎn)環(huán)境的僅供內(nèi)部使用的克隆,用于復(fù)制用戶將獲得的體驗(yàn)。然后,如果您的代碼已通過自動化測試和內(nèi)部審核,則可以將其合并到生產(chǎn)中。為了跟蹤不同環(huán)境的不同需求,DoLitter具有顯式配置,存儲在配置文件中。
在將代碼上傳到生產(chǎn)服務(wù)器后,通常會對其進(jìn)行最后的構(gòu)建過程。然后,瞧瞧!您的更改已生效。但是,您是否想知道在部署過程中到底會發(fā)生什么?
部署過程
盡管您仍然可以在Firebase上部署 您的個人項(xiàng)目,但DoLitter需要確保推送到生產(chǎn)中的更改(“產(chǎn)品”)是鐵定的,并且不會破壞任何內(nèi)容。您的團(tuán)隊(duì)一天可能部署幾次,或者每當(dāng)將新更改合并到master分支中之后,就按照稱為“持續(xù)集成”的過程進(jìn)行部署。該過程可由CircleCI等持續(xù)集成工具管理。
那么,在部署期間究竟發(fā)生了什么?首先,您一直在本地“開發(fā)”環(huán)境中工作,這使您能夠幾乎立即看到更改。但是,部署到生產(chǎn)環(huán)境的文件通常不是您在本地計算機(jī)上使用的確切文件。
您使用的文件被捆綁在一起,被編譯為另一種語言,并通過去除空格和縮短變量名來縮小它們。
一套單一單元測試和復(fù)合集成測試會在您的代碼上運(yùn)行,以確保沒有明顯的語法或邏輯錯誤。
諸如CodeClimate之類的其他工具可以衡量您的代碼質(zhì)量(通過分析語法以獲取最佳實(shí)踐),而其他工具則可以檢查外觀變化,對構(gòu)建進(jìn)行負(fù)載測試以確保它能夠處理大量用戶,甚至衡量性能。
如果您的代碼通過了所有測試,則構(gòu)建成功,并且您可以向用戶顯示該應(yīng)用程序的版本。
錯誤監(jiān)控
您的代碼是實(shí)時的。是時候看看它在生產(chǎn)中的表現(xiàn)了。代碼投入生產(chǎn)后,將有許多平臺可以告訴您代碼的運(yùn)行情況。諸如Airbrake或Sentry之類的工具可幫助您發(fā)現(xiàn)應(yīng)用程序在生產(chǎn)中遇到的錯誤,這些錯誤可能由于以下原因而發(fā)生:
錯誤的第三方連接,例如與您交談的API超時
數(shù)據(jù)不一致
測試未發(fā)現(xiàn)的極端情況下的邏輯錯誤
此外,諸如Datadog和NewRelic之類的監(jiān)控工具還專注于實(shí)時應(yīng)用程序性能。他們跟蹤您的網(wǎng)站需要多長時間來響應(yīng)請求,甚至跟蹤代碼中需要加載最長時間的區(qū)域。有時,代碼不會引發(fā)任何錯誤,但是運(yùn)行緩慢。性能監(jiān)視可以幫助您找出問題所在。最后,如果確實(shí)出現(xiàn)錯誤,則諸如PaperTrail之類的服務(wù)器日志記錄工具可以幫助您查找錯誤。
哇,好多!
當(dāng)您開始在生產(chǎn)規(guī)模的Web應(yīng)用程序上工作時,您意識到作為一名開發(fā)人員,不僅要編寫代碼還有很多。學(xué)習(xí)新的代碼庫可能是一個挑戰(zhàn),但是學(xué)習(xí)行業(yè)工具和工作流程可能會令人生畏。許多新開發(fā)者覺得他們從了解某件事變成一無所知。這種經(jīng)驗(yàn)很普遍,而且完全正常,但是隨著您習(xí)慣公司使用的工具和工作流程,它會變得更加容易。
您的第一份工作可能涉及大量工具和過程,這些過程和過程使編寫代碼像是事后的想法。請記住,您不僅被雇用來編寫代碼,還被雇用來維護(hù)和構(gòu)建應(yīng)用程序?。而有效地做到這一點(diǎn)涉及到掌握工具并學(xué)會理解他們所解決的問題。隨著時間的流逝,您會發(fā)現(xiàn)自己編寫了更健壯和有效的代碼,并幫助DoLitter在世界各地可靠地運(yùn)送小貓咪。