作者 | 梅雪松
不知道你有沒(méi)有注意到,走進(jìn)各個(gè)企業(yè),總能看到那么幾句振奮人心的標(biāo)語(yǔ),其中“一次把事情做對(duì)”絕對(duì)是個(gè)高頻詞匯。以前每次看到,我都會(huì)想:這家企業(yè)也太教條了,都什么時(shí)代了,對(duì)失敗這么零容忍,還怎么創(chuàng)新呢?這個(gè)時(shí)代的主旋律不是從錯(cuò)誤中學(xué)習(xí),快速響應(yīng)、快速迭代嗎?
然而最近一年的嵌入式領(lǐng)域經(jīng)歷,讓我重新反思并意識(shí)到,“一次把事情做對(duì)”不僅是對(duì)工作效率的追求,更是對(duì)質(zhì)量控制的嚴(yán)格要求。在嵌入式產(chǎn)品開(kāi)發(fā)領(lǐng)域,這一理念的重要性尤為突出。
與Web系統(tǒng)相比,嵌入式產(chǎn)品有其獨(dú)特性。它是軟硬件的緊密結(jié)合體,不易升級(jí),一旦發(fā)布,出問(wèn)題的解決成本異常高昂,后果更為嚴(yán)重。所以“一次把事情做對(duì)”就是一個(gè)合理且必要的目標(biāo)了。
但是怎么做到一次把事情做對(duì)呢?我們從四個(gè)原則來(lái)聊聊。
在生活中,我們常說(shuō)“不做就不錯(cuò)”。在工作中,我也要把這個(gè)原則送給你,它仍然是真理。說(shuō)白了就是:沒(méi)代碼,無(wú)bug。
我不是說(shuō)讓大家不干活,而是在沒(méi)搞清楚需求之前,千萬(wàn)別急著動(dòng)手。你想想,畫(huà)畫(huà)草圖、寫(xiě)寫(xiě)文檔總比直接寫(xiě)代碼來(lái)得輕松吧?而且成本也低多了。如果錯(cuò)了大不了重畫(huà)重寫(xiě),可是寫(xiě)成了代碼,那就叫 bug。
你要學(xué)會(huì)拒絕需求。需求來(lái)了,你得想想這需求有價(jià)值嗎?合理嗎?如果對(duì)方說(shuō)不清楚價(jià)值,給不出理由,那就應(yīng)該拒絕。告訴他不要浪費(fèi)你的時(shí)間和公司的金錢(qián)。
你得要求明確的需求。當(dāng)業(yè)務(wù)方提出需求時(shí),BA(需求分析師)就要分析清楚這個(gè)需求的細(xì)節(jié),一句話的需求太模糊,沒(méi)法干,開(kāi)發(fā)者也要拒絕。這是你的權(quán)利。一旦你干了,出了 bug 那就是你的錯(cuò)。
但你可能要問(wèn)了,有些需求在初期就是模糊的,只能在做的過(guò)程中慢慢摸索,那怎么辦呢?
記住,不做就不錯(cuò),不寫(xiě)代碼就沒(méi) bug!你捫心自問(wèn),需求是模糊的,可代碼能模糊嗎?計(jì)算機(jī)只能分清0和1,根本就不會(huì)模糊處理。所以即使需求是模糊的,我們卻無(wú)法寫(xiě)出模糊的代碼。如果在這種情況下寫(xiě)出了代碼,必然是把模糊的東西變成了確定的東西,那大概率就寫(xiě)了個(gè)bug。
正確的做法是,需求必須明確,不能模糊。如果在產(chǎn)品初期,摸索階段,那么BA應(yīng)該提出假設(shè),進(jìn)行驗(yàn)證。提出假設(shè)后,需求就是明確的。我們假設(shè)是這種情況,代碼就這么開(kāi)發(fā),先驗(yàn)證,不斷迭代就能逐漸找到更好的答案。
這種通過(guò)假設(shè)來(lái)明確需求的方法叫試錯(cuò),你拿著模糊需求寫(xiě)成不模糊的代碼,那叫 bug,這兩者的區(qū)別自己體會(huì)一下。
現(xiàn)在我們把能拒絕的工作拒絕了,把模糊的需求明確了,剩下的就是不得不做的了。接下來(lái)的第二個(gè)原則是,少做就少錯(cuò)。
怎么做到呢?千萬(wàn)別急著動(dòng)手寫(xiě)代碼,否則你很可能要走不少?gòu)澛凡拍茏鰧?duì)。這里提供一個(gè)三步法,讓你少走彎路、少寫(xiě)代碼,少出錯(cuò)。
經(jīng)過(guò)這樣三步的準(zhǔn)備和驗(yàn)證之后,就可以信心滿滿地開(kāi)始編寫(xiě)代碼了。這時(shí)在面對(duì)復(fù)雜問(wèn)題時(shí)會(huì)從容不迫,出錯(cuò)的概率也大大降低。
前面鋪墊那么多,你可能都覺(jué)得那不是好好工作,只有寫(xiě)代碼才是真正工作。其實(shí)你寫(xiě)的代碼是非常寶貴的東西。產(chǎn)品的價(jià)值都是靠你一行行代碼實(shí)現(xiàn)的。前面的鋪墊就是為了讓你能真正寫(xiě)好代碼。
現(xiàn)在你終于開(kāi)心地寫(xiě)著代碼了。這時(shí)要思考的是自己怎么少干活,怎么讓機(jī)器多干活。畢竟,不做就不錯(cuò),少做就少錯(cuò)。
這里我們暫且不提讓AI來(lái)幫你寫(xiě)代碼。想想在開(kāi)發(fā)過(guò)程中,哪些工作是可以交給機(jī)器來(lái)做的呢?
開(kāi)發(fā)的工作可以分為三大塊:看代碼、寫(xiě)代碼、調(diào)試驗(yàn)證。
驗(yàn)證對(duì)你來(lái)說(shuō)既無(wú)聊又耗時(shí)間。你打著斷點(diǎn),看著變量是不是你想要的值,邏輯跳轉(zhuǎn)對(duì)不對(duì)。這樣的工作不停地重復(fù)著,有時(shí)候一抬頭發(fā)現(xiàn)周圍人都走光了,一天很快就過(guò)去而你還沒(méi)定位到問(wèn)題。
驗(yàn)證這部分是最容易交給機(jī)器來(lái)做的。完全可以寫(xiě)個(gè)驗(yàn)證代碼(測(cè)試代碼)來(lái)驗(yàn)證程序的輸出對(duì)不對(duì),是不是想要的結(jié)果。這是個(gè)一勞永逸的方法。驗(yàn)證代碼只要寫(xiě)一遍,它就在那里,孜孜不倦一遍遍運(yùn)行著。你完全可以放心交給它幫你完成驗(yàn)證的工作。再進(jìn)一步,甚至可以先寫(xiě)驗(yàn)證代碼,再寫(xiě)業(yè)務(wù)代碼,這就是極限編程中的測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(TDD)。
機(jī)器還可以幫你干其它活,那些重復(fù)的活都可以讓它干。所以這第三個(gè)原則“讓機(jī)器多干活”還有另一個(gè)名字:自動(dòng)化一切能夠自動(dòng)化的工作。
比如你的軟件的構(gòu)建,部署,一切能夠自動(dòng)化的工作,都應(yīng)該交給機(jī)器來(lái)做。因?yàn)槿硕际菚?huì)犯錯(cuò)誤的。
前面三個(gè)原則講的都是盡量地少干活,但只要干了活,就可能出錯(cuò)。所以最后這個(gè)原則是“早糾錯(cuò)、少浪費(fèi)”,怎么盡早地發(fā)現(xiàn)錯(cuò)誤,減少浪費(fèi)。
對(duì)于產(chǎn)品研發(fā)來(lái)說(shuō),最大的浪費(fèi)是返工。因?yàn)楣δ茏龅貌粚?duì)返工,因?yàn)橘|(zhì)量問(wèn)題返工,這些都會(huì)造成品牌受損,成本增加。
問(wèn)題發(fā)現(xiàn)得越晚,成本越高。所以我們要通過(guò)一切手段盡早糾錯(cuò)。極限編程提供了一個(gè)很好的參考機(jī)制:
(圖片來(lái)自網(wǎng)絡(luò))
如果我們能建立極限編程這樣的從分鐘到月級(jí)別的多維度反饋機(jī)制,就能夠在早期階段及時(shí)察覺(jué)問(wèn)題、糾正錯(cuò)誤,從而顯著提高工作質(zhì)量并減少不必要的浪費(fèi)。
質(zhì)量就是生命線!
基于嵌入式產(chǎn)品由于其自身特點(diǎn),“一次把事情做對(duì)”是每個(gè)研發(fā)人員的追求。通過(guò)文中介紹的四個(gè)原則和相應(yīng)的實(shí)踐,建立多維度的反饋機(jī)制,你就能夠最大化實(shí)現(xiàn)質(zhì)量的提升和資源的充分利用。
本文鏈接:http://www.www897cc.com/showinfo-26-75327-0.html嵌入式系統(tǒng), 如何一次把事情做對(duì)?
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com
上一篇: 系統(tǒng)設(shè)計(jì)面試問(wèn)題:如何設(shè)計(jì) Spotify,一個(gè)音樂(lè)流媒體系統(tǒng)