偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

淺論自學(xué)成才的程序員如何提高自我

新聞 前端
如果你是自學(xué)成才的程序員,可能會遇到一些盲點(diǎn),本文為你介紹了如何查漏補(bǔ)缺的方法。

 [[313511]]

有事者,事竟成;破釜沉舟,百二秦關(guān)終歸楚;苦心人,天不負(fù);臥薪嘗膽,三千越甲可吞吳。這句話,古今往來不知道激勵了多少寒門學(xué)子。在今天,這句話用在那些自學(xué)成才的程序員身上,也是極其合適的。你知道嗎?有很多著名的程序員,其實(shí)并不是科班出身,而是靠自學(xué)成才的半路出家的“野生程序員”,比如 Bill Gates。如果你不是科班出身的程序員,而是靠自學(xué)成才的,那么該如何提高自身呢?今天,我們來聽聽過來人 Matthew MacDonald 分享的心得和經(jīng)驗(yàn)。

如果你是自學(xué)成才的程序員,可能會遇到一些盲點(diǎn),本文為你介紹了如何查漏補(bǔ)缺的方法。

如果你是一名開發(fā)人員,你可能會有一個如何走上編程之路的故事,但我并不是指你第一次是如何學(xué)會編寫代碼的故事,盡管這個故事可能與本文要講的內(nèi)容有所重疊。我的意思是,當(dāng)你第一次決定用邏輯和軟件指令來解決一個新問題的時候;當(dāng)你決定將代碼作為永久有用的工具放入你的工具箱的時候;事情轉(zhuǎn)變的那一刻,你決定成為一名真正的程序員。

我的編程之路,與大約 三分之一 的專職程序員一樣,并沒有正式的計算機(jī)科學(xué)學(xué)位。但我從小就喜歡鼓搗電腦,是傳奇的 QuickBasic 和 VB 伴著我長大的,而這些愛好在當(dāng)時,仍然是一種新奇的事物。我知道,不管我最終是否會進(jìn)入計算機(jī)領(lǐng)域,這個巨大的 米色盒子(譯注:所謂的米色盒子,就是個人電腦主機(jī),當(dāng)時主機(jī)體積比今天大得多)將會以某種形式,永遠(yuǎn)成為我生活的一部分。但在我上大學(xué)的時候,我更感興趣的是學(xué)習(xí)那些我自認(rèn)為并沒有機(jī)會自學(xué)的課程,比如粒子物理。

但也許這并不是一個壞主意,因?yàn)?,我確實(shí)找到了一條通往專業(yè)編程的道路。當(dāng)我在一個不那么有趣的崗位上工作時,我就利用空閑時間來學(xué)習(xí)和考取證書。不久之后,我就進(jìn)入了一個全新的領(lǐng)域,并突然為之著迷,比如密碼學(xué)、網(wǎng)絡(luò)協(xié)議和數(shù)據(jù)庫優(yōu)化等。當(dāng)然,我也開始編寫程序來填補(bǔ)我在公司工作中的空缺,比如報告工具、訂購工具,以及可以完成本不該做某些事情的軟件,比如依賴不穩(wěn)定的 ActiveX 控件。不久之后,.NET 出現(xiàn)了,我遇到了一些 非常聰明的人,并且難得有機(jī)會重塑自己,并重置了 Microsoft 出色的平臺。剩下的就是歷史了。

作為一名自學(xué)成才的程序員,我很清楚我的基礎(chǔ)并不完美。當(dāng)然,也有未受過正規(guī)教育而自學(xué)成才的 軟件傳奇人物 和 黑客天才。但是,如果你不是神童,而是一個普通人的話,那么自學(xué)技能就會伴隨著一個巨大的“星號”(*)。有差距,也有盲點(diǎn)。對于許多自學(xué)成才的程序員來說,他們很難確定自己到底缺少了哪些知識或技能。因此,我寫下本文的初衷,就是為那些自學(xué)成才的開發(fā)人員提供提高技能的快速指南。

你不知道哪些事情你還不知道

自學(xué)編程最大的局限性就是,你不知道哪些事情你還不知道。是的,無知確實(shí)會發(fā)生在任何人身上,哪怕他擁有博士學(xué)位。但是,由于自學(xué)成才的程序員會堅(jiān)持不懈地專注于實(shí)際目標(biāo),如建立網(wǎng)站,讓應(yīng)用程序運(yùn)行,將數(shù)據(jù)從 A 點(diǎn)傳到 B 點(diǎn),因此,他們更容易跳過那些看上去 “沒什么大用”的理論內(nèi)容。

以下是一些來自計算機(jī)科學(xué)核心的話題,而自學(xué)成才的程序員往往會繞過這些話題:   

算法。 因?yàn)榫幊陶Z言實(shí)現(xiàn)了它們自己的排序和搜索,所以自學(xué)成才的程序員總是傾向于學(xué)習(xí)如何使用它們,而不是去了解它們的工作原理。

計算理論。 這是關(guān)于計算機(jī)如何解決問題,以及編程語言如何構(gòu)建的一門科學(xué)。從有限狀態(tài)機(jī)到 Λ 演算,在這一類中,有一大堆重量級的主題。

