對(duì)20年前的程序員的我說:做這四件事
> Photo by Joanna Kosinska on Unsplash
開發(fā)中的開發(fā)人員,我現(xiàn)在知道的四件事希望我能做得更多
二十年前,我以自由網(wǎng)絡(luò)開發(fā)人員的身份登陸了我的第一家公司。 二十年后,我仍然在做。 事后看來,我希望自己早日養(yǎng)成4種習(xí)慣。
> Photo by Daniel Tuttle on Unsplash
1.更多的自動(dòng)化
你一直很擅長(zhǎng)做一個(gè)單人商店,并且能夠?qū)⒑芏嗉?xì)節(jié)和流程牢記在心。 該客戶的部署有15個(gè)步驟,您每個(gè)月都要進(jìn)行一次,因此要記住,每次運(yùn)行最多需要5分鐘。
您將與同事就此展開辯論。 有了所有需要構(gòu)建的功能和所有要修復(fù)的錯(cuò)誤,這個(gè)問題就會(huì)一遍又一遍地出現(xiàn):
花費(fèi)時(shí)間來自動(dòng)執(zhí)行僅花費(fèi)您幾分鐘的時(shí)間并且每隔一段時(shí)間執(zhí)行一次的操作,真的值得嗎?
不要這樣想。 相反,請(qǐng)這樣考慮:
- 每月一次只需要5分鐘的時(shí)間即可手動(dòng)執(zhí)行該過程。 該過程的樓宇自動(dòng)化將需要3個(gè)小時(shí)。 這樣可以將運(yùn)行該過程所需的時(shí)間從5分鐘減少到3分鐘。
但是,這里有一個(gè)關(guān)鍵:
- 隨著流程的自動(dòng)化,運(yùn)行該流程的不再是您。
- 您獲得的收益每月不僅僅是2分鐘。 您的5分鐘可以變成0分鐘,因?yàn)楝F(xiàn)在該過程已自動(dòng)化,其他人可以花3分鐘來運(yùn)行該過程。 實(shí)際上,可以是其他任何人。 在關(guān)鍵時(shí)刻,團(tuán)隊(duì)中只有3分鐘時(shí)間的任何人都可以運(yùn)行此自動(dòng)化流程。
- 您不必做任何事情。 如果您實(shí)現(xiàn)更多自動(dòng)化,那么其他人都可以做所有事情,這樣您就可以集中精力。
> Photo by Battlecreek Coffee Roasters on Unsplash
2.測(cè)試更多
因?yàn)槟瞄L(zhǎng)將所有內(nèi)容掌握在自己的腦海中,所以您善于記住每當(dāng)構(gòu)建新功能時(shí)就需要微動(dòng)的每個(gè)小開關(guān),這只是為了確保您沒有通過添加新代碼破壞其他任何東西 。
但是,您始終確定自己沒有忘記什么嗎? 而且,當(dāng)Charles或Rosa添加代碼時(shí)該怎么辦? 他們是否具有需要切換的每個(gè)開關(guān)和切換的列表? 他們會(huì)錯(cuò)過一些東西。 因此,可能會(huì)發(fā)生的事情是……每當(dāng)他們集成新代碼時(shí),您就必須為他們動(dòng)搖。
測(cè)試就是要讓自己充滿信心,即確信自己添加的新代碼不會(huì)破壞任何舊代碼; 有信心,您可以部署代碼而無需在午夜醒來,因此想:"哦,如果用戶在刪除付款方式后(而不是之前)單擊該按鈕,他們將獲得500。我需要滾動(dòng)所有內(nèi)容 現(xiàn)在回來。"
是的,編寫測(cè)試需要時(shí)間。 首先編寫測(cè)試并不像首先編寫實(shí)現(xiàn)代碼那樣令人滿意。 但是,它可以幫助您保持頭腦清醒。 通過測(cè)試編寫,您可以首先關(guān)注代碼應(yīng)該做什么。 然后,您可以實(shí)現(xiàn)方法。
測(cè)試就是要給自己一些空間,即大腦中的空間專注于重構(gòu)和改進(jìn)代碼,因?yàn)槟辉傩枰櫵羞@些開關(guān)和切換,而無需費(fèi)力地確保重構(gòu)不會(huì)中斷 任何東西。 您的測(cè)試將為您做到這一點(diǎn)。 現(xiàn)在,您有足夠的空間來重構(gòu)代碼。
哦,順便說一句,如果您知道如何增加加分:
- 自動(dòng)化更多+測(cè)試更多=自動(dòng)化測(cè)試更多
- 使用自動(dòng)化測(cè)試,任何人都可以貢獻(xiàn)自己的代碼,任何人都可以運(yùn)行測(cè)試-您,您的隊(duì)友,您的客戶。 您將以更大的信心進(jìn)行構(gòu)建,以更大的信心進(jìn)行調(diào)整,以更大的信心進(jìn)行演示,并以更大的信心進(jìn)行交付。
> Photo by Markus Winkler on Unsplash
3.讓其他人更多
當(dāng)您回到大學(xué)時(shí)對(duì)項(xiàng)目進(jìn)行分組時(shí),我們都知道我們的代碼很糟糕。 我們誰都不知道我們?cè)谧鍪裁础?調(diào)試實(shí)際上只是在攪動(dòng)代碼行,以期使某些內(nèi)容不受破壞。
作為單人自由職業(yè)者,您的眼睛可以看到100%的代碼。 而且,很可能只有您的眼睛可以看到100%的代碼。 那讓你感到害怕和不安全。
這種恐懼和不安全感將使您很難向他人尋求幫助,組建團(tuán)隊(duì)并讓他人參與進(jìn)來。 那是因?yàn)槟阌肋h(yuǎn)不會(huì)覺得自己編寫的代碼已經(jīng)準(zhǔn)備好(足夠好)給其他程序員留下深刻的印象。 實(shí)際上,他們可能會(huì)批評(píng)。 他們將了解您是如何使用駭客進(jìn)行該API調(diào)用的,或者您是如何故意忽略了這種極端情況。
恐懼和不安全感將限制你。 嚴(yán)重。 您與他人合作和向他人學(xué)習(xí)的機(jī)會(huì)。 您有機(jī)會(huì)成為需要整個(gè)團(tuán)隊(duì)而不是一個(gè)人的商店的項(xiàng)目的一部分。 您成長(zhǎng)的機(jī)會(huì)。
因此,相反,養(yǎng)成讓他人多進(jìn)來的習(xí)慣。 請(qǐng)其他程序員看一下您的代碼。 接受您的代碼糟糕透頂,并希望那些審閱者會(huì)注意到您的代碼糟糕透頂。 擁有它。 然后從中成長(zhǎng)。 (順便說一句,他們的代碼可能也有糟糕的部分。)
另外,當(dāng)您開始執(zhí)行此操作時(shí),您會(huì)發(fā)現(xiàn)自己說:"好吧,特里,我想向您展示我已構(gòu)建的該模塊,但請(qǐng)給我……還有3天的時(shí)間,只是要先對(duì)其進(jìn)行一點(diǎn)清理。" 不要那樣做 您的代碼總是可以改進(jìn)的,并且永遠(yuǎn)不會(huì)準(zhǔn)備好進(jìn)行審查。 您將不斷需要更多的時(shí)間來準(zhǔn)備它。 只需擁有自己的代碼-即今天的樣子。 然后,請(qǐng)某人進(jìn)來檢查一下。
通過更早或更頻繁地執(zhí)行此操作,您將發(fā)現(xiàn)代碼開始有所改進(jìn)。 這是因?yàn)樵诰帉懘a時(shí),您將開始預(yù)料到您的習(xí)慣或缺點(diǎn)會(huì)導(dǎo)致審閱者畏縮或哭泣。 問責(zé)制不是很好嗎?
您的代碼將永遠(yuǎn)是完美的。 不要等到當(dāng)天,再請(qǐng)另一只眼睛重新審視并提供反饋。 否則,這一天將永遠(yuǎn)不會(huì)到來。
> Photo by Belinda Fewings on Unsplash
4.教更多
您將遇到許多非常具體的編碼問題,并且將在網(wǎng)絡(luò)上搜索解決方案。 您不會(huì)總是那樣找到解決方案。 取而代之的是,您將在一些第三方文檔中閑逛,使用不同的設(shè)置,創(chuàng)造性地考慮要解決的問題,然后再解決問題。
從那里,您可以繼續(xù)進(jìn)行下一個(gè)問題。 但是,您正在搶奪世界-尤其是那些將要面對(duì)剛剛解決的相同問題的程序員–一些艱苦的知識(shí)。 在花時(shí)間和精力去解決這個(gè)小問題后,請(qǐng)不要浪費(fèi)專業(yè)知識(shí)。 向他人傳授所學(xué)知識(shí)。
肯特·多德斯(Kent C. Dodds)稱其為"增加價(jià)值的影響力"。 SWYX(Shawn Wang)稱其為"公開學(xué)習(xí)"。
無論是撰寫教程文章還是博客文章,還是有關(guān)Stack Overflow的答案,您都需要捕獲它。 會(huì)有其他人受益。 不要搶他們。
您也會(huì)從中受益。 當(dāng)您準(zhǔn)備教書時(shí),無論是實(shí)際的演示文稿,文章還是主題帖子,您都會(huì)比初次學(xué)習(xí)時(shí)更好地學(xué)習(xí)解決方案。 您將更加深入,并真正理解問題所在。 您將優(yōu)化初始解決方案。 您將了解如何與初學(xué)者交流深入的低層次概念。
您將發(fā)現(xiàn)并為各種難題制定出色的解決方案。 這就是您為客戶做的。 但這也是您在特定代碼段中所做的。 花些時(shí)間"增加您的價(jià)值的影響力"-以一種教別人遇到相同問題的方式分享您的發(fā)現(xiàn)。 您將使他們成為專家。 您將成為自己的一員。
神速
Godspeed在您即將踏上的旅程中。 到達(dá)這里將是曲折的。 但是,如果您想到達(dá)目的地-可能不會(huì)更快,但至少會(huì)更明智地-請(qǐng)注意一下自己:
- 自動(dòng)化更多。
- 測(cè)試更多。
- 讓其他人參與進(jìn)來。
- 教更多。
Alvin Lee是位于亞利桑那州鳳凰城的全職開發(fā)人員和遠(yuǎn)程工作者。 他專門從事針對(duì)初創(chuàng)企業(yè)和小型企業(yè)的Web開發(fā),技術(shù)咨詢和原型構(gòu)建。 他在Moonlight上可用,您可以在其中查看他的個(gè)人資料或請(qǐng)求雇用他提供服務(wù)。