千萬(wàn)別直接敲代碼!
大家好,我是魚皮,今天給大家分享一個(gè)開發(fā)小經(jīng)驗(yàn)。
很多沒有實(shí)際工作過的同學(xué),可能都會(huì)認(rèn)為程序員的工作只有寫代碼 + 和產(chǎn)品經(jīng)理 “拉扯”,也會(huì)習(xí)慣性地用代碼量來(lái)評(píng)價(jià)一個(gè)程序員的工作強(qiáng)度和等級(jí),以為碼字如飛、每月能寫個(gè)幾萬(wàn)行代碼的程序員就是大佬。
我以前也是這么認(rèn)為的,直到我正式進(jìn)入企業(yè)工作,才發(fā)現(xiàn)真的不是這么一回事兒!高端的同學(xué)總是用最簡(jiǎn)短精妙的代碼來(lái)解決問題。包括我認(rèn)識(shí)的很多高職級(jí)大佬(被外界稱為 “架構(gòu)師”),他們的平均代碼量都很少、甚至有些已經(jīng)完全不寫代碼了。
那他們的工作都是干啥呢?

其中最常見的工作就是 設(shè)計(jì) ,這里的設(shè)計(jì)不是指 draw a picture 畫畫設(shè)計(jì)稿,而是根據(jù)真實(shí)的業(yè)務(wù)需求去設(shè)計(jì)系統(tǒng)的整體架構(gòu)、或者設(shè)計(jì)需求的解決方案、設(shè)計(jì)整個(gè)系統(tǒng)的劃分、資源的協(xié)調(diào)調(diào)度等。
通過這點(diǎn),也側(cè)面反映出了設(shè)計(jì)的重要性,代碼只是把我們的思想、我們的設(shè)計(jì)表述出來(lái)的一種介質(zhì)(或者說是工具)罷了。
也許我們的工作沒有達(dá)到架構(gòu)師的高度,但在我們做需求的過程時(shí),一定進(jìn)行設(shè)計(jì):先理清楚業(yè)務(wù)邏輯,想好怎么寫代碼,再根據(jù)設(shè)計(jì)去具體寫代碼實(shí)現(xiàn)(類似翻譯的過程)。
我剛進(jìn)騰訊實(shí)習(xí)的時(shí)候,導(dǎo)師給我安排了一個(gè)很大的工作 —— 重構(gòu)老系統(tǒng)為新框架。我當(dāng)時(shí)覺得很簡(jiǎn)單,不就是把框架 A 換成框架 B 么?業(yè)務(wù)邏輯基本都不用動(dòng),分分鐘搞定好吧!于是在排期的時(shí)候信誓旦旦地跟我導(dǎo)師說:3 天完成。
我導(dǎo)師只是笑了笑:年輕人不要太自信!慢慢來(lái)吧。
結(jié)果你猜怎么著?那個(gè)需求我做了整整一個(gè)多月。。。就是因?yàn)闆]有設(shè)計(jì)好怎么去做、也沒有調(diào)研框架 A、框架 B 的差異性,直接上手去換框架、寫代碼,導(dǎo)致到處都是報(bào)錯(cuò),甚至影響了業(yè)務(wù)邏輯。
還有幾次,我以為需求很簡(jiǎn)單,想都沒想就去寫代碼了,結(jié)果在寫代碼的過程中發(fā)現(xiàn)了大問題,就像走迷宮走到了死胡同一樣無(wú)力回天。如果先做好設(shè)計(jì),有了清晰的路線和規(guī)劃,再去寫代碼,出現(xiàn)延期、返工的概率就會(huì)大大降低。
所以設(shè)計(jì)有多重要就不言而喻了。
那應(yīng)該怎么做設(shè)計(jì)呢?設(shè)計(jì)分為很多種,比如系統(tǒng)設(shè)計(jì)、架構(gòu)設(shè)計(jì)、詳細(xì)設(shè)計(jì)等。每個(gè)展開去說都能扯個(gè)幾萬(wàn)字,這里我就挑 詳細(xì)設(shè)計(jì) 小講一下。
所謂詳細(xì)設(shè)計(jì),顧名思義,就是很詳細(xì)的設(shè)計(jì)。

比如業(yè)務(wù)流程具體是怎樣的、有哪些步驟?某個(gè)算法具體怎么實(shí)現(xiàn)等?
正好上周在 星球 中直播帶大家做項(xiàng)目,需求是開發(fā)一個(gè)用戶注冊(cè)功能的后臺(tái)。我就拿這個(gè)注冊(cè)功能的詳細(xì)設(shè)計(jì)來(lái)舉例子吧,如圖:

從上到下看一遍你會(huì)發(fā)現(xiàn),一個(gè)小小的注冊(cè)功能竟然有那么多要考慮的地方,各種各樣的校驗(yàn)。如果你不做設(shè)計(jì)、直接上手寫代碼,那么會(huì)不會(huì)漏掉一些校驗(yàn)、搞錯(cuò)關(guān)鍵步驟,導(dǎo)致整個(gè)系統(tǒng)出問題呢?后面發(fā)現(xiàn)問題再去改代碼,可就麻煩多了(要反復(fù)上線)。
所以在開發(fā)需求、尤其是包含復(fù)雜業(yè)務(wù)邏輯的需求時(shí),不要想當(dāng)然,直接去寫代碼了。而是可以像我上面舉的例子一樣先設(shè)計(jì)一下、想清楚怎么寫代碼,再去按照設(shè)計(jì)寫代碼就很簡(jiǎn)單了~
經(jīng)常有同學(xué)問我怎么提高業(yè)務(wù)思維、為什么我看到很多系統(tǒng)都能很快地想到實(shí)現(xiàn)方案,其實(shí)就是因?yàn)槠綍r(shí)做任何需求的時(shí)候,我都會(huì)思考、在心里做設(shè)計(jì)。我也強(qiáng)烈建議大家這么做,腦袋越用越靈嘛。
所以我也會(huì)在星球直播帶大家做項(xiàng)目過程中多帶大家分析問題、思考和設(shè)計(jì)方案,而不止是寫代碼本身,相信這樣會(huì)給大家?guī)?lái)更大的幫助。
以上就是本期分享,最后也歡迎大家加入魚皮的 編程學(xué)習(xí)圈子 ,和近 4000 名小伙伴們一起交流學(xué)習(xí),向魚皮等大廠同學(xué) 1 對(duì) 1 提問、跟著魚皮直播做項(xiàng)目、領(lǐng)取大量編程資源等。
現(xiàn)在加入限時(shí)優(yōu)惠 60 元 ,歡迎想一起學(xué)習(xí)進(jìn)步的小伙伴~
往期推薦
