Java程序員入門必須克服的5個障礙
很多人都有入行或者轉行來做Java程序員的想法。不過想要成為一個合格的程序可並不輕鬆,作為一個新手想要入門程序,首先就有5個必須克服的障礙。這裡一一為大家道來並說明如何克服。
1不知道選擇哪種語言
很多人會問:「我應該先學什麼編程語言?」能有此一問,自然是因為你明白程序劃分的細緻,但也說明認知也僅僅停留在這一層上。
如果你心中已經有了一個既定的目標或者說是想要完成的項目,那麼就可以依此做出選擇。
1.如果你想構建iOS app,那麼你需要學習Objective C或Swift。
2.如果你想構建Android app,那麼你需要學習Java。
3.如果你想構建Web app,那麼你需要學習JavaScript。
其實現在我們可以使用JavaScript來創建任何類型的項目——無論是簡單的web和移動app,還是高級的硬體項目。大多數行業中都有它的身影:音樂、醫療、遊戲、時裝等等。
此種語言被淘汰的概率極低,且市場需求廣泛。如果你追求穩妥,那麼筆者建議你學習此種語言。
2不知道如何學以致用
選擇好方向之後,剛開始學習理論總是很輕鬆的,而且網上也有許許多多免費和付費的在線課程。
很多人都能較快的掌握理論知識,甚至能夠做到自己來解釋某個代碼片段的工作原理。然而一旦實際應用理論來解決問題並編寫新代碼的時候,就會無力應對。
導致這種情況出現的原因很簡單:技能空白。
比如說游泳。你可以閱讀大量的技術文章,然後解釋得就像一個專業教練。但是,要想實際應用這些理論,就需要大量的實踐、鬥爭和錯誤——你肯定會吞下大量的水!
所以我們需要將理論結合大量的練習,具體的方法步驟如下:
1.選擇一個複雜的項目。最好這項目得能夠激起你的興趣。
2.將這個任務分割成小而獨立的任務。例如,「實現登錄頁面」是一個很大的任務。但你可以將其分解為多個小任務。而關於一個小任務我們可以再次做個細分:不應該超過20行左右的代碼。一次不使用太多的理論概念。一次專註一項任務,而不是並行解決多任務。不要跳到下一個任務,除非你已經徹底測試過當前任務,並確信沒有問題。
3.自己在開始任務之前知道所有必要的理論知識。有時候,你可能不知道需要學習什麼理論,這很正常,所以你需要向他人尋求幫助:程序員朋友,導師,或類似Dev Store的平台。
4.你解決了任務,獲得了經驗值。
3不知道吸取教訓
選擇好方向之後,剛開始學習理論總是很輕鬆的,而且網上也有許許多多免費和付費的在線課程。
很多人都能較快的掌握理論知識,甚至能夠做到自己來解釋某個代碼片段的工作原理。然而一旦實際應用理論來解決問題並編寫新代碼的時候,就會無力應對。
導致這種情況出現的原因很簡單:技能空白。
比如說游泳。你可以閱讀大量的技術文章,然後解釋得就像一個專業教練。但是,要想實際應用這些理論,就需要大量的實踐、鬥爭和錯誤——你肯定會吞下大量的水!
所以我們需要將理論結合大量的練習,具體的方法步驟如下:
1.選擇一個複雜的項目。最好這項目得能夠激起你的興趣。
2.將這個任務分割成小而獨立的任務。例如,「實現登錄頁面」是一個很大的任務。但你可以將其分解為多個小任務。而關於一個小任務我們可以再次做個細分:不應該超過20行左右的代碼。一次不使用太多的理論概念。一次專註一項任務,而不是並行解決多任務。不要跳到下一個任務,除非你已經徹底測試過當前任務,並確信沒有問題。
3.自己在開始任務之前知道所有必要的理論知識。有時候,你可能不知道需要學習什麼理論,這很正常,所以你需要向他人尋求幫助:程序員朋友,導師,或類似Dev Store的平台。
4.你解決了任務,獲得了經驗值。
4不知道攻破難點
這裡有兩種難點。
第一種,你不知道如何解決。
你不知道從哪裡開始?你可能會隨機地去嘗試,或者從其他地方複製一些你自己也不明白的代碼。但是,這是沒有幫助的。即使你複製來的代碼有效也沒用。因為當你今後再一次碰到類似的任務,你依然不能解決。
如果你想妥善解決任務,那麼首先你得知道你為什麼卡殼。下面是一些可能的原因:
1.沒有很好地掌握這些理論知識:
語言語法。
庫或API的工作原理,某個具體方法或類的工作原理。
編程範式(例如:非同步編程)。
系統運作(例如:HTTP請求是理解Web開發的關鍵)。
如果是上述情況,那麼可以去複習理論知識,如果依然摸不著頭腦,也可以去找人尋求幫助。
2.任務太大了,那就分解為一個個小任務。
3.也有可能是因為你讀得太快,忽略了一些你以為熟悉其實似是而非的概念,所以無法理解任務要求。
第二種,你知道如何解決,但解決方法無效。
這是編程中最常見的情況,哪怕是那些經驗豐富的資深程序員也是如此。你的解決方案之所以不起作用最大的可能是你的代碼中存在著bug。
如何修復?方法是調試代碼。這也是作為一個程序員需要學習的最重要的技能之一。這不是可以隨便湊合的事,也不是玩幸運猜猜猜遊戲。如何尋找bug是有具體步驟的。而且很多書中都有教這個技能。
不幸的是,這是很多新手程序員失去動力選擇放棄的難關。很少有課程會說明調試的重要性。如果你不知道如何正確地調試,那麼它就是不可戰勝無法攻克的難關。
很多人擔心會花太多時間用於調試代碼。這是正常的,在你第一年的編程規劃中這是不可避免的。
甚至,你還得學著去喜歡調試。不妨將此看成是一個機會,一個修復錯誤提高編程能力的機會。當你解決了一個bug,可以問問自己這個問題:「我為什麼會犯這種錯誤?以後我該如何預防再犯?」
還有一個好主意是將找到的bug寫成編程日記,方便你總結和學習。
5不知道如何利用資源
當你在學習代碼,或調試代碼時,可以諮詢很多材料:書籍、課程、教程、導師,開發者社區等等。
在你學習這些資源時最常見的問題是,你並沒有完全了解幕後發生了什麼事情,也不知道概念是如何融入到更大的藍圖中的。
簡單的打個比方:你在某個問題上花了10小時,最後終於有人提供一個解決方案,你往往會在高興之餘拿了就用,並不考慮太多。而這樣做的弊端不小,筆者建議你在解決問題之後:
1.思考自己之前的思維過程。問問自己,做錯了什麼,對於這個特定的解決方案有哪些是值得你先前的思路借鑒和改進的地方。
2.詢問他人的思維過程。她/他是如何解決的呢?向對方學習,吸取經驗。
如果你足夠細心,可能會發現這五個障礙循環相扣,包含了作為一個程序員從入門到提升的整個過程。作為一個準備入門或者剛剛入門的程序員,可能其中的很多點你還沒有接觸。但在之前就擁有先驗的認識對於你在之後的學習成長中避開彎路還是非常有幫助的。
想要系統學習Java知識 加入學習群一四四九零一零七六 可以免費學習java還有大量學習乾貨哦
※2017年6月TIOBE編程語言排行榜:Java穩居第一
※Web前端架構師到底是個什麼鬼
※參加web前端培訓都需要注意什麼
※Java學習路線圖,專為新手定製的學習計劃建議
TAG:IT技術java交流 |
※Xbox Japan的老闆克服了銷售疲軟的後果 船員不會重複AC的錯誤
※蘋果已經克服AirPower的技術難關 隨時準備發布
※破局!Alan Yuille:深度學習關鍵在於克服組合爆炸
※小米MIX3半路截殺!直擊iPhoneXR要害,這次庫克服了
※三星新摺疊屏專利曝光:Galaxy Fold的缺陷有望被克服
※Screen Time體驗:蘋果是如何幫你克服手機上癮的?
※Fraunhofer開發微型顯示屏克服VR暈動症
※Nike Supreme NBA 18SS 三方聯名 棒球夾克服 重磅來襲!
※海康、UCLA、北理聯合提出3D DescriptorNet:可按條件生成3D形狀,克服模式崩潰
※廉價版iPhoneX想賣4400元 需要克服兩大難關才能實現
※CVPR2018 | 海康、UCLA、北理聯合提出3D DescriptorNet:可按條件生成3D形狀,克服模式崩潰
※克服管理VR/360°內容的挑戰
※如何克服春節前焦慮症 | Just Play
※克服FinFET與FD-SOI工藝控制挑戰
※TomTom推兩款API 助電動汽車車主克服續航焦慮
※Nine Muses朴景麗:希望能用SOLO專輯克服7年的低谷
※蘋果新設置的時間限制可以克服警方的iPhone解鎖
※就問庫克服不服?國產「iPhone X」霸氣上市夠有面
※庫克服軟!iPhone 真要支持雙卡雙待了?
※AMD 第三代 Ryzen 3000 處理器 將克服 高頻內存瓶頸