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