純數(shù)學(xué)。 傳統(tǒng)的計算機(jī)科學(xué)涉及范圍廣泛的重要數(shù)學(xué)主題,包括線性代數(shù)、微積分、概率論和統(tǒng)計學(xué)。

大〇符號法(Big O notation)。 這個改編自數(shù)學(xué)領(lǐng)域的工具,讓開發(fā)人員能夠描述并比較不同算法的整體性能。

當(dāng)然這并不是說,自學(xué)成才的程序員就不能自己學(xué)習(xí)這些課程了。只是,當(dāng)有另一個新的 JavaScript 框架需要解決的時候,你就很難將自己投入到理論中去。而且,由于自學(xué)成才的程序員專注于實(shí)踐項(xiàng)目和工作代碼,他們甚至可能沒有意識到實(shí)際代碼表面下的理論“冰山“。

縮小計算機(jī)科學(xué)理論差距

雖然計算機(jī)科學(xué)理論可能不會有立竿見影的效果,但它還是有其他好處的,只不過沒有那么明顯罷了。實(shí)際上,前面列表中所有看似深奧的主題,在適當(dāng)?shù)臅r候可能都是至關(guān)重要的:   

算法。 有時候,默認(rèn)選擇并非最佳選擇。如果你有更深刻的理解,你就會知道什么時候該走出老路,或者如何解決一個不尋常的問題。

