一、前言
對于新手來說,最開始學習編程的難度不亞于學天書,那為什么有經驗的程序員在接觸一門新技術時能夠快速的上手并且完成一些需求的開發呢?
有些人可能看了這個問題覺得我在說廢話,“有經驗那不快那怎么才快?”。其實你有沒有想過經驗是可以傳授的?在學習某一技術前,首先了解大致全局學習起來是否更加得心應手?
編程對于大多數剛接觸的同學來說是一片未知的世界,這個世界的所有規則都與自己之前所接觸的知識不同,從而導致在學習這一門技術時,每一步都要去理解這個“世界”中很多的“規則”從而積累對這個編程的認知;在我看來學習一門技術前,對這門技術有一定的了解將會對自己學習這門技術會有著很大的學習效率提升。
例如你從未做過菜,也沒見人做過菜,突然有一天你需要去做菜,你可能連第一步需要做什么都不懂,或者說每一步都需要有人去提示你,但你依舊不理解為什么要這樣做。有經驗的大佬由于熟悉整個流程、對這個世界規則熟悉,知道某些情況下為什么要這么做,并且可以從中得到自己的結論,那么在這些有經驗的大佬接觸這些“新事物”后也會快速的上手。
二、基礎編程心法
基礎編程排難
由于在院校中,大部分學生可能接觸的第一門編程語言是 C 語言,在此我們使用 C 語言為例。
在學習 C 語言時,很多學生由于剛學習編程,對于編程完全不了解,直接學習 C 語言更加難上加男,導致形成了一個很有意思的“刻板映像”,那就是 C 語言是最難的了。
其實我們可以把這個“難”理解成不同階段的難;的確,使用 C 語言 想要做出東西往往不易,很多新手對編程的理解就是學習完一門編程語言就可以去做軟件做應用,其實這是不對的。C 語言 想要進行開發還需要了解更多的知識,我們可以把 C 語言 難的一方面當作是“開發難”,做實際的應用難。那學習起來到底難不難呢?其實 C 語言 語法入門并不難。為什么這樣說?因為在 C 語言中很多都是使用固定的語言格式對某些代碼進行標識,致使你只需要按照其規則對“內容”進行填充就可以學習完 C 語言的語法入門。
編程語言的語法就是現實世界中的說話的規則,例如有一句話“今天這個菜真好吃”,你將這句話改成“菜這個真好吃今天”肯定是不對的。我們在編寫程序時如果覺得很難,那么將其看成一些固定的格式,并且按照該格式對內容進行填充即可。如果真的要說難度,“無規則”的一些語言更加讓新手難懂,例如python,使用空格對整個代碼進行結構上的“層級劃分”,對于新手來說該語言確實易于使用,但是某些層級上的知識點卻很容易搞混。
其實有一部分同學由于英文不擅長的關系,在學習編程時往往會有一種畏難心理;其實在此我想給各位剛剛學習編程的同學說一下,編程我們可以當做是魔法口令,使用特定的規則進行編寫就可以完成該功能;我們只需要知道功能上的含義即可,對于英文我們可以慢慢積累。
對于抽象概念的難點剔除
什么是抽象?可能一部分同學可能并不是很完全知道這個含義。我們可以理解抽象為一種具體世界中并不存在的一種概念或者事物,我們通過其描述或者規則使其具備了一種形態。在編程中,抽象的概念是普遍存在的;例如我們在編寫代碼的時候經常會說這一句代碼是“創建一個變量”(變量可以理解成一個存值的容器),但是某些同學可能會想“為什么我在這里寫上這句話就創建了一個變量了呢?我只是在這里寫了一個符號”。其實這就是抽象的原因,因為在剛學習編程時有部分同學可能并不能完全理解計算機系統中的某些原理,但這并不妨礙我們使用另外一種思想去接觸對抽象概念的不理解。
我們已知,編寫程序是給計算機命令,讓計算機按照我們的指令去做某件事,或者得到一個結果。我們在創建變量時可以理解成給予計算機這條命令,讓計算機去創建一個容器,我之后需要使用到這個容器,這樣就非常好的解決了對某些抽象知識點不理解的困擾。即時在學習更多知識點的時候我們也可以使用這個思維理解這一些內容,均是給予計算機命令讓計算機幫我完成這一件事情;例如創建變量、創建列表、創建一個類型、幫我去這個類型里面找一個方法并且使用它…通過這種方式學習編程不更容易嗎?
如何快速學習完一門語言呢
其實大佬們學習一門語言那么快的原因有幾個:
- 知道大部分的相關知識點
- 了解開發流程
- 不死記硬背
為什么大佬們會知道大部分的相關知識點呢?那是因為大部分常用的編程語言的知識點都是相通的。例如用世界上的語言打比方,中文說你好、英文說 Hello、日文說こんにちは,其實這些不同字符串所表達的意思是一樣的,都是為了表示你好。在編程中也一樣,學習完一門語言后,其它語言一般都會有大部分相互交叉的知識點,所使用的方法也是根據不同語言的規則進行使用,并且了解其作用,這樣只需要每次學習新語言的時候找到相關語言的知識點,了解規則進行內容的填充就ok了。
了解開發流程也是其中一點,知道這個語言的使用跟所學過的內容差不多,那么只需要從知識點上下手便可以快速上手這個新語言。就如同你學習 C語言后在學習 Java 發現其實不難,了解一個語言的開發流程后,對于其他類似的新語言學習也會對某些知識無師自通。
不死記硬背非常重要,新手學習編程時,很容易讓自己陷入一個誤區,就是需要去記去背這些內容;其實不然,我們還需要理解內容,最多記一下小筆記,在 CSDN 上寫一下博文,下次忘記了再來看博文就一下子記起來了。
三、學習完語言后如何開始寫“大”一點的程序應用呢
在此我并不做 C 語言相關的擴展說明,因為我本人并不是 C 程序員,過多的進行不擅長方面的講解導致不必要的過錯實乃不道德之事,在此我只做常規的幾個方面應用的講解,并且大多數人學習 C 語言到最后工作時也大部分選擇了其他方面。
C# 到 unity 游戲開發
學習完 C 語言后可以學習 C# 語言進行 unity 游戲的開發。因為學習完 C 語言后學習 C# 有一種較為天然的過渡,學習游戲開發大部分同學也是非常感興趣的。
使用 unity 進行游戲開發將會十分簡便,并且能夠得到很大的成就感;unity 也有很多的免費游戲素材提供使用,甚至可以說學完第一門編程語言后做其他的開發將會覺得更加簡單。
Python 到 Web、數據分析、爬蟲、自動化等
Python 也是一個不錯的選擇。Python 第三方支持優勢明顯,可以使用少量的代碼完成一個不錯的實際應用。例如在 Web 端可以學習 Django、Tornado、Flask框架,很快的完成 Web 應用的搭建,新手推薦學習 Django,學習簡單,很快完成 Web 網站的搭建,可能也就是剛開始學就可以創建一個網站了。
Python 從事數據分析也有很多庫的支持,甚至你不需要了解太多的數學知識都可以完成某些圖像識別、人臉識別等項目開發,例如使用 OpenCV 庫完成圖像方面的內容,也可以使用sklearn之類第三方支持完成對機器學習方面應用的開發。
Python 還可以快速的完成爬蟲的開發,有很多的支持庫,例如 scrapy、beautifulsoup甚至可以使用selenium 開發低效但開發效率極高的爬蟲應用。selenium 不止可以應用與爬蟲,還可以使用selenium完成自動化應用開發,例如自動搶商品等,但是會有一定局限。
Python 如果考慮就業,我個人比較推薦 Web 方面、自動化測試以及爬蟲方面。
C++ 到應用、游戲開發
學習 C++ 后,可以學習一些UI庫,例如QT進行桌面應用軟件的開發,或者學習虛幻編程,編寫大型的客戶端游戲是個不錯的選擇。
JAVA HTML 到移動端開發
學習完 JAVA 可以對移動端應用進行開發,但是如果不是大廠往往會追求開發效率。一般的創業公司為了項目進度,會選擇一些跨平臺的開發,使用 HTML 進行移動端前端開發,這樣可以同時完成IOS與安卓端應用。JAVA也可以做 Web 后端的開發。一般選擇前端開發需要學習一些前端框架例如 Vue、React、 Angular。
四、面向招聘進行學習
了解自身定位
在學習編程初時就應該對自身的定位有一個了解,有些211、985的學生可以憑借良好的學歷敲開大公司的面試機會,但是一些大專院校普通本科的同學如果去沖擊大廠面試機會會有一定難度,當然不是說這部分的學生會弱,其實這一部分學生也是有相當一部分很強的,但是這一部分學生的實力如何在簡歷篩選初期體現是一個很重要的問題;HR可能在篩選簡歷時自動將學歷不高的同學給過濾掉了。那如何能夠體現自己的實力呢?
CSDN 寫文與活動
其實博文可以很好的體現一個人的技術水平,可以編寫一些技術文章進行發表,并且可以參與平臺活動、競賽獲取一定名次。名次實力的提升對于自己的交際圈會有很大的提升幫助,可能你未來的工作就由此而來。
養成良好的博文編寫習慣對于自己的提升和反饋尤為重要,不要認為自身能力不夠而不去編寫,前期更重要的是自己對這個知識點的梳理和復習。
非211 985同學找工作建議
對于這一部分同學,我個人建議是根據自身能力的預估從而學習相應的知識。例如數據分析、機器學習一般找招聘時所需要的學歷較高,即使你有一定能力,但是在簡歷篩選方面你會比其它學歷高的機會少,而且這一類的招聘公司基本上以有實力的公司為主,所需要的人才“素質”(指明面上文字能夠表達的履歷)更高。
其實對于學歷不高、對自身技術認知較弱的同學可以去從事一些應用的開發;例如移動端開發、后端開發、前端開發。
移動端開發包括了IOS、Android、移動設備,可以使用java編寫這些移動端前端應用。其實現在很多中小企業使用的是跨平臺技術,例如使用 APICloud 之類進行跨平臺的開發,直接使用 HTML 語言生成一個跨平臺的應用,節省用人成本、開發周期。
Web 前端開發也是一種選擇,學習一些前端框架例如 Vue之類,編寫前端應用,部分公司還要求對微信開發有些了解,學習了相關技術后,進行實戰也是比較好找工作(中小規模企業)。
Web 后端開發可以學習java、python、php等語言。Web 后端開發一般是指在服務端的應用開發,簡單的理解就是一個網站的功能編寫。用php作為例子,學習完php后再學習 thinkphp這一類框架,可以快速的上手網站開發,但在此處還需要學習數據庫,使用sql語句對數據庫進行增刪改差等這些常規操作。如果想簡單完成網站的開發,可以使用python 的django,安裝配置后即可完成一個簡單的我網站。
五、剛剛所述的那幾點如何學習
快速的學習往往對自身的基礎重視不夠,在此我講解幾個共同點,減少小白們的學習難度。
移動端開發上一點說已經了解到,可以使用HTML代碼編寫頁面,最終實現一個跨平臺的應用。那如何減輕HTML的學習難度呢?其實我們可以理解HTML就是一個網頁如何進行顯示的描述,怎么理解這句話呢?我們在編寫 HTML 時,所編寫的內容是對這個網頁如何顯示的描述,其實就是告訴瀏覽器我們要如何對這個頁面進行排版,使用固定的格式完成即可;也就是一個說明書,告訴瀏覽器要怎樣顯示頁面。在學習HTML時還要學習 JavaScript ,使用JavaScript可以控制頁面元素,也可以使用 JavaScript跟服務器進行通信,這兩者是必要學的。
那后端如何學習呢?其實后端我推薦最好的方式就是學完基本語言后去學習一個開發框架,開發框架可以看相關的快速入門,首先快速的了解一遍這個框架的開發流程以及最基礎的使用方法,這樣你才可以一步步進行擴展,否則沒有成就感的學習會顯得枯燥。
六、副業真的很好賺嗎
有部分同學是覺得做程序賺錢很簡單,其實也是有一定難度的。有些同學可能會覺得自己遇見的大佬賺很多很多,其實并不是這樣,那一部分人是很少的一部分,很多程序員單人在互聯網上接單也是非常累的,疲于后期的維護,以及尾款不結賬等問題。在互聯網上接單有一個很大的不確定因素就是不穩定,有時候你很忙的時候有單子接有時候卻很久沒有私單。前幾年可能私單較多,現在已經很少了,如果說真的比較穩定的就是開個店做畢業設計了,也可以去編寫一些網站,做好SEO賺流量費,但是SEO要做好也是有一定難度,或者爬蟲。爬蟲通過正規的流程進行可以獲取挺好的收益,但是很多時候有一定風險,各位以后學習后一定要謹慎而行呀。
C語言學習目錄(更新中)
你去約個會,你零基礎的同學就學完C語言知識點過完了
《看聊天記錄都學不會C語言?太菜了吧(1)我在大佬群里問基礎問題沒人理?——學習建議
《看聊天記錄都學不會C語言?太菜了吧(2)我說編程很容易你們不服?——Devc使用及HelloWorld
《看聊天記錄都學不會C語言?太菜了吧(3)代碼都在談戀愛難道你不知道?——頭文件及標點
《看聊天記錄都學不會C語言?太菜了吧(4)原來我早就會編程了——變量
《看聊天記錄都學不會C語言?太菜了吧(5)打了一把游戲我學會了一個編程知識?——變量輸出及占位符
《看聊天記錄都學不會C語言?太菜了吧(6)以前跟我說編程很難的給我站出來——浮點數及變量運算
《看聊天記錄都學不會C語言?太菜了吧(7)下一篇文章告訴你牛郎是誰——if邏輯判斷
《看聊天記錄都學不會C語言?太菜了吧》(8)牛郎和織女竟有一個孩子?——多條件if
《看聊天記錄都學不會C語言?太菜了吧》(9)老公餅真的有老公送?——字符數組
《看聊天記錄都學不會C語言?太菜了吧》(10)程序媛聰明絕頂了——邏輯與運算符
《看聊天記錄都學不會C語言?太菜了吧》(11)2分鐘領悟數組——數組