掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
我個人認(rèn)識一些非常有才華的開發(fā)人員,他們可以一帆風(fēng)順地創(chuàng)建極好的軟件。正是這些天賦人士,使得外行人對我們這個行業(yè)充滿了很高的期望。但我要說的一個可悲的事實(shí)是:并非每個人都是忍者/大師/明星開發(fā)者。

創(chuàng)新互聯(lián)建站為企業(yè)級客戶提高一站式互聯(lián)網(wǎng)+設(shè)計(jì)服務(wù),主要包括網(wǎng)站制作、成都做網(wǎng)站、app軟件開發(fā)公司、微信小程序定制開發(fā)、宣傳片制作、LOGO設(shè)計(jì)等,幫助客戶快速提升營銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗(yàn)豐富的經(jīng)驗(yàn),可以確保每一個作品的質(zhì)量和創(chuàng)作周期,同時每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。
我就不是這些閃耀的新星,我只是一名平庸的開發(fā)者。如果你也不是天才玩家,那么本文將指導(dǎo)你如何在這個行業(yè)中生存下去。
我記不了很多東西。像標(biāo)準(zhǔn)庫中的函數(shù)和方法、參數(shù)位置、軟件包名稱,樣板代碼等等,都在我腦容量之外。
所以,我必須使用google搜索。我每天都這樣做。我也一直在重復(fù)使用舊項(xiàng)目的代碼。有時我甚至從StackOverflow或Github復(fù)制粘貼答案。是的,我的開發(fā)其實(shí)可稱之為:StackOverflow驅(qū)動開發(fā)。
但我并不孤單。許多其他開發(fā)人員也這樣做。有一個受眾面很廣的twitter討論就是由Ruby on Rails的創(chuàng)建者所啟動的。
那么,為什么一開始會認(rèn)為這種行徑是不好的呢?因?yàn)樗腥舾扇秉c(diǎn):
但是,我不認(rèn)為這些是大問題。它甚至可以作為是你的秘密武器。我有一些建議可用于減少其負(fù)面影響。
生存指南:
我們說什么,機(jī)器就做什么。即便是錯的,它們也毫不遲疑。所以,軟件開發(fā)中的主要問題不是機(jī)器,在于開發(fā)人員的心智能力。而這玩意提升的空間是非常有限的。所以,我們——作為平庸的開發(fā)人員——不能將有限的腦力浪費(fèi)在創(chuàng)建復(fù)雜的抽象、模糊算法或不可讀的長代碼塊上。你需要保持一切簡單明了。
但是,我們怎么判定代碼是簡單還是復(fù)雜?我們使用WTFs / Minute方法來衡量代碼質(zhì)量。
這個原則很容易理解。每當(dāng)你在代碼中發(fā)現(xiàn)一些你不明白的東西時——哦,這太復(fù)雜了。怎么做呢?
如何從頭開始保持簡單明了:
一些開發(fā)人員會證明自己可以提供高質(zhì)量的代碼。請看圖中的這位女士:阿波羅登月計(jì)劃的首席軟件工程師Margaret Hamilton。那幾乎有她人那么高的是什么呢?好吧,那正是她為登月任務(wù)編寫的代碼:
但是,每當(dāng)我編寫任何代碼時——我都不自信。即使是項(xiàng)目最簡單的部分,我也可以把事情搞得一塌糊涂。搞糟的原因包括:
關(guān)于“學(xué)習(xí)如何編寫沒有bug的代碼”的魔法書是不存在的。因?yàn)樗熊浖加衎ug——除了這個框架之外。遇到bug我們就應(yīng)該處理掉。
關(guān)鍵要點(diǎn)是:每個人編寫的代碼都不應(yīng)該帶有明顯的錯誤。對的,至少,我們應(yīng)該朝著這個目標(biāo)去做。但是我是如何保護(hù)我的項(xiàng)目免受我的摧殘呢?方法很多。
生存指南:
大約十年前,在我的團(tuán)隊(duì)開發(fā)出我們的第一個大型軟件項(xiàng)目時,我們將其作為java源文件發(fā)布。然而,它無法在目標(biāo)服務(wù)器上編譯。這距離需要提交給客戶只有若干小時了。這是一個巨大的失敗!最后我們用盡辦法終于能夠啟動并運(yùn)行了,但不可否認(rèn)這真的是一次刻骨銘心的體驗(yàn)。
發(fā)生這種情況是因?yàn)闃?gòu)建管道中存在眾多配置和復(fù)雜性。而我們無法妥善管理這個系統(tǒng)的復(fù)雜性。所以,從那一天起,為了減少這種復(fù)雜性,我嘗試在隔離的環(huán)境中打包我的程序。并且在實(shí)際部署發(fā)生之前在這個環(huán)境中測試它們。
在docker(通常還有容器)崛起的近幾年,事情變得簡單起來。docker允許你在相同的隔離環(huán)境中運(yùn)行開發(fā)、測試和生產(chǎn)。所以,你永遠(yuǎn)不會錯過任何重要的事情。
那么你會怎么做?說說我自己,我在創(chuàng)建服務(wù)器、初始配置或連接的時候總是會忘記一些事情。因?yàn)橛羞@么多需要記住的事情!幸運(yùn)的是,這些我們都可以自動化。有很多不同的工具可以自動化部署過程,這些工具厲害極了,如:terraform,ansible和packer。閱讀工具信息,找出實(shí)際需要哪一個用于任務(wù)。
我也嘗試盡快建立CI / CD。這樣,如果我的構(gòu)建在測試或部署中失敗,那么就會有報(bào)告發(fā)我。
生存指南:
終于,我的應(yīng)用程序已經(jīng)進(jìn)入了產(chǎn)品階段。它可以工作了。我可以休息休息,應(yīng)該不會出什么問題了。等等,不!一切都崩潰了。是的,我沒有說錯:一切。
實(shí)際上,有一些工具可以使得查找和解決現(xiàn)有問題更加容易。
簡而言之,我們需要監(jiān)控生產(chǎn)中的應(yīng)用。我們有時使用所有這些工具,有時只使用最需要的部分。
需要學(xué)習(xí)的東西是無窮的。如果我們想編寫出好的軟件,那么我們需要不斷地學(xué)習(xí)怎么做。沒有捷徑也沒有魔法。每天進(jìn)步一點(diǎn)點(diǎn),就會越來越好。
總之,我們需要理解兩件基本的事情:
這些與你的心智能力或心態(tài)無關(guān)。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流