縮小差距:閱讀 Algorithms in a Nutshell(《果殼中的算法》http://shop.oreilly.com/product/9780596516246.do),這是我最喜歡的一本書,或者你可以去可汗學(xué)院( Khan Academy)轉(zhuǎn)一轉(zhuǎn)。    

計算理論。 大多數(shù)程序員永遠(yuǎn)不會去構(gòu)建自己的編程語言(雖然 你可以這么做)。但是計算理論為你提供了抽象概念,幫助你理解不同語言之間的聯(lián)系。如果你需要從過程式編程語言轉(zhuǎn)到函數(shù)式語言,那么你就會感到掌握計算理論后,完成這一過程特別方便。

縮小差距:這個是很難自學(xué)的領(lǐng)域之一,但你可以通過免費(fèi)的虛擬教室來學(xué)習(xí)很多東西。Neso 學(xué)院就有我最喜歡的關(guān)于這一主題的 系列講座(https://www.youtube.com/playlist?list=PLBlnK6fEyqRgp46KUv4ZY69yXmpwKOIev),有 100 多個小視頻。這些講座講得很深入,但每期只需十分鐘就能看完。   

純數(shù)學(xué)。 許多程序員在生活中,甚至到退休的時候,連一行高等數(shù)學(xué)都沒有接觸過。但是,如果你正在從事機(jī)器學(xué)習(xí)、自然語言處理、數(shù)據(jù)分析或軟件開發(fā)前言的十幾個其他主題中的任何一個,那么硬數(shù)學(xué)還是必不可少的。

縮小差距:如果你已準(zhǔn)備好動手,可以從非常容易理解的 A Programmer’s Introduction to Mathematics(《程序員數(shù)學(xué)指南》https://pimbook.org/)這本書開始,這是隨你付的下載版本。

譯注: 隨你付,Pay what you want (PWYW)是賣家按所望付費(fèi) —— 有時也含免費(fèi) —— 的定價策略。商品或設(shè)最低價和 / 或指導(dǎo)建議價,買家也能出更高價購買。   

大〇符號法。 要成為一名高效的開發(fā)人員,一定要有一種可以用來與同行交流的速記工具。雖然你不會經(jīng)常使用大〇符號法(也許永遠(yuǎn)不會用上),但如果你需要討論如何優(yōu)化復(fù)雜的分布式系統(tǒng),它可能就會派上用場了。

縮小差距: 大〇符號法很好學(xué)。你可以在 這里(https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/) 找到一個不錯的概述。

我為你提供一些好建議。如果你是自學(xué)成才的程序員,那就抽點(diǎn)時間(比如 5%)去研究更多的理論性課題。就用上面列表中的鏈接即可。就算你在日常工作中用不著這些知識,但它也能拓寬你的視野,培養(yǎng)你的好奇心,并幫助你理解計算機(jī)科學(xué)中一些更深層次的奧秘。畢竟,正如每個經(jīng)驗(yàn)豐富的程序員都知道的那樣:除非你去使用理論,否則你永遠(yuǎn)不會去使用。

你的信心何在?

規(guī)劃計算機(jī)教育的最重要好處,可能并不在于你學(xué)到了哪些關(guān)于計算機(jī)科學(xué)的知識,而是在于你學(xué)會了如何看待自己。

無論是自學(xué)成才的程序員,還是受過正規(guī)教育的程序員,當(dāng)他們剛進(jìn)入職場時,都會存在知識差距。但是,自學(xué)成才的程序員更可能會感受到一種揮之不去的恐懼:擔(dān)心他們的技能不完整或不合理。他們還擔(dān)心,有些事情他們應(yīng)該知道,但卻從來沒有通過 Google 搜索核實(shí)過。他們還擔(dān)心其他語言和計算理論的核心知識。還有一件令人驚訝的事是,他們居然還擔(dān)心發(fā)音的問題,認(rèn)為用錯誤的方式來講述編碼器行話時會暴露出他們是 “江湖騙子”。通常強(qiáng)調(diào)的詞匯包括技術(shù)(SQL、ECMAScript、JSON、Wasm)、技術(shù)術(shù)語(貝葉斯、元組),甚至是符號(#!、或  “hashbang”。)。

然而,自我懷疑并不全是壞事,畢竟,它可以驅(qū)使你去尋找新的知識不是?但是,當(dāng)你需要向客戶、同事或潛在雇主表明自己是程序員時,這些不安全感可能會傷害到你。

解決這些問題的最好辦法就是參與盡可能多的對話。你不可能研究軟件開發(fā)的每一條途徑,但你可以通過與盡可能多的不同類型的程序員打交道來拓寬你的視野。下面,我提供了一些建議:   

參加當(dāng)?shù)鼐蹠?這些聚會沒有黑客馬拉松那么令人生畏(盡管這些也很棒),而且你還會發(fā)現(xiàn),經(jīng)驗(yàn)豐富的程序員出人意料地如此渴望社交和分享他們的知識。

參加會議。 如果你能負(fù)擔(dān)得起,沒有什么比圍繞你感興趣的主題組織的面對面會議更能抓住新技術(shù)的興奮點(diǎn)了。這就好比軟件框架下的快速約會一樣。你還可以通過 “感受房間的溫度”。(譯注:指參加會議之類)學(xué)到很多東西——換句話說,對演講和研討會的反應(yīng)可以幫助你判斷哪些技術(shù)背后有社區(qū)熱情,哪些新項(xiàng)目可能會蓬勃發(fā)展。

加入開源項(xiàng)目。 這個門檻就更高了:你必須真正地編寫代碼,而不僅僅是喝咖啡和聽音樂,但帶來的回報是巨大的。在結(jié)構(gòu)化的環(huán)境中,哪怕是一個簡單的項(xiàng)目,與其他程序員進(jìn)行交互,也能夠訓(xùn)練你從十幾個不同的角度來看待一段代碼。

作為附帶的好處,人脈關(guān)系網(wǎng)對你職業(yè)前景的好處遠(yuǎn)超于建立一個最好的投資組合網(wǎng)站。

所有編程都趨向于自學(xué)

對專職程序員的調(diào)查表明,自學(xué)成才的程序員始終是少數(shù)。但換一種方式來提個問題,情況就不同了。

例如,以 Hacker Rank 的調(diào)查為例,它發(fā)現(xiàn)了這么一種現(xiàn)象:自學(xué)成才和只在學(xué)校接受教育的開發(fā)人員,在所有程序員中所占比例都略低于三分之一。但是,將正規(guī)學(xué)習(xí)和自學(xué)結(jié)合起來的開發(fā)人員的比例反而超過了這兩者,占到了近 38%。

這并不奇怪。在瞬息萬變的軟件開發(fā)世界中,每個程序員都離淘汰只有幾步之遙。最成功的程序員,都是那些能夠不斷自學(xué)的人。

正規(guī)的計算機(jī)科學(xué)教育是一種優(yōu)勢。但自我提高的能力也是必不可少的。

這就是自學(xué)成才的程序員的收獲。這并不是說,有正規(guī)計算機(jī)科學(xué)教育背景的程序員就沒有自學(xué)的能力。但自學(xué)成才的程序員已經(jīng)面臨著一場嚴(yán)峻的考驗(yàn):他們一無所有,就一頭扎進(jìn)去,擁有的只是好奇心和赤裸裸的野心,就學(xué)會了他們需要的東西。這項(xiàng)技能,將會為你的整個職業(yè)生涯帶來回報。

作者介紹:

Matthew MacDonald,教師、程序員、重磅書籍的作者。

 

 

責(zé)任編輯:張燕妮 來源: AI前線
相關(guān)推薦

2016-01-27 10:36:25

程序員自學(xué)

2017-01-10 10:14:47

新手學(xué)習(xí)編程

2011-04-02 10:50:36

WebHTML 5

2017-01-10 14:59:03

開發(fā)者故事

2025-02-26 14:22:18

2017-02-09 16:52:33

開發(fā)者優(yōu)勢劣勢

2020-11-04 10:21:37

機(jī)器學(xué)習(xí)技術(shù)人工智能

2019-04-30 14:36:36

程序員技能開發(fā)者

2015-04-07 13:29:06

編程自學(xué)開發(fā)應(yīng)用

2025-02-25 08:06:05

2021-12-22 10:57:26

機(jī)器學(xué)習(xí)人工智能計算機(jī)

2021-02-18 00:09:23

程序員編程技能

2025-04-07 03:00:00

Dreamer世界模型

2020-08-04 08:42:10

Python開發(fā)工具

2011-12-27 16:31:27

程序員

2019-09-02 10:51:59

Python腳本語言程序員

2013-07-04 13:50:14

2010-03-22 09:32:42

自學(xué)編程

2017-10-20 17:21:16

華為

2017-07-06 14:59:27

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號