先簡單介紹一下我的情況:大概去年的這個時候從學校畢業,二本A軟件工程,現在在北上廣深之一的某衛星城從事互聯網相關工作,月薪勉強養活自己。愛掏網 - it200.com看上去一份很沒說服力的簡歷,希望我下面的話,不會讓你有這個感覺。愛掏網 - it200.com
對于如何提升自己的編程能力。愛掏網 - it200.com其他的回答中很多人都說了,這沒什么捷徑,就是多練,問題是并沒有人說怎么練?一天敲50遍Hello Word算多練嘛?當然,各路大佬自然是知道該怎么練的,只是懶得在逼乎上浪費時間。愛掏網 - it200.com我屬于比較愛扯淡的,就在這里長篇大論的扯一波兒,不喜勿噴。愛掏網 - it200.com
首先、什么算你所謂的編程能力?
我們對一項技能的掌握程度往往很難量化,對于編程能力的考量可能比較抽象,我們來類比比較直觀的其他技能。愛掏網 - it200.com比如說什么叫會彈吉他?我們說一個人吉他玩的好,這個人會彈吉他,是指他會彈《小星星》?還是會彈岸部真明的《time travel》?(力薦,好聽!)恐怕都不是,我們對于會彈吉他的認知,應當是隨手給他一個不熟悉的譜子,你也能很快的用吉他精彩的演奏,我們才說這個人吉他玩的真6。愛掏網 - it200.com那編程也是,我們所希望的編程能力,指的是會寫雙向鏈表還是會寫二叉樹?恐怕都不是,我們所指的會編程,是指他在應對各種不同的業務需求時,都能很快的將業務邏輯轉化成編程邏輯,并且編碼實現的能力。愛掏網 - it200.com
那么、如何來鍛煉這種能力?
前段時間在羅胖的《得到app》上聽的一篇精品課,非常受啟發。愛掏網 - it200.com一位老師講如何高效地學習一項技能,他用兩年的時間就從零基礎達到了專業級的彈指吉他大師的水平,他所使用的方法很值得借鑒。愛掏網 - it200.com內容大概是這樣:他一開始接觸吉他,沒有從基礎開始練,而是直接挑戰難度極高的世界名曲開始演奏。愛掏網 - it200.com可想而知這難度是極大的,沒有任何基礎的他,很多和弦都壓不住。愛掏網 - it200.com尤其對與剛玩吉他的人,十指連心啊,壓弦的那只手是鉆心的疼。愛掏網 - it200.com一開始一句完整的都彈不下來,更別提什么掃彈,悶音,切音的技巧。愛掏網 - it200.com就這樣一節一節地彈,經過不懈的努力,他把這首曲子拿了下來。愛掏網 - it200.com巨大的成就感是自然的,但對于優秀的渴望使得這位大佬感到仍然不能滿足。愛掏網 - it200.com怎么辦呢?請教名師!這時候老師告訴他:“一禪吶!所謂知之者不如好之者、好之者不如樂之者,你現在已經能夠從彈奏吉他中獲得喜悅,現在,請再回過頭,從基礎開始學起。愛掏網 - it200.com”這下子他才開始從最基礎的樂理開始,什么叫節奏、什么叫旋律、什么叫音階、什么C調G調F調。愛掏網 - it200.com原來之前練到手指快疼死的的指法叫F和弦?原來之前的曲子里變調是這個意思?
和上去就啃吉他基礎教學不一樣,這波兒基礎的學習讓他任督二脈蹭的一下就通了,仿佛楊過一身雄厚的內勁得黃藥師點化一番,實力大增。愛掏網 - it200.com不但能將那首世界名曲演繹的更加純熟,對于其他沒有演奏過樂曲,只要稍加練習,就能夠德芙般順滑地彈奏下來。愛掏網 - it200.com
同樣的方法,映射到編程上,就是我想說的學習方法。愛掏網 - it200.com我很不建議一開始就從基礎開始啃,有多少人從大一剛入學立志將來做一個IT大佬,抱著一本《C++ Primer》開始啃,最后啃不到200頁就去LOL上分沖段位了。愛掏網 - it200.com所以我的建議是,一開始只要會點兒基礎語法,就定一個小目標去實現就好了,不必強求每一行代碼都是親自手寫。愛掏網 - it200.com遇到問題就查,百度也可以查書也可以,我一開始寫個五子棋小游戲的時候,連數組的聲明語法都是查書的。愛掏網 - it200.com把你遇到的問題從業務邏輯定位成代碼邏輯,然后知道從哪兒可以找到想要的答案,這個能力在未來的工作、編程和面試中非常重要。愛掏網 - it200.com一兩個完整的程序做下來之后,再回過頭來從變量、語法、表達式、流程控制、函數....重新去學習這門編程語言,這時候你會不斷地發現原來這個地方這么寫的原因是這樣?原來這個地方是這么實現的,那個地方我還可以這么寫。愛掏網 - it200.com一本枯燥的語法書籍你會很流暢地讀下來,甚至還可能讀出快感和興趣,這樣一頓操作之后,你可以算真正掌握了一門編程語言,有了自己的理解在里面,并且有對應的應用經驗,未來的面試中也可以講的頭頭是道。愛掏網 - it200.com
這就引出下一個問題,選擇什么樣的程序作為上手項目
首先!是你做出來的程序,一定要好看!
和語言沒關系,不管是HTML+CSS還是Python還是C。愛掏網 - it200.com我承認我是顏控,但這和個人癖好沒什么關系。愛掏網 - it200.com一個酷炫的UI設計將在很大程度上提升你的成就感以及你程序的品質。愛掏網 - it200.com這里說的是品質,也就是逼格,用戶體驗好了,逼格上去了,自己的成就感油然而生,對于編程的興趣也就上來了。愛掏網 - it200.com下面上一波兒圖來佐證一下我的觀點:
大一的時候用純C語言做的五子棋,比較遺憾的是AI算法是整合網上別人的:
是純C你沒聽錯,有一個簡單易用的函數庫,叫做easyx可以了解一波。愛掏網 - it200.com就按官網教程看幾篇下來做成這樣沒有絲毫問題。愛掏網 - it200.com當時課程設計,同學們看到這個程序佩服的和關老爺一樣,老師也對我贊不絕口,畢竟在大家都用控制臺畫界面的時候,我具有劃時代意義地用上了鼠標。愛掏網 - it200.com只有我自己知道這其中只不過是些花拳繡腿。愛掏網 - it200.com
這個年代比較近了,使用了C++ Qt,王者榮耀風格的連連看:
最后這個更亮了,得意之作也是畢業設計,準備擦亮眼:播放器主界面
桌面歌詞
手機遙控,同wifi下就可以遙控,還能定時關機
音樂魔方,旁邊是酷狗的音樂魔方。愛掏網 - it200.com有對比,才顯的我更有逼格。愛掏網 - it200.com
設置頁面,很尷尬。愛掏網 - it200.com這里都是假圖,左側五個按鈕點擊,右側是五張圖片來回換。愛掏網 - it200.com-_-||
除了這還支持全局熱鍵、播放MV、系統托盤等等。愛掏網 - it200.com
如果你張大嘴哇了出來,就說明這些圖片確實震撼到你了,試想如果你也把經手的程序做成這個樣子,誰還會說對編程沒興趣?興趣有了,動力就有了,項目搞完回過頭來系統地學習語法基礎,不但不再枯燥,而且理解也會更加深刻。愛掏網 - it200.com
所以、做程序的時候想辦法把程序做的漂亮一些,自己會P圖就自己搞素材,自己不會就去網上下漂亮的UI素材整合到你的程序里,相信我、這些花拳繡腿不用花多大功夫就可以做到。愛掏網 - it200.com
2.剛才說的是開發上手程序的建議的第一點,要好看。愛掏網 - it200.com還有非常值得推薦的一點:把你的程序當做產品來看待。愛掏網 - it200.com
當你把程序作為產品來看待的時候,你就會考慮到一個非常重要的因素:用戶體驗。愛掏網 - it200.com假設你的產品要上線,是要給別人來用的一個程序。愛掏網 - it200.com用戶體驗會倒逼你對你的程序作出一些調整和優化。愛掏網 - it200.com有些調整優化力所能及,有些難度高到可能你實現不了,沒關系,這對于你來說都將是成長很大的一步。愛掏網 - it200.com在調整和優化的過程中,你的代碼可能越改越亂,最后改不下去了,你會發現你的代碼需要從底向上重新整理編寫才能滿足需求,恭喜你,這是編程能力提升的又一個重要階段:Code refactoring 代碼重構。愛掏網 - it200.com無論重構的效果如何,一定會比上一個版本有所進步,這就是提升和成長。愛掏網 - it200.com也將成為你編程經驗中可貴的積累。愛掏網 - it200.com
就以我剛才的音樂播放器為例,作為畢業設計已經綽綽有余,但是如果以產品的眼光來定位,它還存在著很多的問題,我大致記錄如下:
隨著我編程能力的提升,這些問題我在解決的過程中就發現,我的代碼簡直是一塌糊涂!現在存在的問題幾乎到了不重構無法解決的地步。愛掏網 - it200.com所以這個程序的重構后來被正式提上議程,并且因為我的懶惰成功擱淺了長達一年之久,現在還涼著。愛掏網 - it200.com。愛掏網 - it200.com。愛掏網 - it200.com
學校學的東西到底還有沒有用?
編程能力的提升說完了,你可能會有這樣的疑問了,學校學的東西還有用嗎?好像按照我上面的辦法自己學也能小有所成。愛掏網 - it200.com
答案是毋庸置疑的,學校學的東西必然有用!
先來看看大學都學了什么?高數、大物、英語、C語言、數據結構、算法、計算機網絡、計算機組成原理等等。愛掏網 - it200.com顯然,都是些既枯燥又復雜的知識,后來做了開發的大家都知道,這些東西很難直接應用在生產實際中,相反,很多互聯網公司招聘,要求的是熟練使用各種框架。愛掏網 - it200.com前端要vue,React,java要ssh,python要Django,C++要Qt等等,大學里不教,企業招聘又要,怎么辦?這不是多了雨后春筍般的培訓機構么...甚至有人因此放出豪言壯語了:學校學的東西根本沒卵用,不如早早學個流行的框架出去找工作。愛掏網 - it200.com
難道說大學講的東西真沒用?既然這些東西我們工作中可能用不到,為什么學校還要講?而不講我們用得到的呢?我先來舉幾個實例:
1、你看到的大多數互聯網公司招聘都要求熟悉這那的框架,但是越是大型互聯網公司,比如BAT這種體量,學歷要求是研究生到博士,數據結構和算法要求是精通,英語要求是6級。愛掏網 - it200.com框架?不存在的,我招你進來很可能就是要參與開發我們自己的框架呢,你會用別人的框架用的再6也不是我想要的。愛掏網 - it200.com
2、如果你研究人工智能領域的一些技術,機器學習、深度學習、神經網絡什么的,一些似曾相識的名詞開始映入眼簾:貝葉斯?邏輯回歸?支持向量機?拉格朗日乘子法?數學讓我寸步難行。愛掏網 - it200.com。愛掏網 - it200.com。愛掏網 - it200.com
3、如果你學習前百度首席科學家吳恩達的全套機器學習課程,通篇沒有說過一個中國字兒的,英語讓我寸步難行。愛掏網 - it200.com。愛掏網 - it200.com。愛掏網 - it200.com
4、答主之前接觸過一款C++游戲引擎叫Cocos2d-x,設置一個小人跑酷,需要小人可以跑可以跳,自己會下落,可以碰撞檢測。愛掏網 - it200.com算坐標算的太麻煩,引入了一個叫Box2D的物理引擎。愛掏網 - it200.com從此,小人的像前移動,變成了給小人設置一個像前的初速度。愛掏網 - it200.com小人的自由掉落,變成了設置全局的重力加速度。愛掏網 - it200.com小人的跳躍,變成了向上給一個初速度。愛掏網 - it200.com碰撞檢測變成了設置小人和物塊為剛體,物理讓我寸步難行。愛掏網 - it200.com。愛掏網 - it200.com。愛掏網 - it200.com
5、答主一個朋友 @探索之言,在游戲行業做引擎優化和圖像處理的,有一天跟我打電話,問我記不記得求空間中兩個幾何體相交截面的公式?我回了個黑人問號臉,后來他又打電話說起最近在做GPU編程,我為了不失逼格仍然不懂裝懂的聊,他聽出我啥也不懂,之后就再沒給我打過電話了。愛掏網 - it200.com。愛掏網 - it200.com。愛掏網 - it200.com
(這里的應用場景是很常見的,在很多3D游戲的物體的投影,不全是投在地上的,有些投影會投在其他物體上,那這個時候顯示出來的投影的樣子,就是剛剛他問我的橫截面。愛掏網 - it200.comCS游戲中的噴漆也是這個原理。愛掏網 - it200.com)
6、前段時間寫一個貪吃蛇的小游戲,蛇的身體我封裝成了一個類,每一個類放了另一個身體節點的指針,巧妙地實現了貪吃蛇的走步方式,我沾沾自喜地找同事炫耀我靠大腦創造出的高科技算法,被同事懟了回來:“這特么不是鏈表么?!”。愛掏網 - it200.com
從上面的實例你應該已經能看出來了,說大學知識沒用的那些人,不是因為大學知識真的沒用,而是因為以他的能耐和眼光,還看不到大學知識用在什么地方。愛掏網 - it200.com編程達到一些深度,開始需要自己造一些輪子用的時候,數據結構和算法是不掌握不行的,一些高精尖領域的研究,比如圖像識別、大數據、人工智能等等,玩的全是數學。愛掏網 - it200.com而我們所說的這框架那框架,全部是基于我們大學里學的知識基礎封裝出來的,當你對編程研究到一定深度的時候,大學里落下的基礎,一樣也跑不了。愛掏網 - it200.com
這就是為什么說大學的東西不見得用得到,而大學還一定要講,因為這些都是最基礎最核心的東西。愛掏網 - it200.com坦白講,框架、編程語言都是用來解決問題的工具,工具用的好壞只能決定你跑的多塊,而基礎有多么牢固,才能決定你跑的多遠。愛掏網 - it200.com
未來你要成為怎樣的程序員?
這一點跟你的題目沒太大關系了,作為程序員分享出來與大家共勉。愛掏網 - it200.com
這個世界上有兩種人才,一種是所有的事情都知道一些,另一種是知道一些事情的所有,而這兩者兼具的人,就成了我們口中的業界精英、行業翹楚。愛掏網 - it200.com
當然,成為翹楚光靠努力不夠,還要一些運氣和天賦,但這并不代表我們普通人不能向翹楚看齊,即使成不了精英,成為大佬還是有可能實現的。愛掏網 - it200.com所以,對未來的規劃,我的建議是從深度與廣度兩個維度來成長,定義好幾個時間節點,在這些時間里就向這既定的目標來努力,如果中途感覺跑偏了,就回望初心,重新把自己劃回正規。愛掏網 - it200.com
就以我為例,我的大學基本是涼涼了,編程能力不錯,但是成績真的是有些不忍直視。愛掏網 - it200.com我對自己明確的規劃也是在快畢業的時候才有,那時候剛22歲,目標是在25歲之前,打造自己的廣度,爭取各個領域都有所涉獵有所了解,在25歲到28歲,選擇一個自己喜歡的領域深入研究,打造自己的深度,爭取在30歲之前,成為一個深度與廣度兼具的大佬。愛掏網 - it200.com在這期間,薪資不是我考慮的主要因素,薪資只是你個人能力的附屬品(這話俺媽講的)考慮的第一因素是成長。愛掏網 - it200.com扯得哲學點就是:不要著急花更多的時間去賺錢,去花時間,讓自己的時間更值錢。愛掏網 - it200.com當然,現在的我還差的很遠。愛掏網 - it200.com
雞湯寫完了,以上只是我的個人觀點以及經驗之談,希望能對你,對其他在校的在職的程序猿有或多或少的幫助。愛掏網 - it200.com
最后,還有很重要的一點,善于總結。愛掏網 - it200.com定期回過頭來看看,自己都學到了什么掌握了什么欠缺什么,也許你能從中淬煉出一些很有價值的東西,比如今天這篇雞湯,總結如下:
知之者不如好之者,好之者不如樂之者。愛掏網 - it200.com嘗試引導自己對編程產生興趣,從中獲取成就感。愛掏網 - it200.com
嘗試從實踐出發然后再回歸到理論,就像上面提到的學吉他的方式方法。愛掏網 - it200.com
做出來東西一定要好看,會更有成就感,更容易感興趣。愛掏網 - it200.com
用產品的眼光去定位你的作品,會得到更加意想不到的成長和進步。愛掏網 - it200.com
會用工具,能決定你跑的多塊,但基礎多么牢靠,才決定你能跑多遠!
這個世界上有兩種人才,一種是所有的事情都知道一些,另一種是知道一些事情的所有,而這兩者兼具的人,就成了我們口中的業界精英、行業翹楚。愛掏網 - it200.com
不要著急花更多的時間去賺錢,去花時間,讓自己的時間更值錢。愛掏網 - it200.com
自己從實踐中總結的才能叫真理,看別人說的只能叫雞湯。愛掏網 - it200.com
原文發布時間為:2024-06-27
本文作者:三級狗
本文來自和通數據庫合作伙伴“Python愛好者社區”,了解相關信息可以關注“Python愛好者社區”。愛掏網 - it200.com