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