將極大豐富你的編程技能和知識(shí)的10個(gè)項(xiàng)目
在編程行業(yè)想要有好的職業(yè)發(fā)展,必須有足夠的創(chuàng)造才能。那么,當(dāng)你的創(chuàng)意枯竭或者不知道該如何培養(yǎng)創(chuàng)意時(shí)該怎么辦?
本文將給出十個(gè)編程提示,并附上要求指南,來(lái)給編程開(kāi)發(fā)者提供一些思路和創(chuàng)意。
下文的項(xiàng)目將提供商業(yè)化的全棧技能,并且都可以在一兩個(gè)月內(nèi)完成。如果把下班后和周末的時(shí)間都花在這些項(xiàng)目上,絕對(duì)是可以實(shí)現(xiàn)的。
每個(gè)項(xiàng)目都有足夠多的細(xì)節(jié)可以幫助開(kāi)發(fā)者入門(mén)。我們的目標(biāo)是采用可以在一段時(shí)間內(nèi)完成的***編程實(shí)踐,盡快地創(chuàng)建和完成項(xiàng)目。
1. 建立一個(gè)間歇性禁食的應(yīng)用程序
項(xiàng)目介紹
人們?cè)絹?lái)越關(guān)注健康和健身的話題,間歇性的禁食成為流行的做法。此項(xiàng)目需要?jiǎng)?chuàng)建一個(gè)可以在應(yīng)用商店內(nèi)獲取的移動(dòng)應(yīng)用程序。
對(duì)于JavaScript開(kāi)發(fā)人員來(lái)說(shuō),這是深入研究跨平臺(tái)移動(dòng)應(yīng)用程序開(kāi)發(fā)和使用各種框架(如Ionic、Flutter和React Native)的機(jī)會(huì)。
商業(yè)需求
- 可通知用戶禁食時(shí)長(zhǎng)的計(jì)時(shí)器
- 可設(shè)置/編輯禁食開(kāi)始和結(jié)束時(shí)間
- 可設(shè)置禁食提醒鬧鐘
- 跟蹤以下數(shù)據(jù):結(jié)束禁食時(shí)間、7天平均禁食時(shí)間、最長(zhǎng)的禁食時(shí)間、最長(zhǎng)的連續(xù)禁食時(shí)間、當(dāng)前連續(xù)禁食記錄
- 跟蹤圖表顯示:禁食目標(biāo)、已達(dá)到目標(biāo)、未達(dá)到目標(biāo)
- 可選擇禁食方案:晝夜節(jié)律、16:8、18:6、20:4、36小時(shí)連續(xù)禁食
預(yù)期提升/掌握的技能
- 持久本地設(shè)備存儲(chǔ)方面的經(jīng)驗(yàn)
- 開(kāi)發(fā)移動(dòng)本地應(yīng)用程序
- 利用移動(dòng)設(shè)備的特定功能,如鬧鐘和通知
2. 制作新聞聚合器
項(xiàng)目介紹
世界上每天都在發(fā)生著海量的新聞,人們很難跟蹤所有事件的***進(jìn)展??梢詣?chuàng)建一個(gè)新聞聚合器應(yīng)用程序,從多個(gè)來(lái)源提取聚合內(nèi)容(RSS),并根據(jù)日期將其整合。
此應(yīng)用程序可以基于移動(dòng)設(shè)備,也可以基于網(wǎng)絡(luò),具體取決于開(kāi)發(fā)者想要在哪個(gè)平臺(tái)提升技能。
制作一個(gè)新聞聚合器的好處是不需要數(shù)據(jù)庫(kù),并且可以只使用前端框架或庫(kù)(如Angular、React或Vue)將其構(gòu)建為單頁(yè)應(yīng)用程序。
商業(yè)需求
- 必須包含至少10個(gè)不同的資訊來(lái)源
- 按日期排序選項(xiàng)
- 按來(lái)源篩選選項(xiàng)
- 聚合到35個(gè)鏈接后分頁(yè)
預(yù)期提升/掌握的技能
- 能夠?qū)ML數(shù)據(jù)轉(zhuǎn)換為可讀的JSON格式
- 了解前端架構(gòu)
- 獲得框架/庫(kù)的經(jīng)驗(yàn)
- 外部資源使用
3. 使用外部應(yīng)用程序調(diào)用接口(API)創(chuàng)建在線商店
項(xiàng)目介紹
Printful有一個(gè)可靠的應(yīng)用程序調(diào)用接口,開(kāi)發(fā)人員可以利用它來(lái)創(chuàng)建貼牌商品。使用它可以創(chuàng)建一個(gè)具有購(gòu)物車和支付功能的、功能齊全的電子商店。
使用Pngtree中的圖片創(chuàng)建商品,并將其上傳到Printful的免費(fèi)帳戶里,從而可以用MVP模式部分處理此應(yīng)用程序。不需要太多的商品,只要10個(gè)就足夠用于測(cè)試。也可以使用Pngtree的模擬生成器來(lái)創(chuàng)建成品圖像。
理論上可以使用這個(gè)項(xiàng)目進(jìn)行匿名驗(yàn)證,并且不需要身份驗(yàn)證系統(tǒng)。該項(xiàng)目的目的是幫助開(kāi)發(fā)者深入了解應(yīng)用程序調(diào)用接口的結(jié)構(gòu)、工作機(jī)制以及商業(yè)層面上的配合方式。Printful提供了一個(gè)***的機(jī)會(huì)。
開(kāi)發(fā)者還需要選擇支付通道提供商(Stripe或Paypal),并了解支付的方法。兩種支付通道都有測(cè)試版本,不需要現(xiàn)實(shí)中的貨幣就可以進(jìn)行模擬購(gòu)買。
商業(yè)需求
- 客戶可以查看商品
- 客戶可以添加商品到購(gòu)物車
- 客戶可以查看運(yùn)費(fèi)
- 客戶可以下訂單
- 客戶可以查看/跟蹤訂單
預(yù)期提升/掌握的技能
- 了解商業(yè)應(yīng)用程序調(diào)用接口套件的使用
- 了解常見(jiàn)的應(yīng)用程序調(diào)用接口模式和結(jié)構(gòu)
- 了解數(shù)據(jù)結(jié)構(gòu)、JSON創(chuàng)建和使用
- 了解開(kāi)發(fā)人員視角下的商業(yè)購(gòu)物車流程
- 了解支付提供商處理流程
4. 使用自己的數(shù)據(jù)庫(kù)架構(gòu)創(chuàng)建日志
項(xiàng)目介紹
從零開(kāi)始的博客系統(tǒng)是提升CRUD技能以及創(chuàng)建數(shù)據(jù)庫(kù)體系結(jié)構(gòu)能力的***方式。在這個(gè)項(xiàng)目中,開(kāi)發(fā)者需要?jiǎng)?chuàng)建自己的應(yīng)用程序調(diào)用接口,以連接數(shù)據(jù)庫(kù)和前端來(lái)顯示數(shù)據(jù)。
要關(guān)注博客的功能,而不是它的外觀。建議使用諸如Twitter Bootstrap 和CSS Materialize的引導(dǎo)程序來(lái)加快開(kāi)發(fā)過(guò)程。
至于數(shù)據(jù)庫(kù),可以使用MySQL數(shù)據(jù)庫(kù),也可以使用MongoDB之類的無(wú)表格數(shù)據(jù)庫(kù)。由于歷史原因,大多數(shù)雇主仍在使用MySQL,而初創(chuàng)企業(yè)則更傾向于使用無(wú)表格架構(gòu)。但無(wú)論選擇什么,它們都能有效地豐富你的簡(jiǎn)歷。
該項(xiàng)目的重點(diǎn)是數(shù)據(jù)庫(kù)、連接到數(shù)據(jù)庫(kù)的接口以及數(shù)據(jù)的呈現(xiàn)。應(yīng)用程序調(diào)用接口將帶你了解Node.js這一領(lǐng)域,或者任何你選擇的后端技術(shù)。
雖然一個(gè)博客聽(tīng)起來(lái)很簡(jiǎn)單,但它是個(gè)可以遷移到實(shí)際環(huán)境中的合適的全棧項(xiàng)目。
商業(yè)要求
- 用戶必須在發(fā)布前登錄
- 用戶可以創(chuàng)建、更新和刪除日志
- 用戶可以將類別和標(biāo)記附加到日志上
- 任何人都可以查看日志
預(yù)期提升/掌握的技能
- 掌握數(shù)據(jù)庫(kù)體系
- 使用后端技術(shù)創(chuàng)建應(yīng)用程序調(diào)用接口
- 提升對(duì)所選前端框架或庫(kù)的掌握程度
5.使用產(chǎn)品的外部應(yīng)用程序調(diào)用接口創(chuàng)建心愿單應(yīng)用程序
項(xiàng)目介紹
這個(gè)項(xiàng)目既需要?jiǎng)?chuàng)建自己的數(shù)據(jù)庫(kù)來(lái)跟蹤心愿,也需要使用外部應(yīng)用程序調(diào)用接口。許多傳統(tǒng)零售商,如梅西百貨和沃爾瑪,都有可以用于這個(gè)練習(xí)的產(chǎn)品接口。
這個(gè)項(xiàng)目的優(yōu)點(diǎn)是,開(kāi)發(fā)者還需要?jiǎng)?chuàng)建自己的身份驗(yàn)證系統(tǒng),或者利用開(kāi)放的系統(tǒng)(如社交賬號(hào)登錄),以便為每個(gè)用戶創(chuàng)建個(gè)性化的列表。開(kāi)發(fā)者的選擇取決于時(shí)間和希望學(xué)習(xí)的技能。使用社交賬號(hào)登錄可能比創(chuàng)建自己的身份驗(yàn)證系統(tǒng)更容易,因?yàn)殚_(kāi)發(fā)者只需再次使用第三方應(yīng)用程序調(diào)用接口。
商業(yè)要求
- 用戶可以創(chuàng)建列表
- 用戶可以從列表中添加/刪除項(xiàng)目
- 用戶可以將列表中的項(xiàng)目標(biāo)記為已獲取
預(yù)期提升/掌握技能
- 使用外部商業(yè)應(yīng)用程序調(diào)用接口
- 數(shù)據(jù)庫(kù)CRUD操作
- 提升對(duì)所選前端框架或庫(kù)的掌握程度
6. 制作一個(gè)廣告欄
項(xiàng)目介紹
Craigslist網(wǎng)站和其他招聘網(wǎng)站本質(zhì)上都是電子廣告欄。開(kāi)發(fā)者需要具備制作付費(fèi)廣告位的能力,以此獲得報(bào)酬。
看起來(lái)這似乎是個(gè)比較簡(jiǎn)單的功能,只需列出職位、創(chuàng)建表格,并添加支付方式就能完成。
商業(yè)要求
- 用戶必須能夠注冊(cè)賬戶和發(fā)布廣告
- 用戶支付后才能展示廣告
- 用戶可以保存廣告草稿
- 用戶可以修改草稿和展示中的廣告
- 廣告過(guò)期后不再顯示
- 廣告對(duì)任何人可見(jiàn)
預(yù)期提升/掌握的技能
- 創(chuàng)建、讀取、更新和刪除等數(shù)據(jù)庫(kù)操作
- 將API連接到數(shù)據(jù)庫(kù)
- 支付通道流程和實(shí)現(xiàn)
- 提升對(duì)選定前后端框架或庫(kù)的掌握
7. 搭建一個(gè)具有人工智能特性的預(yù)訂App
項(xiàng)目介紹
機(jī)器學(xué)習(xí)是今年最火爆的話題之一,人工智能也是這一潮流的一部分。Google、AWS和Microsoft Azure都為開(kāi)發(fā)者提供人工智能云服務(wù)。開(kāi)發(fā)者可以從***或者自己最感興趣的項(xiàng)目開(kāi)始。
預(yù)訂應(yīng)用程序就像個(gè)游戲。你是個(gè)有特殊偏好的顧客,為什么不用這些偏好來(lái)影響這個(gè)游戲,通過(guò)人工智能增加銷售量呢?
挑選一個(gè)需要預(yù)訂服務(wù)的行業(yè),比如賓館、租車行或者餐廳,并創(chuàng)建一個(gè)允許用戶執(zhí)行預(yù)訂操作的應(yīng)用程序。然后讓人工智能基于用戶偏好給出建議。和朋友分享這一程序,測(cè)試它推銷產(chǎn)品的能力。開(kāi)發(fā)者還需要一個(gè)數(shù)據(jù)庫(kù)來(lái)跟蹤所有的訂單。
使用社交媒體賬號(hào)登錄可以減少項(xiàng)目所需開(kāi)發(fā)時(shí)間,但這并非必須。也可以使用Firebase的身份驗(yàn)證系統(tǒng)來(lái)達(dá)到同樣的效果。如果開(kāi)發(fā)者熱衷于建立自己的身份驗(yàn)證系統(tǒng),并且希望探索相關(guān)概念,這個(gè)領(lǐng)域有很多值得研究的內(nèi)容。
可以把這個(gè)項(xiàng)目做成網(wǎng)站或者移動(dòng)應(yīng)用。它是個(gè)簡(jiǎn)單有趣的小練習(xí),簡(jiǎn)單到足以入門(mén),但也復(fù)雜到足以吸引潛在的面試官。
商業(yè)要求
- 用戶必須登陸以訪問(wèn)預(yù)訂列表
- 用戶能夠執(zhí)行預(yù)訂操作
- 系統(tǒng)能夠檢測(cè)用戶偏好和基于歷史數(shù)據(jù)提出建議
預(yù)期提升/掌握的技能
- 實(shí)現(xiàn)云端人工智能服務(wù)
- 理解身份驗(yàn)證系統(tǒng)以及它與前端的關(guān)系
- 能夠跟蹤數(shù)據(jù)的數(shù)據(jù)庫(kù)架構(gòu)
- 提升對(duì)選定前后端框架或庫(kù)的掌握
8. 搭建無(wú)服務(wù)器社區(qū)論壇
項(xiàng)目介紹
未來(lái)的人工智能是無(wú)服務(wù)器架構(gòu)的。這一項(xiàng)目與云架構(gòu)相適應(yīng),使得開(kāi)發(fā)者有機(jī)會(huì)探索滿足項(xiàng)目需求的潛在架構(gòu)方案。
本項(xiàng)目需要CRUD操作、身份驗(yàn)證系統(tǒng)以及數(shù)據(jù)庫(kù)知識(shí)。但開(kāi)發(fā)者的任務(wù)并非用傳統(tǒng)的MEAN棧、MERN棧在機(jī)器上搭建Node應(yīng)用,而是采取分布式解決方案并且使用無(wú)服務(wù)器架構(gòu)。這意味著一種稍有不同的在本地構(gòu)建代碼的方式。這個(gè)練習(xí)能夠很好地鍛煉開(kāi)發(fā)者應(yīng)對(duì)各種困難的能力,同時(shí)幫助開(kāi)發(fā)者培養(yǎng)新的思維習(xí)慣。
從編程角度來(lái)看,無(wú)服務(wù)器對(duì)于新手來(lái)說(shuō)可能有些怪異,但它有自己的優(yōu)點(diǎn)。名為serverless的框架可以幫助開(kāi)發(fā)者的學(xué)習(xí),并且它支持所有主流的服務(wù)供應(yīng)商。這篇文檔非常出色,這一社群也正在蓬勃發(fā)展。
商業(yè)要求
- 用戶登錄后才能創(chuàng)建/編輯/刪除評(píng)論或帖子
- 用戶可以發(fā)帖
- 用戶可以評(píng)論
- 用戶可以回復(fù)帖子中的評(píng)論
- 帖子和評(píng)論對(duì)任何人可見(jiàn)
預(yù)期提升/掌握的技能
- 理解無(wú)服務(wù)器架構(gòu)的基礎(chǔ)知識(shí)
- 理解無(wú)服務(wù)器條件下的CRUD操作和數(shù)據(jù)庫(kù)連接
- 理解身份驗(yàn)證系統(tǒng)的工作機(jī)制
- 提升數(shù)據(jù)庫(kù)搭建技能
- 接觸云服務(wù)
9. 搭建一個(gè)基于云服務(wù)的聊天室
項(xiàng)目介紹
基于雷達(dá)應(yīng)用的即時(shí)通訊工具極大地影響了人們的日常生活,以至于人們甚至不再注意它們。這個(gè)項(xiàng)目所需的主要技能是在無(wú)需刷新頁(yè)面的條件下動(dòng)態(tài)更新消息。
如果開(kāi)發(fā)者不熟悉這一領(lǐng)域,或者不知道應(yīng)該使用哪種服務(wù),這一點(diǎn)可能有些困難。AWS有個(gè)叫做AppSync的應(yīng)用,Google有Firebase,而Azure也有SignalR。這些只是建議,還有其他可用于不同服務(wù)的架構(gòu)。
這一項(xiàng)目將讓開(kāi)發(fā)者了解他們選擇的云服務(wù)商的產(chǎn)品。云端編程本質(zhì)上也是其中之一。學(xué)會(huì)使用這些產(chǎn)品能夠拓展開(kāi)發(fā)者的能力范圍。
商業(yè)要求
- 用戶可以使用昵稱匿名聊天
- 用戶可以登錄聊天
- 已登錄用戶可以創(chuàng)建聊天室
- 已登錄用戶可以將聊天室設(shè)置為公開(kāi)或私密
- 匿名用戶只能訪問(wèn)公開(kāi)聊天室
- 用戶可以在聊天室中發(fā)送消息
- 用戶可以刪除自己創(chuàng)建的聊天室
- 用戶可以邀請(qǐng)其他用戶加入私密聊天室
- 只有加入私密聊天室的用戶才能在其中瀏覽和發(fā)送消息
預(yù)期提升/掌握的技能
- 了解指定的云服務(wù)
- 學(xué)會(huì)一系列特定服務(wù)的使用方式以及不同服務(wù)配合的方式
- 身份驗(yàn)證系統(tǒng)
- 數(shù)據(jù)庫(kù)連接和更新
10. 擴(kuò)展聊天室以包含付費(fèi)訂閱選項(xiàng)
項(xiàng)目介紹
前文列出的所有項(xiàng)目可能涵蓋了制作商業(yè)項(xiàng)目所需技能的90%,但是付費(fèi)訂閱功能卻沒(méi)有被提及。
訂閱功能需要開(kāi)發(fā)者了解選定的支付服務(wù)供應(yīng)商的應(yīng)用程序接口以及支付流程。這就是在此提及這個(gè)項(xiàng)目來(lái)補(bǔ)充已有項(xiàng)目的原因。理論上,訂閱功能可以用于以上任何一個(gè)項(xiàng)目,因?yàn)橛嗛喒δ艿囊笠话愣际且恢碌摹?/p>
Stripe和Paypal都把支付功能和其他沙盒環(huán)境一起作為自身應(yīng)用程序接口的一部分。
商業(yè)要求
- 用戶能夠登錄訂閱以獲得內(nèi)容訪問(wèn)權(quán)限
- 用戶可以取消訂閱
- 用戶可以把訂閱作為禮物贈(zèng)送給其他用戶
預(yù)期提升/掌握的技能
- 了解選定的支付功能供應(yīng)商的訂閱功能
- 實(shí)現(xiàn)支付沙盒
結(jié)語(yǔ)
每個(gè)項(xiàng)目都需要獨(dú)特的技能和知識(shí),但也涉及一些重復(fù)的部分。
開(kāi)發(fā)者的代碼量越豐富,就越能跳出選擇的特定編程語(yǔ)言或者技術(shù)棧,識(shí)別出重復(fù)應(yīng)用的模式。上面的項(xiàng)目會(huì)為開(kāi)發(fā)者執(zhí)行CRUD操作和搭建身份驗(yàn)證系統(tǒng)打下堅(jiān)實(shí)的基礎(chǔ)。如今,它們是在幾乎任何商業(yè)項(xiàng)目中都至關(guān)重要。
記住,這些項(xiàng)目的目的是豐富技能和編程知識(shí)。關(guān)注重要的特性而不是細(xì)枝末節(jié),除非那正是你想要提升的技能。開(kāi)發(fā)者可以盡可能地自己實(shí)現(xiàn)這些功能,或者在頭腦中搭建可擴(kuò)展和可增長(zhǎng)的結(jié)構(gòu)。具體的編程和實(shí)現(xiàn)方式將基于開(kāi)發(fā)者目前的編程水平。