你好,我是曼巴 out,很榮幸您打開(kāi)本專欄,希望本專欄能對(duì)您的工作起到幫助。
作為一名開(kāi)發(fā)人員,基本上都需要經(jīng)歷下面三個(gè)階段。從懵懂的小白一心只追求完成領(lǐng)導(dǎo)交代的任務(wù),到混個(gè)一年左右的你變成了所謂的老油條,可以獨(dú)擋一面了,不但能輕松應(yīng)付領(lǐng)導(dǎo)交代的任務(wù),還能獨(dú)立負(fù)責(zé)某個(gè)模塊的開(kāi)發(fā),并且還能稍微的考慮優(yōu)雅一下自己寫的代碼。工作三年及以上,心就變野了,想嘗試負(fù)責(zé)一個(gè)項(xiàng)目了,可以從整體來(lái)把控一個(gè)項(xiàng)目,包括技術(shù)選型、架構(gòu)、設(shè)計(jì)、實(shí)現(xiàn),并且主動(dòng)的考慮系統(tǒng)擴(kuò)展性、性能等方面。
這其實(shí)就是一個(gè)開(kāi)發(fā)人員真實(shí)的成長(zhǎng)經(jīng)歷,不能否定的是一個(gè)程序員的成長(zhǎng)是離不開(kāi)一個(gè)好的項(xiàng)目,一個(gè)能讓你提升能力的項(xiàng)目。本專欄的目的,主要是幫助那些沒(méi)有項(xiàng)目經(jīng)驗(yàn)以及那些慢慢脫離主流技術(shù)的同學(xué),來(lái)學(xué)習(xí)主流項(xiàng)目開(kāi)發(fā)中的思考,學(xué)習(xí)最有效的辦法就是學(xué)習(xí)別人的項(xiàng)目,模仿別人、套用別人的方案。
對(duì)于項(xiàng)目需求分析是否比較迷茫? 很多剛步入職場(chǎng)或者剛從培訓(xùn)機(jī)構(gòu)出來(lái)的同學(xué),可能缺少真實(shí)的項(xiàng)目經(jīng)驗(yàn),在面對(duì)需求時(shí),感覺(jué)無(wú)從下手,沒(méi)有任何頭緒,對(duì)于此時(shí)的你來(lái)說(shuō),真正的難點(diǎn)是不懂如何把所學(xué)技術(shù)轉(zhuǎn)換為真實(shí)的代碼,更多的是依賴有經(jīng)驗(yàn)的老同事來(lái)指導(dǎo)。我曾經(jīng)帶過(guò)一些 211 畢業(yè)的大學(xué)生,有的稍微指點(diǎn)一下就通了,有的怎么也寫不好代碼,bug 百出。其實(shí)真正的原因是拿到需求的時(shí)候,不懂如何去針對(duì)需求進(jìn)行設(shè)計(jì)。
也有很多老程序員,發(fā)現(xiàn)自己工作就是在不斷的寫業(yè)務(wù)代碼,工作沒(méi)有任何激情,也學(xué)不到新的東西,于是乎在技術(shù)上慢慢就脫軌了。想學(xué)卻又不知該從哪里入手,畢竟現(xiàn)在的技術(shù)棧越來(lái)越多,更新的也越來(lái)越快,如果著眼于某個(gè)具體技術(shù)去學(xué),突然感覺(jué)好迷茫,發(fā)現(xiàn)落下的實(shí)在太多了。
面試時(shí)沒(méi)有好的項(xiàng)目談資? 很多同學(xué)在面試的時(shí)候,談到項(xiàng)目經(jīng)驗(yàn)時(shí),大部分都是電商項(xiàng)目、普通的 OA 項(xiàng)目等,對(duì)于面試官來(lái)說(shuō),它們很快就能識(shí)別你所做的項(xiàng)目是否是培訓(xùn)機(jī)構(gòu)的作業(yè)項(xiàng)目,比如說(shuō),你做過(guò)電商項(xiàng)目,卻連什么是 SPU、SKU 都回答不上來(lái),再比如,如何實(shí)現(xiàn)商品價(jià)格策略的計(jì)算,如果回答不上來(lái),那在面試官那里幾乎就否定你了;還有就是過(guò)度包裝簡(jiǎn)歷而忽視了真實(shí)工作能力,一上來(lái)就是做過(guò)秒殺功能、權(quán)限管理等等,要明白這些功能基本上都是核心功能,不可能隨隨便便給沒(méi)有任何經(jīng)驗(yàn)的新人來(lái)做的,需要真正掌握其核心;再有就是面試官問(wèn)你做的項(xiàng)目是否有什么亮點(diǎn)、存在哪些技術(shù)難點(diǎn)等,如果你平時(shí)所做的項(xiàng)目都是簡(jiǎn)單的 CURD,那么此時(shí)你就會(huì)不知道該如何回答,這樣的話,在面試官眼里你所做的項(xiàng)目沒(méi)有任何難點(diǎn),或者說(shuō)你所負(fù)責(zé)的都是邊緣需求。
對(duì)于項(xiàng)目你們常遇見(jiàn)的問(wèn)題: 我曾經(jīng)帶過(guò)團(tuán)隊(duì),也曾負(fù)責(zé)過(guò)面試,我把我遇到的覺(jué)得比較有代表性的問(wèn)題跟大家總結(jié)一下。
- 面對(duì)需求無(wú)從下手,拿到需求直接開(kāi)始擼代碼,不設(shè)計(jì)、不梳理思路、不畫流程圖,導(dǎo)致最終結(jié)果是很多 bug、代碼結(jié)構(gòu)十分混亂,每次代碼 review 都會(huì)挨指出一堆問(wèn)題。
- 自己怎么想不到這樣的解決方案呢?很多同學(xué)在面對(duì)某個(gè)需求時(shí)往往沒(méi)有解決方案,不懂得使用什么技術(shù)去實(shí)現(xiàn)。這種情況一般是因?yàn)闆](méi)有足夠的經(jīng)驗(yàn)積累導(dǎo)致的,我們做項(xiàng)目的時(shí)候最重要的是積累經(jīng)驗(yàn),形成解決問(wèn)題的能力和思想,有時(shí)候,技術(shù)反倒是次要的。
- 面試時(shí),無(wú)法很好的闡述自己所學(xué)的技術(shù)、做過(guò)的項(xiàng)目,要么點(diǎn)到為止,要么被動(dòng)回答。其實(shí)主要是我們沒(méi)有形成知識(shí)體系(掌握足夠的技術(shù)棧,并且形成一個(gè)腦圖,并靈活運(yùn)用),打個(gè)比方說(shuō),同樣一個(gè)功能,你直接使用 MySQL 來(lái)實(shí)現(xiàn),導(dǎo)致感覺(jué)它很普通,普通到說(shuō)不出口。但是如果你借助某個(gè)中間件去實(shí)現(xiàn),或許瞬間就變成了項(xiàng)目的亮點(diǎn)了,就是這個(gè)道理。
- 還有就是代碼質(zhì)量和風(fēng)格問(wèn)題,我們經(jīng)常說(shuō),字如其人,其實(shí)代碼也是一樣,同樣反映出一個(gè)人的思維能力。
- 很多同學(xué)為什么學(xué)了 JVM、高并發(fā)編程、學(xué)了各種框架及源碼、刷了海量的面試題等等卻做不好項(xiàng)目,其實(shí)原因很簡(jiǎn)單,沒(méi)有足夠的能力去消耗這些深厚的內(nèi)功心法,作為開(kāi)發(fā)人員我們學(xué)習(xí)的路線,應(yīng)該是會(huì)用 -> 思考 -> 深挖,從而形成自己的方法論,然而這一切基本上都是靠項(xiàng)目去完成。
本專欄我主要是以網(wǎng)盤項(xiàng)目作為主線,我覺(jué)得對(duì)于想提高項(xiàng)目經(jīng)驗(yàn)的同學(xué)來(lái)說(shuō),還是挺有學(xué)習(xí)價(jià)值的。專欄主要從整體架構(gòu)、基本技術(shù)、真實(shí)功能點(diǎn)設(shè)計(jì)及實(shí)現(xiàn)、調(diào)優(yōu)等來(lái)介紹項(xiàng)目,整個(gè)過(guò)程會(huì)帶大家去思考、設(shè)計(jì),它包含了大部分真實(shí)項(xiàng)目中常見(jiàn)的技術(shù)棧和分布式解決方案。里面涉及常見(jiàn)的業(yè)務(wù)場(chǎng)景的分析及解決方案,可以套用到你們的項(xiàng)目當(dāng)中,或者面試的時(shí)候可以直接說(shuō)這些業(yè)務(wù)場(chǎng)景,這些業(yè)務(wù)場(chǎng)景都是比較有代表性,屬于技術(shù)亮點(diǎn)。
適合學(xué)習(xí)人群
- 剛畢業(yè)或者剛培訓(xùn)出來(lái)的同學(xué),可以把該項(xiàng)目吃透并且轉(zhuǎn)換成屬于自己的項(xiàng)目
- 從事傳統(tǒng)行業(yè)想轉(zhuǎn)互聯(lián)網(wǎng)的同學(xué)、沒(méi)有接觸過(guò)分布式架構(gòu)的同學(xué)、處于迷茫想提升的同學(xué),并不是說(shuō)學(xué)完該專欄你就會(huì)變的很牛逼,而是做什么事情我們都需要一個(gè)機(jī)緣巧合的東西去引導(dǎo)我們,打開(kāi)我們的眼界。