想開(kāi)發(fā)一個(gè)全棧型的項(xiàng)目,我會(huì)去寫(xiě)一個(gè)系列文章
想了想,要讓更多的人享受技術(shù)創(chuàng)造的魅力,最重要的不僅僅快速學(xué)會(huì)技術(shù),還要用技術(shù)做出一點(diǎn)東西來(lái),做什么才能最體現(xiàn)一個(gè)人的創(chuàng)造力呢?那就是全棧項(xiàng)目。
為了讓更多零基礎(chǔ)的技術(shù)小白,能夠快速學(xué)會(huì)全棧開(kāi)發(fā)小程序、網(wǎng)站、移動(dòng)端App、桌面端軟件,我將會(huì)去寫(xiě)一個(gè)系列型的文章。
市場(chǎng)上九成以上的程序員都是業(yè)務(wù)型程序員,也就是能夠根據(jù)個(gè)人或企業(yè)的需求,將軟件開(kāi)發(fā)上線(xiàn),因此項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn)既是面試的重點(diǎn),也是程序員進(jìn)階的方式,還是個(gè)人開(kāi)發(fā)者將idea落地實(shí)現(xiàn)創(chuàng)意的途徑。從今天開(kāi)始,我們就來(lái)教大家如何進(jìn)行全棧項(xiàng)目的開(kāi)發(fā),這會(huì)是一個(gè)系列的課程,歡迎多關(guān)注。
什么是全棧項(xiàng)目
什么是全棧項(xiàng)目?比如一個(gè)可以每天發(fā)發(fā)文章供他人閱讀的博客,一個(gè)方便管理企業(yè)信息并展示的網(wǎng)站,一個(gè)可以進(jìn)行交易的小商城等等,這些博客、網(wǎng)站、小商城,既可以是PC網(wǎng)頁(yè)版,又可以是小程序,移動(dòng)App或者桌面端。
全棧項(xiàng)目可以讓個(gè)人將自己的idea落地成為一個(gè)創(chuàng)意類(lèi)技術(shù)產(chǎn)品,享受到技術(shù)創(chuàng)造的樂(lè)趣;也可以讓中小企業(yè)做出商業(yè)級(jí)別的軟件,從而獲取到收益。
之所以會(huì)去錄制這樣一套課程,就是我們不希望大家學(xué)編程只是停留在對(duì)理論、概念或者算法的學(xué)習(xí)上,更多的是希望大家能夠展現(xiàn)出“創(chuàng)造力”、“產(chǎn)品力”,能夠做出一些有益于自己生活、工作,甚至有益于社會(huì)的一些技術(shù)作品。
前置條件
在進(jìn)行全棧項(xiàng)目開(kāi)發(fā)之前,首先你要能掌握編程語(yǔ)言的基礎(chǔ)語(yǔ)法和生態(tài),還要了解前端和后端的基礎(chǔ)概念。
這里比較推薦的全棧開(kāi)發(fā)方案從前端來(lái)說(shuō)比較推薦:Vue、React等JavaScript網(wǎng)頁(yè)開(kāi)發(fā),小程序的原生開(kāi)發(fā),Electron、React Native等桌面端開(kāi)發(fā),F(xiàn)lutter等跨多端解決方案等等,還有QT、移動(dòng)App原生開(kāi)發(fā)等這里就不多做介紹了。除了Flutter是Dart編程語(yǔ)言以外,JavaScript始終是前端開(kāi)發(fā)的重中之重,無(wú)論你后端采用的是什么編程語(yǔ)言或框架。
而后端編程語(yǔ)言可以選擇的編程語(yǔ)言和框架有很多,你既可以用后端編程語(yǔ)言的框架從零開(kāi)始寫(xiě)起,比如:
PHP的Laravel、ThinkPHP,甚至原生開(kāi)發(fā);
Java的Spring;
JavaScript的express,koa;
Python的Django、Flask;
也可以依賴(lài)一些已經(jīng)開(kāi)源的項(xiàng)目比如Wordpress,比如Github上有很多開(kāi)源的項(xiàng)目,你可以基于這些項(xiàng)目做“二次開(kāi)發(fā)”。除此之外,我們也比較推薦使用騰訊云云開(kāi)發(fā)。
很多人學(xué)了編程之后,還不明白項(xiàng)目到底是什么,一個(gè)網(wǎng)站、小程序、App到底是怎么開(kāi)發(fā)的。這里既有自學(xué)編程的人,也有一些計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生,他們很多人往往學(xué)了兩三個(gè)月也還不能做出一個(gè)全棧項(xiàng)目,依然停留在對(duì)編程語(yǔ)言的語(yǔ)法、理論的學(xué)習(xí)上。
兩三個(gè)月的學(xué)習(xí)周期是很漫長(zhǎng)的,很多技術(shù)愛(ài)好者很容易中途就放棄了??紤]到市面上大多數(shù)教程并不是教技術(shù)小白怎么開(kāi)發(fā)出項(xiàng)目,因此,我會(huì)把新手最容易掌握的全棧開(kāi)發(fā)路線(xiàn)的教材都會(huì)去寫(xiě)一遍。即使是零基礎(chǔ)的小白,也能在業(yè)余學(xué)習(xí)一兩個(gè)月的時(shí)間就能掌握。要開(kāi)始學(xué)習(xí)全棧項(xiàng)目開(kāi)發(fā),也建議大家先看這些小冊(cè)。
項(xiàng)目到底是怎么開(kāi)發(fā)的
要開(kāi)發(fā)一個(gè)全棧性的項(xiàng)目,除了要有一定的技術(shù)基礎(chǔ)外,還需要掌握一些簡(jiǎn)單的軟件工程方法,它會(huì)指導(dǎo)你如何更好的進(jìn)行項(xiàng)目開(kāi)發(fā)。
1、瀑布型
你需要先了解軟件開(kāi)發(fā)的生命周期,也就是企業(yè)里面接到一個(gè)項(xiàng)目需求或者你去接一些私活,開(kāi)發(fā)一些外包項(xiàng)目時(shí),你不能直接上來(lái)就寫(xiě)代碼,而是大致會(huì)經(jīng)過(guò)以下幾個(gè)流程:
業(yè)務(wù)、需求分析,這個(gè)軟件要實(shí)現(xiàn)哪些功能,實(shí)現(xiàn)時(shí)具體有什么要求等等,這些會(huì)跟客戶(hù)反復(fù)溝通,最終會(huì)形成一個(gè)詳細(xì)的關(guān)于功能、交互等要求的需求文檔;
然后產(chǎn)品經(jīng)理或設(shè)計(jì)師會(huì)根據(jù)需求文檔將項(xiàng)目的原型圖勾勒出來(lái),設(shè)計(jì)師會(huì)拿著原型圖進(jìn)行頁(yè)面的設(shè)計(jì),從而出一個(gè)PS或Sketch的設(shè)計(jì)稿;
技術(shù)項(xiàng)目負(fù)責(zé)人再去根據(jù)需求文檔,會(huì)寫(xiě)一些項(xiàng)目迭代排期、人員分配的項(xiàng)目文檔,技術(shù)選型與配置的部署文檔,接口地址、調(diào)用方式等的接口文檔,前端后端溝通的模板文檔、模塊文檔、數(shù)據(jù)庫(kù)設(shè)計(jì)文檔等等技術(shù)文檔;
然后才是程序的實(shí)現(xiàn)、集成與部署、運(yùn)行與維護(hù)
這是一個(gè)全棧項(xiàng)目最為傳統(tǒng)而經(jīng)典的開(kāi)發(fā)方式,個(gè)人在自學(xué)開(kāi)發(fā)項(xiàng)目時(shí)會(huì)扮演多個(gè)角色,既要是產(chǎn)品經(jīng)理梳理需求,又要是設(shè)計(jì)師去涉及項(xiàng)目,還要是項(xiàng)目經(jīng)理跟進(jìn)項(xiàng)目的開(kāi)發(fā),最后才是程序員角色里的開(kāi)發(fā)、測(cè)試與運(yùn)維。在這個(gè)系列教程中,我們也會(huì)涉及到這種開(kāi)發(fā)方式。
2、增量式開(kāi)發(fā)
有時(shí)候一個(gè)完整的項(xiàng)目并不需要自己從零開(kāi)始開(kāi)發(fā),我們可以借助于一些模板、開(kāi)源項(xiàng)目或者公司已有的代碼,在已有的基礎(chǔ)上去做增量式開(kāi)發(fā)。
從程序員做全棧項(xiàng)目的角度講,這個(gè)往往相對(duì)來(lái)說(shuō)會(huì)比較容易。比如即使是零基礎(chǔ)的小白,也能在一兩天的時(shí)間內(nèi),在對(duì)軟件開(kāi)發(fā)處于完全不懂的狀態(tài)下,也能參考技術(shù)文檔的步驟說(shuō)明,用PHP里的Wordpress、Discuz搭建一個(gè)商業(yè)級(jí)別的網(wǎng)站,用Vuepress搭建一個(gè)博客,或者在Github上面去找一些star量比較多的項(xiàng)目,基于這些項(xiàng)目來(lái)進(jìn)行增量開(kāi)發(fā)。
利用已有的開(kāi)源項(xiàng)目能大大節(jié)省我們開(kāi)發(fā)一個(gè)完整的全棧項(xiàng)目的成本,是我們?nèi)腴T(mén)項(xiàng)目開(kāi)發(fā)時(shí)的一個(gè)不錯(cuò)的方式。因此,在教學(xué)的過(guò)程中也會(huì)去整理一些優(yōu)秀的開(kāi)源項(xiàng)目,并對(duì)這些項(xiàng)目進(jìn)行拆解式教學(xué)。
3、MVP最小可行性產(chǎn)品
瀑布型的軟件開(kāi)發(fā)模型里,需求都是客戶(hù)、公司給的,增量式開(kāi)發(fā)只能在已有的項(xiàng)目上修修改改,但是當(dāng)我們想自己開(kāi)發(fā)一個(gè)實(shí)現(xiàn)自己idea的項(xiàng)目時(shí),整個(gè)技術(shù)產(chǎn)品的需求都是自己想的,自己既是甲方又是乙方,這個(gè)時(shí)候MVP最小可行性產(chǎn)品的思維就顯得尤其重要了。
無(wú)論你是個(gè)人做項(xiàng)目,還是自己去拉工作室創(chuàng)業(yè),只要是想用編程的方式實(shí)現(xiàn)自己的創(chuàng)意,就一定要記住MVP,也就是先把最簡(jiǎn)單但又是最核心的功能給做出來(lái)上線(xiàn)了再說(shuō),正如以下配圖里面,你要開(kāi)發(fā)一個(gè)代步工具,就不要想著一上來(lái)就做一個(gè)“大東西”,把啥功能都往里面塞,而是要小步迭代。

程序設(shè)計(jì)方法
也就是說(shuō)你要做一個(gè)全棧項(xiàng)目,由于項(xiàng)目需求來(lái)源的不同,可能在你開(kāi)發(fā)過(guò)程中要先有產(chǎn)品經(jīng)理的思維,最后才是程序員需要掌握的程序設(shè)計(jì)方法。
很多人編程語(yǔ)言的基礎(chǔ)語(yǔ)法以及一些前后端的知識(shí)已經(jīng)掌握了,但是還是寫(xiě)不好程序,還是不知道一個(gè)程序到底是怎么設(shè)計(jì)的。在接下來(lái)的視頻里面,我們會(huì)整理一些項(xiàng)目,并對(duì)這些項(xiàng)目進(jìn)行講解,而貫穿這些項(xiàng)目講解始終的就是程序設(shè)計(jì)方法里最重要的過(guò)程思維、數(shù)據(jù)思維、構(gòu)件模塊思維。

