全文共 3241 字,預計學習時長 6 分鐘前端
被問到如何學習編程時,最常聽到的問題就是:「有沒有什麼新項目的好點子?」程序員
一些老套的答案有:「作一個象棋遊戲」 或者 「命令行界面」。面試
這些答案沒有錯,但這些例子不符合現代編程的須要。現代軟件編寫須要常用軟件服務化(SaaS)和網絡應用,這意味着程序員須要瞭解如何在線編程。算法
用戶網站或應用程序的編程須要服務器、身份驗證和數據庫,這個過程十分複雜。它會迫使你使用高難度的技術互動,而這些互動在開發井字遊戲命令行時永遠不會用到。數據庫
其中一些能夠由亞馬遜雲計算服務或其餘大公司經常使用的第三方來管理。一樣,這有助於你接觸到行業中有幫助且大量使用的技術。這將成爲你簡歷上更具實踐性的一筆,也有助於你學習使用新技術。編程
小貼士:若是你選擇了一個複雜的項目,那麼一次專一於構建一個特性。一口氣構建一個完整的網站或應用程序是很困難的。首先,建立一個登陸界面,或者在用戶登陸後建立主登陸頁面。若是試圖馬上完成整個項目,那麼你極可能會失敗。網頁爬蟲
某些項目推薦帖子存在問題:他們推薦的項目沒有激勵程序員繼續開發。例如,不少人建議建造一個爬蟲工具。後端
一旦你創建了網頁爬蟲並抓取了數據,你會怎麼作?api
爲何不利用這些數據建一個網站呢?不必定要很花哨或擁有不少瀏覽量,這個爬蟲能夠將數據拉入數據庫,而後選擇最受歡迎的博客。它能夠複製該博客的標題和幾個句子,而後建立一個在線分享的帖子。這個項目看似簡單,但會使人印象深入,讓你不同凡響。安全
經過這個網站,你已經代表本身能夠作的不只僅是對系統的一小部分進行編碼。相反,能夠從整個系統的角度思考。你須要考慮如何實現流程自動化、管理數據庫、建立網站和選擇博客。據此,你還可能擁有一個有形的最終產品。
若是沒有有形的最終產品,你可能會變得沒有動力,僅僅知足於建立一個爬蟲工具。
另外,說不定你的網站會變得很流行!
所需技能:數據庫、網頁爬蟲工具、自動化、網頁開發(用於博客)和通用編程。
你想去看樂隊或喜劇表演,可最終因忘記而錯過?也許你所在的地區有一個關於數據科學或大數據的免費會議,可是卻由於忘記檢查而錯過參與。
爲何不使用 Meetup 和 Eventbrite APIs 製做本身的聚集器呢?當關鍵字出如今事件描述或標題中時,它就會提醒你。如今,假設 Meetup 和 Eventbrite 都有類似的功能,但嘗試創建本身的系統老是十分有趣。
你能夠定製系統,讓它按照你想要的方式工做,甚至能夠將它作成一個網站,讓其餘人也能夠收到提醒。經過這個項目,你能夠練習使用兩種不一樣的 API,比較和概括兩種 API 中你喜歡或不喜歡的部分。所以,若是負責構建一個應用編程接口,你將更好地瞭解什麼是有效的,什麼是無效的。
所需技能:API、數據庫、自動化、網絡開發和通用編程。
當建立本身的項目時,你不須要每次都重造輪子。試着先創造一個可靠的基礎網站,容許用戶登陸、發佈照片和動圖、滾動訂閱等。接下來,能夠加入更多有趣的特性,例如關注、點贊和搜索——特別是搜索功能,它能讓你深刻了解推薦系統和機器學習的工做原理。
試着複製受歡迎的網站老是十分有趣。實際上,這是一種很好的學習方式,由於你必須對每一個特性進行逆向工程。逆向工程是一項偉大的技能,由於做爲一名軟件工程師,你將不斷地維護他人代碼,你須要用他們的思惟方式進行思考。
所需技能:機器學習(推薦系統)、數據庫、自動化、網絡開發和通用編程。
你是否曾經嘗試爲朋友挑選合適的禮物?若是你能建立一個網站,預測什麼樣的禮物適合朋友呢?這個網站可讓目標用戶建立一個帳戶,或是僅是獲得一個推薦。
一樣,這也爲建立須要身份驗證、數據庫開發等的賬戶提供了機會。
該項目的另外一個重要部分是你可使用亞馬遜的應用編程接口做爲附屬連接。你將學習到如下內容:第一,瞭解如何使用應用編程接口,輕鬆閱讀應用編程接口文檔。第二,若是你作得好,就能夠經過用戶購買的每件產品得到佣金。
經過這個項目,你也能夠建立一個基礎的機器學習模型。能夠建立一個測驗,篩選出最好的禮物,而後根據人們點擊該禮物的迴應率,學習驅動模型。
所需技能:API、數據庫、通用編程和應用程序開發。
考慮建立與 OfferUp 類似的網站。與其花錢,不如建立一個只容許交易的網站。這個概念將迫使你開發一些須要思考的特性。沒有計劃的話,就不能開展這個項目。
如何發佈、在哪裏找到最近發佈的項目、以及如何搜索——這都是你能夠構建的獨立功能。此外,你須要考慮用戶將如何互動,甚至他們其實是如何進行交易的。
這個想法在現實生活中不必定有用——但它能提高你做爲程序員所掌握的技能。
所需技能:數據庫、網絡開發、通用編程和應用程序開發(若是你選擇製做一個應用程序的話)。
合同和發票管理很是複雜。合同中可能有許多難以追蹤的細微條款和規定。
所以,即便你將它簡化爲一些核心組件,這依然一個很是好的項目。將複雜的業務流程轉化爲軟件並不容易。但正因如此,本項目是一個很好的挑戰。
再次強調,咱們不會把它複雜化。你須要採起一個基本特徵,好比輸入合同條款,並首先開發這一部分。而後,你能夠添加其餘功能,如發票跟蹤、合同分析和預測。
所需技能:過程管理、數據庫、網絡開發和通用編程。
像 KanbanFlow 這樣的任務板由幾個模塊化特性構建而成,所以是一個很好的項目。起始部分會花費你一點工夫,由於須要創建一個耐用的、動態的用戶界面。事實上,這個項目可能須要兩我的合做:一我的在前端工做,另外一我的在後端工做。
不要所以而氣餒!這其實是一個提升溝通和團隊合做技能的機會。大家兩人須要談論設計,確保雙方都能徹底理解,而且知道大家的模塊將鏈接到哪裏。
這比看起來更具挑戰性。
所需技能:溝通、前端、數據庫、網絡開發和通用編程。
任何旨在擁有不一樣類型用戶的項目都須要有趣的設計。如何確保僱主和潛在求職者都能經過體驗網站以知足自身需求?和其餘大多數項目同樣,你不須要同時關注全部項目。首先嚐試建立職務公告,而後能夠關注求職者及其反應。
所需技能:數據庫、網絡開發和通用編程。
大多數公司都擁有許多很是標準化的數據集,包括成本中心的會計數據、帳戶、行描述,最後則是實際交易成本。
數據集標準化讓建立分析變得更容易,這就是它的偉大之處。你能夠嘗試建立一個標準化的儀表板,幫助公司預測支出,查看每個月支出,並儘量幫助他們改善支出。
對該項目來講,可能要花不少時間學習如何確保數據安全。固然,咱們建議在深刻研究安全性前,首先嚐試構建側重於獲取並顯示標準化數據數據的模塊。這是一個永遠繞不開的難題!
所需技能:預測、業務邏輯、數據庫、網絡開發和通用編程。
若是在本世紀初就用過手機的話,那你可能已經玩過貪吃蛇了。這是一個簡單的遊戲,可是你能夠試着讓事情變得更復雜!首先,從嘗試開發遊戲開始。
你須要弄清楚如何在線開發遊戲。Sebastian Opperman 的《霓虹貪吃蛇》是一個很好的開始。以後能夠添加一些很酷的新功能,好比特殊物品或者特殊能力。
這是一個玩耍和娛樂的機會。該項目並非很是技術化,由於不會有不少用戶註冊並使用該網站。然而,如何保持遊戲在線運行是一個很好的挑戰。
所需技能:網絡開發、通用編程和用戶界面。
真心但願這個列表能激勵你建立一個超棒的新項目。能夠把它添加到你的簡歷中,並在面試中談論它。也許你會所以成爲一家市值十億美圓的創業公司的下一任 CEO!
「不積跬步,無以致千里」,但願將來的你能:有夢爲馬 隨處可棲!加油,少年!
關注公衆號:「Java 知己」,天天更新Java知識哦,期待你的到來!