你想告诉准程序员些什么?
?
關(guān)于大學(xué)學(xué)習(xí),我想告訴你:
1. 不要擔(dān)心自己沒(méi)有計(jì)算機(jī)基礎(chǔ),不用擔(dān)心自己跟不上。
我剛上大學(xué)的時(shí)候也很羨慕那些高中就學(xué)習(xí)了編程的同學(xué),看著他們?yōu)t灑流暢地敲擊鍵盤(pán),而自己因?yàn)橐粋€(gè)小小的循環(huán)語(yǔ)句就折騰了半個(gè)晚上。但等我畢業(yè)了再回頭看,其實(shí)當(dāng)時(shí)大家都還是在一個(gè)水平線上,都很基礎(chǔ),都啥不會(huì),都是從頭在學(xué)。
2.大學(xué)知識(shí)不是無(wú)用,只是它的重要性要在你工作很多年才后體現(xiàn)出來(lái)。
我大學(xué)時(shí)候因?yàn)橛X(jué)得用不上,不影響解決問(wèn)題就沒(méi)有去認(rèn)真學(xué)的算法,以及覺(jué)得很難搞懂就沒(méi)有去搞懂的數(shù)據(jù)結(jié)構(gòu),在我工作很多年后仍然還得從頭學(xué)起,因?yàn)楹芑A(chǔ),因?yàn)槌S玫健?/p>
3.數(shù)學(xué)很重要,也許這是你最后一次有大把的時(shí)間來(lái)好好學(xué)習(xí)數(shù)學(xué)。
等你參加工作了想回過(guò)頭來(lái)惡補(bǔ),很難。你的工作不允許,你的家庭不允許,歸根結(jié)底你的時(shí)間不允許。工作是你靠知識(shí)賺錢(qián)的時(shí)候了,沒(méi)有太多時(shí)間留給你學(xué)習(xí)知識(shí)。
4.對(duì)程序員來(lái)說(shuō),學(xué)好英語(yǔ)真的很重要。
能否使用英語(yǔ)查閱資料,是區(qū)分技術(shù)人員水平的重要指示之一。寄希望于“有人遲早會(huì)翻譯成中文”的人是愚蠢的、是會(huì)被淘汰的。而且永遠(yuǎn)拿著二手資料,你如何把控風(fēng)向,緊跟潮流?
5. 能大規(guī)模商用的技術(shù),都不需要智商,否則這種技術(shù)就不可能規(guī)模化。
所以準(zhǔn)程序員們一定要時(shí)刻警醒自己,「會(huì)一兩門(mén)編程語(yǔ)言只是職業(yè)的開(kāi)始」,持續(xù)學(xué)習(xí),深入學(xué)習(xí)才是你的出路。
6. 學(xué)會(huì)使用百度和Google
上面提到的那些你看不懂的東西,在編程領(lǐng)域太常見(jiàn)了。不只是現(xiàn)有的,還包括每年新出現(xiàn)的。很多你的同事、你的老師可能都不了解。但是Google和百度了解,前提是你學(xué)好英語(yǔ),所以不要忘了上面的第四點(diǎn)。
7. 理論基礎(chǔ)很重要,入職之后的差距就是這些看上去無(wú)用的基礎(chǔ)知識(shí)拉開(kāi)的。
數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng)原理,PC原理,數(shù)據(jù)庫(kù)原理等……這些基礎(chǔ)知識(shí)決定你在技術(shù)上能走多快和走多遠(yuǎn)。如果你不知道應(yīng)該學(xué)習(xí)哪些基礎(chǔ)知識(shí),也不知道該如何提升自己的話(huà),下面這篇文章推薦給你,里面有很詳細(xì)的方法論:
程序員是不是吃青春飯我不太確定,因人而異。但有一點(diǎn)我能確定,程序員是個(gè)靠技術(shù)吃飯的職業(yè)。
所以不要年紀(jì)輕輕就聽(tīng)信什么「工作日上班,雙休日好好休息就夠了」這樣的話(huà)。乘著年輕磨礪技術(shù)才是王道,不然在程序員這個(gè)后浪一波比一波洶涌的職業(yè)里混,你想吃青春飯都吃不了幾年。
不過(guò),想提升是一回事,如何有效提升就是另一回事了。我工作近十年,也帶過(guò)不少實(shí)習(xí)生、應(yīng)屆生,很多年輕人真的很努力在學(xué),加班加點(diǎn)工作賣(mài)力,但也就是差點(diǎn)火候,還是方法不對(duì)。
下面我從輸入和輸出兩個(gè)方面來(lái)講講程序員如何利用周末來(lái)提升自己。
首先你得明白,一個(gè)人的能力就像一個(gè)池塘,不斷的輸入又不斷地輸出,水池的容量以及水的質(zhì)量決定了輸出的高效與否,輸入大于輸出,你的池塘就會(huì)不斷擴(kuò)大,換句話(huà)說(shuō)你會(huì)的技能就越來(lái)越多,只輸入不輸出,你的池塘就是一灘渾濁不堪的死水,一實(shí)操就bug滿(mǎn)屏。
所以想要提升自己,就得同時(shí)做好輸入和輸出這兩塊。而輸入又在輸出之前,要想提升自己,首先就得做好輸入,學(xué)習(xí)更多的深度知識(shí)。
根據(jù)我與很多同行交流后得出來(lái)的結(jié)論,程序員要想學(xué)習(xí)效率高,學(xué)習(xí)效果好,只需要做好下面兩點(diǎn)最基礎(chǔ)的事情:
·學(xué)習(xí)基礎(chǔ)知識(shí)
·鞏固基礎(chǔ)知識(shí)
其中學(xué)習(xí)基礎(chǔ)知識(shí),又有兩點(diǎn)要注意的:找對(duì)方向、用對(duì)方法。說(shuō)的更直白一點(diǎn)就是學(xué)什么以及怎么學(xué)。
學(xué)什么?
首先要將基礎(chǔ)打牢固,最基本的算法和數(shù)據(jù)結(jié)構(gòu)一定要滾瓜爛熟,拿起來(lái)就能用。
比如下面這些個(gè)算法和數(shù)據(jù)結(jié)構(gòu)類(lèi)型就一定要熟練掌握。
10個(gè)算法:遞歸、排序、二分查找、搜索、哈希算法、貪心算法、分治算法、回溯算法、動(dòng)態(tài)規(guī)劃、字符串匹配算法。
10個(gè)數(shù)據(jù)結(jié)構(gòu):數(shù)組、鏈表、棧、隊(duì)列、散列表、二叉樹(shù)、堆、跳表、圖、Trie 樹(shù);
不要小瞧了這小小二十組詞,展開(kāi)了去學(xué),怎么都得花你個(gè)一年半載,例如單單排序算法就又可以分為以下十種:
然后,當(dāng)將這些基礎(chǔ)知識(shí)吃透了之后,注意是吃透,至少得做到要用到的時(shí)候就能直接用不用回去再翻書(shū),你就可以去學(xué)習(xí)一些更深入的內(nèi)容:
比如:
·編程框架是如何運(yùn)轉(zhuǎn)起來(lái)并輸出“Hello World”的?
·如何讓自己更正規(guī),更有章法地使用Mysql呢?
·Key、List、Hash、Set、ScoreSet各自的使用場(chǎng)景有何不同?
·主流的編程框架都和設(shè)計(jì)模式相關(guān),那他們有沒(méi)有共通性?
當(dāng)你把這些問(wèn)題想清楚了的時(shí)候,你的程序員進(jìn)階之路就走了一半了。
?
怎么學(xué)?
每個(gè)人的學(xué)習(xí)方法都不一樣,有的人喜歡邊做項(xiàng)目邊學(xué)習(xí),有的人則喜歡學(xué)一段時(shí)間做一個(gè)項(xiàng)目,有的人喜歡看書(shū)學(xué),有的人喜歡看視頻學(xué),這些都不是問(wèn)題,重要的是找到適合你自己的。
但下面這幾點(diǎn),最好還是不要去做了,因?yàn)槲規(guī)Я诉@么多人,敢這樣做的都是事倍功半,結(jié)果慘不忍睹。
1.一味的對(duì)著別人的代碼去敲。
剛開(kāi)始不會(huì)做只有跟著別人敲,這不是問(wèn)題,問(wèn)題是跟著別人敲了之后你要自己理解自己記憶把它變成自己的東西。照著別人代碼敲一遍兩遍哪怕三遍,除了讓你看得仔細(xì)點(diǎn),練了打字外并沒(méi)有其它任何幫助。
因?yàn)?strong>模仿復(fù)現(xiàn)不是關(guān)鍵,思考才是關(guān)鍵。你要能做到思考學(xué)習(xí)別人思路后,脫離書(shū)本和博客,完全自己實(shí)現(xiàn)功能。只有這樣,你的學(xué)習(xí)才是有效的。
2.想著一口氣吃成個(gè)胖子
這一塊的情況稍微少見(jiàn),但也不是沒(méi)有,有的人急于求成,學(xué)習(xí)只學(xué)個(gè)大概只求個(gè)會(huì)用,沒(méi)有做到知其然還知其所以然。
一個(gè)典型的例子,我兩年前帶的應(yīng)屆生,北京一所高校來(lái)的。當(dāng)時(shí)他做的那部分出了點(diǎn)問(wèn)題,我就推薦了一本書(shū)給他,讓他看完后把這個(gè)問(wèn)題解決,因?yàn)椴皇呛芗?#xff0c;我說(shuō)一個(gè)星期搞定就行了。結(jié)果兩天后,他就跑過(guò)來(lái)跟我說(shuō)書(shū)看完了,問(wèn)題也解決了。我問(wèn)他怎么做的,他說(shuō)他看了個(gè)大概后直接照著書(shū)上做了。
技術(shù)這玩意兒,不是看了個(gè)大概能照著做就會(huì)了,一口氣吃不成個(gè)胖子,必須得扎扎實(shí)實(shí)地把事情做好。所以不要試圖一次性解決所有問(wèn)題,這里給個(gè)建議:可以將每天的學(xué)習(xí)過(guò)程拆分成小塊,分階段學(xué)習(xí),這樣的效率會(huì)更高些。
說(shuō)完了第一點(diǎn)如何學(xué)習(xí)基礎(chǔ)知識(shí),接下來(lái)說(shuō)說(shuō)第二點(diǎn)如何鞏固基礎(chǔ)知識(shí)。方法千千萬(wàn),最有效的我認(rèn)為還是刷題,有方法的刷題。
下面這個(gè)刷題方法很普通但也很實(shí)用,推薦給你:
第一遍:可以先思考,之后看參考答案刷,結(jié)合其他人的題解刷。思考、總結(jié)并掌握本題的類(lèi)型,思考方式,最優(yōu)題解。
第二遍:先思考,回憶最優(yōu)解法,并與之前自己寫(xiě)過(guò)的解答作比對(duì),總結(jié)問(wèn)題和方法。
第三遍:提升刷題速度,拿出一個(gè)題,就能夠知道其考察重點(diǎn),解題方法,在短時(shí)間內(nèi)寫(xiě)出解答。
在這里,給大家推薦兩本書(shū)還有一些學(xué)習(xí)網(wǎng)站,能夠讓大家學(xué)得更輕松些。
書(shū):
1、《代碼大全》激發(fā)你的思維并幫助您構(gòu)建高品質(zhì)的代碼。
2、《程序員修煉之道》全面闡釋了軟件開(kāi)發(fā)的許多不同方面的最佳實(shí)踐和重大陷阱。
網(wǎng)站:
1. GitHub — 開(kāi)發(fā)者最最最重要的網(wǎng)站:https://github.com,能學(xué)習(xí)但不只是學(xué)習(xí)。
2. W3school — 最適合新手的網(wǎng)站:https://www.w3school.com.cn/:免費(fèi)而且全面。
3.實(shí)驗(yàn)樓 — 一個(gè)在線編程學(xué)習(xí)網(wǎng)站: https://www.shiyanlou.com/courses/,很方便實(shí)用。
4. Code School — 一個(gè)英文學(xué)習(xí)網(wǎng)站:https://www.pluralsight.com/codeschool,支持分階段挑戰(zhàn)。
講完學(xué)習(xí)基礎(chǔ)知識(shí)和鞏固基礎(chǔ)知識(shí),咱們就再回到咱們剛開(kāi)始說(shuō)的那個(gè)池塘,現(xiàn)在水的輸入講完了,池塘里有點(diǎn)東西了,但只進(jìn)不出還是一潭死水,接下來(lái)就系統(tǒng)性的講講如何輸出。
三種方法:
1.做一些實(shí)操性強(qiáng)的個(gè)人項(xiàng)目,自己練練手
田納西大學(xué)助理教授奧斯汀·亨利結(jié)合自身經(jīng)驗(yàn),給出了一份“程序員都應(yīng)該嘗試的挑戰(zhàn)性項(xiàng)目”清單,包含下面六個(gè)項(xiàng)目,我之前做了一遍覺(jué)得還不錯(cuò),推薦給大家:
·文本編輯器
·2D游戲-太空侵略者
·編譯器-Tiny BASIC
·迷你操作系統(tǒng)
·電子表格
·電子游戲機(jī)模擬器
每一個(gè)項(xiàng)目都存在不同的挑戰(zhàn),比如文本編輯器就要求在不使用GUI框架中內(nèi)置的文本框組件的情況下,搭建支持光標(biāo)移動(dòng)、選擇、插入和刪除操作的文本框并將文本文檔存儲(chǔ)在內(nèi)存中。
如果你能解決掉這些項(xiàng)目中的這些問(wèn)題,然后把項(xiàng)目獨(dú)立完整的做出來(lái)并且運(yùn)行成功,你的能力肯定能再上一個(gè)臺(tái)階。
2.寫(xiě)技術(shù)文章
大家想必都知道費(fèi)曼技巧,這也是其中的一種應(yīng)用了,把你自己弄懂的東西教給別人,讓別人也能看懂,在這個(gè)過(guò)程中你肯定還是要把一個(gè)完整的項(xiàng)目給做出來(lái)的,一整套下來(lái),你會(huì)將自己理解的東西掌握的更透徹更深入。
也算是一種不錯(cuò)的實(shí)操方式了,能讓你的基礎(chǔ)更加牢固。
3.接一些開(kāi)發(fā)兼職
這是三種方法中實(shí)操性最強(qiáng)的一種了,沒(méi)有之一。
而且不用說(shuō),這也是最快最有效的方法了,畢竟編程這件事,光有理論是不夠的,動(dòng)手實(shí)踐才是關(guān)鍵也是最終目的。
但兼職也有很多坑很多小門(mén)道,你首先得注意項(xiàng)目是不是靠譜,像那種沒(méi)有需求文檔的就不要接了。
?
關(guān)于畢業(yè)工作我想告訴你:
1.提前關(guān)注云計(jì)算、docker、微服務(wù)、Devops以及Baas技術(shù)。
這些你現(xiàn)在可能看都看不懂的技術(shù)或者思想,可能會(huì)改變5-10年后的IT業(yè)界,比如云計(jì)算會(huì)干掉不少傳統(tǒng)IDC運(yùn)維,Baas會(huì)干掉不少后端開(kāi)發(fā)。
2.做一個(gè)程序員,而不是做一個(gè)碼農(nóng)。
IT是工科,不是理科,和IT行業(yè)相似度最高的行業(yè)是蓋樓房。真的,相似度相當(dāng)驚人。而碼農(nóng)的工作和搬磚沒(méi)什么區(qū)別,就是東搬輪子西拼湊,哪里漏水修哪里,會(huì)鋪個(gè)地磚和個(gè)水泥,就能把房子搭起來(lái)。和工程師的區(qū)別在于,搬磚工人是拿不出建筑圖紙的,但工程師可以。碼農(nóng)是搞不定項(xiàng)目方案的,但程序員可以。
3. 年紀(jì)輕輕除非是迫不得已,千萬(wàn)不要進(jìn)傳統(tǒng)公司的偽互聯(lián)網(wǎng)項(xiàng)目。
雖然事兒少,福利好,但是混日的子也多,你和老油條們摸魚(yú)一兩年,哪天項(xiàng)目突然被裁掉了,他們有行業(yè)積累可以跳槽,而你再出社會(huì),完全沒(méi)有競(jìng)爭(zhēng)力。所以新手程序員入職,能去大廠就去大廠,不能去大廠也一定要找一家純互聯(lián)網(wǎng)公司入職,創(chuàng)業(yè)公司也好,中小型企業(yè)也好,反正要有現(xiàn)成的項(xiàng)目打磨你的技術(shù)。
4. 一個(gè)有水平的程序員,應(yīng)該花80%的時(shí)間做代碼設(shè)計(jì)、畫(huà)時(shí)序圖,畫(huà)UML圖、剩下20%的時(shí)間寫(xiě)code和debug;菜鳥(niǎo)程序員的這個(gè)比例恰好是反的。
用一句話(huà)來(lái)說(shuō),就是不論這個(gè)需求有多緊急,你都一定要“想好再動(dòng)手”;而“想好”的標(biāo)志就是設(shè)計(jì)文檔寫(xiě)好了;文檔一旦寫(xiě)好,寫(xiě)代碼就是純粹的無(wú)腦工作而且不容易出錯(cuò)。
5. 公司不是學(xué)校,而是你創(chuàng)造財(cái)富,實(shí)現(xiàn)價(jià)值的地方。
你可以在工作中學(xué)習(xí),但你不能放下工作然后去學(xué)習(xí),除非你的工作已經(jīng)做完了。除此之外,還有一點(diǎn)要強(qiáng)調(diào)的是,不要只在工作中學(xué)習(xí)。工作能帶給你的是經(jīng)驗(yàn)、是實(shí)操,而基礎(chǔ)知識(shí)以及前沿理論知識(shí)只有靠你自己下班后來(lái)學(xué),這也是你與其他人拉開(kāi)距離的時(shí)候。
?
工作與學(xué)習(xí)之外,我想告訴你:
1.雖然技術(shù)是程序員的根本,因?yàn)闆](méi)有技術(shù)你就沒(méi)有錢(qián)。但是也一定要記住,技術(shù)并不是你的全部。
因?yàn)槟愕纳眢w你的健康比錢(qián)更重要,也因?yàn)槟愫茈y搞一輩子技術(shù)。所以,早點(diǎn)開(kāi)始健身、早點(diǎn)為你的職業(yè)發(fā)展做規(guī)劃。
?
2.通過(guò)技術(shù)兼職來(lái)接私活賺錢(qián)是可行的,但是一定要找靠譜的平臺(tái)。
常見(jiàn)的方式有技術(shù)論壇、朋友推薦、外包平臺(tái)。如果你不知道該如何選擇,下面這篇文章就一定要看看,里面有我做兼職這么久總結(jié)的三接四不接以及一些方式分析平臺(tái)推薦。
一、線下自有渠道
這一點(diǎn)包括兩方面:一個(gè)是親友介紹,一個(gè)是峰會(huì)自薦。
我之前接過(guò)不少前同事介紹的眾包,還有參加各種互聯(lián)網(wǎng)峰會(huì)與人聊天介紹自己偶然獲得的項(xiàng)目,好處是很省時(shí)省力還不用擔(dān)心被扣錢(qián),因?yàn)闆](méi)有太多的人跟你競(jìng)爭(zhēng),大家也都是行內(nèi)人,水平怎么樣很容易確定;壞處是有就有沒(méi)有就沒(méi)有非常不穩(wěn)定,而且因?yàn)槭桥笥雅紶枙?huì)砍砍價(jià)啥的。
這類(lèi)渠道隨機(jī)性太大,碰上好項(xiàng)目就很舒服,沒(méi)碰上就沒(méi)辦法。建議大家當(dāng)作自己找兼職的一個(gè)補(bǔ)充就好。
二、線上技術(shù)論壇
這一類(lèi)指的是我們有意識(shí)地去程序員聚集的論壇上發(fā)帖,去推廣自己,通過(guò) PR 的方式來(lái)獲客。這類(lèi)線上論壇比較出名的有:CSDN、博客園、程序員客棧的技術(shù)圈、問(wèn)答社區(qū) SegmentFault,還有程序員“灌水”社區(qū) V2EX。
CSDN大家應(yīng)該都很熟悉了,我不多說(shuō)。這里我主要講一下程序員客棧的技術(shù)圈,這是一個(gè)程序員比較集中的灌水社區(qū),可以提問(wèn)、發(fā)帖、招聘等。經(jīng)常能看到一些團(tuán)隊(duì)發(fā)布的兼職匯聚貼。
在這些論壇上,還有一種方法你可以找到兼職,就是你可以單獨(dú)開(kāi)一個(gè)帖子,介紹一下你的技術(shù)優(yōu)勢(shì)、時(shí)間優(yōu)勢(shì)、項(xiàng)目?jī)?yōu)勢(shì),說(shuō)明你最近想接哪類(lèi)項(xiàng)目,如果正好有需求方需要的話(huà),對(duì)方就會(huì)聯(lián)系你。
三、垂直眾包平臺(tái)
這類(lèi)平臺(tái)大約是從 15 年開(kāi)始出現(xiàn)的,對(duì)于剛接觸兼職的程序員來(lái)說(shuō)比較友好。因?yàn)橄嚓P(guān)規(guī)定比較完善,能保障雙方利益。雖然偶爾還會(huì)有爭(zhēng)端,但是相信我,比你自己接好太多了,能避免很多剛做兼職時(shí)得踩得坑。
這方面有很多同類(lèi)型的平臺(tái),一般都專(zhuān)注于 IT 眾包領(lǐng)域。職位內(nèi)容也比較全面,像常見(jiàn)的 UI 設(shè)計(jì)、產(chǎn)品設(shè)計(jì)、程序開(kāi)發(fā)、產(chǎn)品運(yùn)營(yíng)等職位都可以找到需求方,其中又以程序開(kāi)發(fā)和 UI 設(shè)計(jì)的需求最多,可以提豐富又穩(wěn)定的兼職需求來(lái)供我們選擇。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
分享一篇帖子給大家,希望對(duì)大家有所幫助。推薦大家學(xué)習(xí)的網(wǎng)站:“善知軟件實(shí)訓(xùn)基地”? 線上學(xué)習(xí)視頻
https://www.bilibili.com/video/BV1RJ41147qd?from=search&seid=6170019529066609126
https://www.bilibili.com/video/BV1vJ411C7wZ?from=search&seid=4420382012653239507
總結(jié)
以上是生活随笔為你收集整理的你想告诉准程序员些什么?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 服务器进blso设置虚拟,华硕服务器bi
- 下一篇: 雅克比矩阵(上)-----雅克比推导