如何為新項(xiàng)目選擇優(yōu)秀的編程語(yǔ)言
在開(kāi)始新事物之前,請(qǐng)考慮適合該工作的語(yǔ)言
大約一年前,我得到了自己的職業(yè)機(jī)會(huì)。 領(lǐng)導(dǎo)層接近我,問(wèn)我是否想領(lǐng)導(dǎo)一個(gè)新的云原生團(tuán)隊(duì)。
"當(dāng)然,我愿意。"
我花了一些時(shí)間在我公司的開(kāi)發(fā)團(tuán)隊(duì)中組建了一個(gè)有遠(yuǎn)見(jiàn)的個(gè)人團(tuán)隊(duì),他們認(rèn)為這會(huì)使團(tuán)隊(duì)成功。 我建立了一個(gè)不錯(cuò)的人平衡,他們的經(jīng)驗(yàn)范圍從僅僅幾年的經(jīng)驗(yàn)一直到20多歲。
從歷史上看,我們從來(lái)都不是云開(kāi)發(fā)人員。 我們是一家大型的企業(yè)軟件公司,在Microsoft技術(shù)堆棧中扎根。 我們知道一切都會(huì)突然發(fā)生,但是我們從未考慮過(guò)的一項(xiàng)更改是編程語(yǔ)言。 為什么?
因?yàn)槲覀兛偸悄菢幼觥?/p>
如果可行,為什么還要更改? 這就是我們所知道的,因此我們不必花時(shí)間學(xué)習(xí)一種新的編程語(yǔ)言。 我們將花費(fèi)所有時(shí)間來(lái)學(xué)習(xí)諸如CI / CD,無(wú)服務(wù)器開(kāi)發(fā)和NoSQL之類的知識(shí)。
開(kāi)始建設(shè)
您可以做的最壞的事情是忽略選項(xiàng),因?yàn)樗鼈兛雌饋?lái)很難。 尋求方向,因?yàn)檫@是正確的方法,而不是簡(jiǎn)單的方法。 不要假設(shè)方向,因?yàn)槟偸悄菢幼觥?/p>
"如果您想要新的東西,就必須停止做舊的事情。" -彼得·德魯克(Peter F. Drucker)
嘗試一種新的編程語(yǔ)言,它將以優(yōu)秀的方式解決您的問(wèn)題。 如果它不起作用,請(qǐng)吸取教訓(xùn),再找一個(gè)。 靈活地做出決定。 不要袖手旁觀,而要與您的團(tuán)隊(duì)做出明智的決定。 嘗試一下舊的大學(xué)。
您會(huì)發(fā)現(xiàn),對(duì)于應(yīng)用程序的技術(shù)方面做出的最早決定(即編寫(xiě)方式)將產(chǎn)生比較大的影響。 每個(gè)人都有學(xué)習(xí)新事物的能力。 不要害怕走不敗之路。
建立。 學(xué)習(xí)。 創(chuàng)新。 每天變得更好。
考慮未來(lái)
在您的整個(gè)職業(yè)生涯中,您都不會(huì)使用此產(chǎn)品。 在某個(gè)時(shí)間點(diǎn)上,您要么轉(zhuǎn)移到新項(xiàng)目,要么離開(kāi)公司,去其他地方尋求幫助。
這意味著您需要考慮繼任者。 在您加入之后維護(hù)該應(yīng)用程序的人員將在其中花費(fèi)更多的時(shí)間。 因此,請(qǐng)考慮讓他們的生活更輕松的原因。 問(wèn)自己以下問(wèn)題:
- 這是語(yǔ)言行業(yè)標(biāo)準(zhǔn)嗎?
- 我可以在最短的啟動(dòng)時(shí)間內(nèi)雇用街上有人在此應(yīng)用程序上進(jìn)行構(gòu)建嗎?
- 有社區(qū)支持嗎?
- 我可以在堆棧溢出中找到問(wèn)題和答案嗎?
作為領(lǐng)導(dǎo)者,您的工作是對(duì)公司產(chǎn)生影響。 聽(tīng)起來(lái)很愚蠢,為項(xiàng)目選擇正確的編程語(yǔ)言可以決定您留下正面還是負(fù)面的語(yǔ)言。
如果需要,請(qǐng)更改
在開(kāi)發(fā)過(guò)程的早期,您有一個(gè)窗口,您可以在其中更改編程語(yǔ)言,而對(duì)生產(chǎn)率的影響最小。 您已經(jīng)完成了概念驗(yàn)證,發(fā)現(xiàn)了一些陷阱,而且看來(lái)風(fēng)險(xiǎn)大于回報(bào)。
更改。
最小的工作已經(jīng)完成。 團(tuán)結(jié)一致,討論優(yōu)缺點(diǎn)。 如果團(tuán)隊(duì)認(rèn)為此編程語(yǔ)言不是正確的選擇,請(qǐng)盡早致電并切換。 您等待的時(shí)間越長(zhǎng),重構(gòu)的難度就越大。
這對(duì)我的團(tuán)隊(duì)來(lái)說(shuō)不是一次,而是兩次。 在此過(guò)程的早期,我們做出了一個(gè)明智的決定,即選擇使用Python。 幾周后,我們意識(shí)到鑒于我們的用例,這對(duì)我們來(lái)說(shuō)將不是一種可維護(hù)的語(yǔ)言。 因此,我們聚在一起,討論了我們的選擇,然后轉(zhuǎn)移到另一種語(yǔ)言。
您能做的最壞的事情是將自己鎖定在無(wú)法解決問(wèn)題的編程語(yǔ)言中。 在項(xiàng)目的早期階段保持高度警惕,以及早發(fā)現(xiàn)并做出積極的改變。
使用正確的工具完成工作
您將不會(huì)使用錘子將螺釘擰入一塊木頭或使用鋼鋸來(lái)鋸制2x4的邊緣。 不,您將使用適合手頭任務(wù)的工具。
您的編程語(yǔ)言是您的工具。 從字面上看,這就是您用來(lái)構(gòu)建產(chǎn)品的依據(jù)。 為了在最短的時(shí)間內(nèi)做出優(yōu)秀的應(yīng)用,請(qǐng)使用優(yōu)秀的工具完成工作。
以下是一些主要編程語(yǔ)言的公認(rèn)使用案例:
- Python —數(shù)據(jù)科學(xué),機(jī)器學(xué)習(xí),后端Web開(kāi)發(fā)
- C#—基于Windows的胖客戶端應(yīng)用程序,游戲
- Java —胖客戶端應(yīng)用程序,Android應(yīng)用程序,后端Web開(kāi)發(fā)
- JavaScript —快速的Web開(kāi)發(fā)
- Swift-iOS應(yīng)用
顯然,還有更多的語(yǔ)言可以考慮,但是請(qǐng)記住,某些語(yǔ)言比其他語(yǔ)言更容易解決問(wèn)題。
不要害怕打擾
羅伯特·克里格(Robert Kriegel)在他的《圣牛造就最好的漢堡》一書(shū)中談到了舊業(yè)務(wù)流程如何扼殺創(chuàng)新。 本應(yīng)在很久以前就進(jìn)行過(guò)重新評(píng)估的流程,但從未遭到質(zhì)疑,因?yàn)樗鼈兛偸强梢酝瓿傻摹?/p>
我和我的團(tuán)隊(duì)很快意識(shí)到,我們都習(xí)慣了的編程語(yǔ)言無(wú)法在我們的新應(yīng)用程序中使用。 我們構(gòu)建了一些Lambda函數(shù),這些函數(shù)由于冷啟動(dòng)時(shí)間而極慢。 我們考慮了解決方法,以使冷啟動(dòng)不成問(wèn)題,但我們認(rèn)為這將與我們掌握的工具對(duì)抗。
因此,我們決定成為破壞者。 我們加入了這個(gè)團(tuán)隊(duì)來(lái)進(jìn)行更改,并且我們不會(huì)讓舊的流程和神圣的牛妨礙我們。
做出不利決定的決定是艱難的,但是我們希望確保我們?nèi)〉贸晒Α?中斷通常意味著要勇敢面對(duì),因?yàn)闆](méi)有適當(dāng)?shù)牧鞒獭? 但是,如果您像我一樣擁有一支強(qiáng)大的團(tuán)隊(duì),一切皆有可能。