我有一個朋友還是很厲害的,他本科大一讀的是英語專業(yè),大二轉專業(yè)讀的是新聞學專業(yè),現在就職于某一線大廠??梢哉f,他是真正的非科班出身的程序員。
1.先專注學習某一個方向,能靠這個技能養(yǎng)家糊口,找到一份工作,為學習其他的計算機知識爭取時間,從而成為一個專業(yè)的程序員。比如說,你如果對前端感興趣,就弄明白js的原型鏈,es6的新特性,找一家公司實習。如果你要成為一個專業(yè)的程序員,千萬不要過早設定自己的方向,因為專業(yè)的程序員都是能夠把很多個方向做的很牛逼,其中有一兩個方向超級牛逼。創(chuàng)造windows的dave cutler今年都70歲了,20年前4、50歲了才剛剛開始寫winnt,人家在30歲之前都還不太懂怎么寫代碼,所以不要著急。
2.當你找到工作之后,應該學習的內容包括但不僅限于:
?計算機圖形學
?編譯原理
?操作系統(tǒng)的基礎知識
?分布式系統(tǒng)的架構
?對你的代碼進行靠譜的自動化測試
?學會寫framework和library,不要一味地寫application
你可能會問為什么要學習計算機基礎知識,其實對于程序員來說,計算機的基礎知識還是重要的,如果計算機基礎知識不牢固,很有可能會遇到下面的尷尬境地:
1. 35歲以后普通碼農會被老板清退,所以要盡可能的要向公司的高層發(fā)展,而技術主管要求你需要有過硬的計算機基礎。
2. 未來人工智能會取代初中級程序員。比如說,今年雙十一阿里的自動切圖機器人。
3. 技術發(fā)展太快,如果你只會用框架的話,充其量只是外功,如果內功(計算機基礎)不行,則疲于應付,被年輕的程序員代替。
4. 學習計算機專業(yè)知識,本身就可以獲得幸福感
一、只有真正喜歡才能寫好程序
喜歡寫程序,做程序員就是上天堂;不喜歡寫程序,做程序員就是下地獄。
程序員需要整天趴在電腦前,經常沒日沒夜的,非常辛苦,而且工作來不得半點虛假,少寫一個標點符號都不行。喜歡的人,日子過得非常開心,每寫一行代碼,都會有新的成就,尤其當自己的作品被廣泛應用的時候,那種自豪感油然而生。不喜歡的人,坐在電腦前極其無聊,被進度壓得喘不過氣來,天天為找Bug,改Bug生氣。
只有喜歡,只有熱愛,才能把程序寫好!
我建議不喜歡寫程序的人早點轉行,不要勉強自己,免得誤人誤己。
二、把程序當藝術品像寫詩一樣來寫代碼
現在很少有公司做 Codeview (對寫好的程序做代碼級檢查),于是很多人在進度的壓力下潦草應付,只要測試通過就算搞定。表面上看,開發(fā)速度很快,進度有保障;但實際上,這樣的程序連開發(fā)者自己都很難讀懂,一旦有Bug,很難調試,將來維護升級都非常困難。這樣的代碼多半只能重寫,浪費自然嚴重。
如果每個人寫程序的時候當藝術品來寫,寫每行都認認真真、干干凈凈的,雖然速度略微慢了一點,但綜合的開發(fā)成本會低很多。
如何寫像詩一樣美的代碼呢?方法也很簡單。
1.買幾本經典的編程書,把書上所有例程全部重新寫一遍,逐個比較和書上范例的差距,一步一步改善自己編程的風格和技巧。時間長了,自然就能寫出像書上例程一樣的代碼,甚至可以比書上寫得好。
2.基礎扎實后,多看看Linux 等系統(tǒng)級的源代碼,看看高手是如何寫的,就有感覺了。
3.通讀一下MSDN中所有的資料,這樣就“讀書破萬卷,下筆如有神”。
還有,一定要牢記軟件工程的鐵律:可能出錯的地方一定會出錯。每個變量都做初始化,引用每個參數都要做有效性檢查,在可能出錯的每個地方都要做邊界條件檢查,這樣開發(fā)出來的程序一定會穩(wěn)固很多,就是出錯也很容易修改。野路子出來的高手,一般開發(fā)速度很快,但做完后Bug會很多,經常需要很長時間修改。而真正的高手,追求的境界是 Bugfree code(零缺陷代碼)。
三、必須寫夠十萬行代碼,不要心存僥幸
程序員像木工一樣,熟能生巧。程序員必須寫足夠代碼量的程序,才會有感覺,這是一個苦力活,沒有任何捷徑可走。
計算機是一門實踐性的科學,沒有動手能力做支撐,很難做出好的科研成果。我的一個學長是美國卡內基梅隆大學的博士,卡內基梅隆大學計算機系在全世界都非常出名,他說每個博士生必須寫十萬行代碼才能畢業(yè),卡內基梅隆大學博士生進任何一個大企業(yè)基本不用面試。而國內培養(yǎng)的大部分研究生、博士生,動手能力都偏弱。
沒有寫過足夠代碼量的程序員,想成為高手是不可能的,只能紙上談兵!
四、時刻保持好奇心
計算機技術更新換代非??欤磕甓加懈鞣N各樣的新技術出現。在我過去的職業(yè)生涯中,僅編程語言,我就用過 Basic、Masm、Pascal、C++、Vba、Delphi、Java 等。需要時刻保持好奇心,不斷學習各種新的東西,才能在未來的幾十年職業(yè)生涯中不落伍。
人的精力有限,高手往往工作壓力也比較大,如何在有限的時間內掌握整個行業(yè)動態(tài),的確不是簡單的事情。我的經驗是經常看業(yè)內的各種技術雜志,參加各種聚會,可以節(jié)約很多時間。最重要的是,交幾個博學的技術高手,多和他們交流,一定受益匪淺!
五、不要局限在技術本身,多花點精力關注用戶
做到前面幾條,就已經是千金難求的高手了。但一個真正的高手需要知道用戶需要什么,如何做出讓用戶滿意的產品。
現在的軟件研發(fā)越來越強調團隊協(xié)作,不少團隊都配置了專門的需求分析工程師、用戶界面及用戶體驗的設計師,軟件研發(fā)的分工越來越細。很多程序員以為只要把技術搞好,不用管用戶需求和用戶體驗。實際上,需求方案及界面方案不可能寫得非常細,具體的實施還是程序員自己來實現的。這個時候,好壞的差距很快就體現出來了。
我們寫程序的最終目的是滿足用戶需求,不是簡單完成需求規(guī)劃方案中的功能。所以,程序員一定要認真揣摩用戶心理,能明白用戶的真實需求。
其次,怎樣設計交互界面,讓用戶覺得好用,用起來舒服,這里面學問很大。我舉一個小例子,每個程序窗口右上角都有三個按鈕,如最小化、關閉等。喬布斯覺得不好看,不易用,他提出改用紅綠藍的交通燈。這樣修改后, Mac OS果然 漂亮和易用了很多。
目前互聯網和手機上的應用開發(fā),都非常強調小團隊研發(fā)。這樣研發(fā)模式速度會快很多,但對程序員綜合素質的要求也就更高了。
我強烈建議程序員不要僅僅局限在技術本身,還需要多點精力考慮和用戶相關的問題,學會洞察用戶的需求,并努力設計好用易用的產品。做到這點的程序高手,創(chuàng)業(yè)成算就很大了。
作為計算機專業(yè)畢業(yè)曾經做過程序員的一員,簡單發(fā)表一下自己的看法。
根據我的觀察,很多行業(yè)精英,往往并不是專業(yè)出身。半路出家的往往更有成就。
當然有個前提是,確實對這一行有超乎尋常的興趣,并且愿意在這上面投入大量的時間和精力。
興趣是最好的老師,這句話并不是虛言。
就以我自己為例,理工畢業(yè),但是并不愿意一直在編程的道路上發(fā)展,雖然最后做到技術總監(jiān),最后還是放棄了編程。當然自己現在也隨手編點代碼,寫點程序,也很有趣。
但是我對文字的興趣異常大,五六歲開始讀書,每個年代流行的書都有涉獵。網絡文學盛行后,多數經典都看過。我曾經簡單的按照我一天30-50萬字的閱讀速度進行統(tǒng)計,這些年我看過的書,字數可能高達數億。
而我從2004年前后寫博客開始,到寫書,再到開通自媒體,在網上發(fā)布的文字應該也有百萬以上。不過這些沒有當作事業(yè)發(fā)展,也并沒有實質的收益。
寫程序,如果方法得到,自學也一樣可以成材。
當然首先要準備幾本基礎的教材,認真的讀上幾遍。并且在讀的同時,要配置安裝好環(huán)境,嘗試寫一些代碼,比如書中的范例。
讀萬卷書不如行千里路,編程之道也是如此。
當年我學編程的時候,周末經常在圖書館看很多相關的書籍。編程考試也曾經第一個完成程序。但是我在電腦上寫的程序還是少了點,雖然2000年之前就開發(fā)過小游戲,但是并沒有往精深處研究,沒有考慮如何做的更簡單高效,如何更美觀強大。
讀幾本書,編寫一些代碼,就基本算是入門了。
然后就可以找一些網上現成的程序源代碼來學習研究了。查看具體的功能,去思索如何實現。然后可以仿照著去開發(fā)一個相似的。
如果你能完成的實現這些功能,并且在這個過程中不斷解決一個又一個難題。相信收獲一定是巨大的。
還有一個非常重要的問題是,編程的語言有很多種,方向的選擇很重要。
有的人選擇了某個行業(yè),經過幾年的努力月入五千。而他的同學一開始就選了更好的行業(yè),一年后就月入過萬。這就是方向的選擇。
程序都是相通的,但是我不建議去學習最基礎的C語言。
現在是智能手機時代,如果想比較短的時間看到效果,看到收益。那么還是從手機軟件開發(fā)入手吧。比如HTML5,也可以做手機版的網站。PHP也是流行比較廣,入門很容易的選擇。相對復雜點的我就不做推薦了。
如果你真對編程有興趣,為什么不在大學那么好的時間段里打下基礎呢?是在電腦游戲前玩的忘乎所以,還是談戀愛談的蕩氣回腸了?
如果你能找到可以接收你的做開發(fā)的公司,那自然好,起碼先就業(yè)解決了生存問題。如果找不到,那能找到什么工作就先做著,閑暇時多下功夫吧。
財智成功:加百利網創(chuàng)立者,公眾號(加百利點靠木)敬請關注!
零基礎選擇做程序員要做到以下四步:
1.選擇一個方向
技術分類很多的,先選擇自己感興趣的科目,如果沒有自己特別傾向的項目,如果沒有選擇當前比較流行或者未來可能會比較有前景的項目
2.選擇一種編程語言
選擇好方向了然后開始選擇一門編程語言,開始不要給自己太多的壓力,很多初學者上來就搞了很多種編程語言學習,編程語言除了本身的語法問題還需要編程思想做支撐,特別是學習編程之初首先要做的是穩(wěn)扎穩(wěn)打學好一門語言,在學的差不多情況下再進行別的語言的學習,觸類旁通。
3.想辦法做一些盡量接近實際的項目
這一步是最難的,好在現在隨著開源項目的發(fā)展,在網絡上就能夠拿到一些實際的源碼,有機會研究大總量的代碼,開始看代碼整體暈乎乎的特別正常,在做實際的改動之前,需要先看懂代碼,只有看懂代碼了才能更好的修改代碼。
開始嘗試修改代碼然后運行起來慢慢建立自己成就感,然后規(guī)劃好自己想要做的功能,啟動實踐去搞,只要準備去搞就需要限定時間。這樣才能挖掘出自己的潛力。
如果能做一些真正的項目,成長的速度會更快。
4.開始把自己推出去
在實際做過項目之后可以嘗試把自己的簡歷,掛在網上尋找工作機會,有面試的機會就要牢牢抓住,不一定一次性成功,每次面試都是極好的增長經驗的機會。所以不要因為面試失敗就把自己搞的垂頭喪氣,吸取經驗教訓繼續(xù)前行。
問題:做個程序員,零基礎應該怎么做?
回答:交學費到培訓機構學習是最快的!
原因:每個人都會有不同程度的懶惰,所以自學基本不要考慮了。反而通過培訓機構入行是最快的,學習的課程比較系統(tǒng)性,并且培訓機構本身有一定的約束性,也有一定的學習氛圍。
案例:有遇到過女孩子轉行學測試的(也不是計算機專業(yè)的),學費不便宜,學時3個月,學完很快就找到工作了,并且offer也不低。,
一名合格的程序員雖然收入不錯,但是工作很辛苦,還容易掉頭發(fā)。你真的想當程序員?
好吧,既然你這么堅決,那么就先來看看程序員需要什么技能,然后再看看怎樣才能獲得這些能力。
首先,程序員要會寫程序。這看起來像句廢話,但是卻是基礎。
寫程序的根本在于,把要解決的現實問題抽象成數學或者邏輯問題,然后再用程序語言實現。這里有兩個步驟:先是把問題抽象出來,然后再寫成程序代碼。
第一個步驟需要邏輯能力和數學能力,這些和計算機完全無關;
第二個步驟需要掌握一門或者幾門程序語言,目前企業(yè)內比較流行的有C#、Java、Python、Ruby等。當然,要是算上前端的話,可能還有HTML5、CSS3和常見的腳本語言等。
那么,要怎么才能獲得這些能力呢?無非是學和練。
在這里,有一個常見誤區(qū),就是覺得自己應該先學一些什么才能開始做東西。但是,在實戰(zhàn)中練習是最好的學習。碰到問題解決問題,兵來將擋水來土掩,解決不了問題就去問Google或者stackoverflow,是最好的學習方式。這還需要一些英語能力。
所以,程序員起步的方法,是先保證自己餓不死的前提下,挑選一門編程語言,買一本類似《笨辦法學Python》的教材,安裝所需要的環(huán)境,一步一步跟著做,碰到問題就去問Google。
然后,嘗試解決自己想要解決的問題,碰到問題就先嘗試自己解決,若是解決不了再去去Google、github或者stackoverflow上面找,看看有沒有答案。
成為一名程序員沒有什么其他捷徑,無非就是學習、練習、解決問題,然后再來一個循環(huán)。
我也是零基礎開始學習,學習中最怕的就是枯燥,這是必須克服的一大難關,我記得剛剛開始的時候,看著看著就很想睡覺,根本止不住,但是語法是必看部分這個是跳不過去的,后來太困了,就睡一會,醒了接著看,就這樣把基礎部分看完,第二個就是要轉換成項目,很多人會說我學了,但是就是不知道怎么去做項目,這個就需要定功能,然后去實現,先可以從小的開始,我說一下我的思路,我先開始實現查詢計算機信息的功能,實現完成后,然后我在去想怎么去修改,然后數據上傳歸集。這個只是提供一個思路,你可以想你確實需要什么功能,從小的開始實現。慢慢擴展。多用用百度和谷歌還是能解決不少問題的。然后在這方面的搜索方面,谷歌還是比百度強很多,如果有條件,用谷歌來搜索你的問題。能解決的幾率比較高一點。也可以去空間看下我發(fā)的小白選第一門編程語言入門。
很高興能回答題主的問題。首先,程序員是一個很寬泛的職業(yè),行業(yè)跨度很大,涉獵領域也很多,建議題主可以結合自身的喜好充分考慮。以下是小窩頭從學習Java開發(fā)到參加工作的一些經驗,希望可以幫到題主。
一、入門途徑
程序員畢竟是一個需要一定門檻的職業(yè),所以入門非常重要,入門順利的話,可以激發(fā)編程熱情,快速掌握基礎技能。
入門的方式有很多,目前比較速成的方式是通過參加培訓班,雖然相對自學或者網絡上的各類教學資源來說,培訓班會有一定的資金投入,不過培訓班能夠比較系統(tǒng)的補充一些基礎知識,也能夠提供一個比較良好的學習環(huán)境,比較適合入門階段的學習。
二、編程語言的選擇
入門階段比較重要的一個事情是選擇一門合適的編程語言,下圖是TIOBE發(fā)布的3月TOP10編程語言榜單。從排名來看的話,Java和C依舊穩(wěn)健,Go持續(xù)爬升進入了前10。此外,也可以通過各大招聘網站了解各公司對語言的需求,建議選擇需求量比較大的語言進行入門。就小窩頭所在的公司及行業(yè)來看,需求最大的是Java。
三、學習方法
小窩頭之前參加過培訓機構的學習,工作之后也和一些培訓機構有過一些交流,接觸了比較多的學員。學員有一個共同的擔憂:學不會怎么辦?這個其實是學習方法的問題。
從我自身參加培訓機構學習的經歷來看,入門階段的學習方法就是:跟緊進度,勤思考、多實踐。跟緊進度的目的是為了抓住學習的主線,培訓機構基本都會根據市場需求來調整課程的組成,跟緊進度不掉隊,才能夠比較全面的掌握培訓機構所教授的內容;勤思考、多實踐是鞏固知識的必要手段,這個和高考的題海戰(zhàn)術很類似,就是通過反復的訓練來提升自己,讓編程逐步變成一種習慣,鍛煉自身的邏輯思維和抽象思維能力。
當然,書籍、社區(qū)也都是非常好學習途徑,但是在學習初期還是建議以學習主線為主,書籍、社區(qū)等資源可以作為補充。當自身具備一定的編碼能力后,在通過書籍、社區(qū)、官網等途徑逐步豐富自身的知識體系。
方法固然重要,堅持也必不可少!在入門階段,反復的訓練必然會乏味,但是確實是該階段的必經之路。
四、保持不斷學習
經過了入門階段,已經可以算是一名程序員,但是需要學習的知識還很多,豐富的知識是不斷提升的基礎。這個階段,很多知識已經可以靠自學來完成了,不過光在理論上理解還不夠,還是要尋找機會訓練,不斷的折騰,不斷的成長!在程序員這個職業(yè)里,持續(xù)學習永遠比編程能力更加重要!
雖然2019年是充滿波折的一年,但是程序員的缺口依然存在,高級程序員更是可遇不可求,建議樓主結合自身興趣,充分思考,謹慎決定。祝生活愉快~
首先現在正處于互聯網的大時代,由于互聯網的沖擊,是很多傳統(tǒng)行業(yè)面臨著轉型。作為打工者的我們,也應該意識到轉型這一點,現在不去做,不去改變自己,那么你就會被時代淘汰,題主 問的很好,這說明你已經認識到了 互聯網的優(yōu)勢,其實關于你說的零基礎可不可以做好程序猿,程序猿是個統(tǒng)稱,分為很多類別,軟件工程師 前端工程師 后端工程師 軟件測試 網絡安全工程師,那么我給題主的建議是,如果你是純小白的話,可以考慮往前端發(fā)展,前端入門容易,市場的需求量也很大,祝你早日轉行成功
作為一個軟件工程專業(yè)的學生 可以告訴你,你可以 先了解程序員 具體是干什么的,然后你再慎重考慮一下 自己到底有多么喜歡這個工作,等你想清楚這個問題之后,你就可以準備去學習程序了
一個程序員,心里必須清楚 程序=算法+數據結構+程序設計方法+語言工具和環(huán)境
接下來你就可以學習一門你喜歡的語言,嗯 那么我建議你學習c語言,c語言是使用最廣泛的一種語言, C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie于1972年推出,1978年后,C語言已先后被移植到大、中、小及微型機上,它可以作為工作系統(tǒng)設計語言,編寫系統(tǒng)應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統(tǒng)開發(fā)。
學好了c語言,學習其他語言來說就很簡單了,前提是你必須掌握好c語言,這樣 你就可以 更好的學習 接下來的事情呢
在學習c語言的過程中 你可以自己編寫一些編寫一些簡單的程序,你可以模仿 可以抄襲,自己 動手敲一敲代碼,我們可以從 hello world 開始,然后 你可以從楊輝三角 進行,
數據結構一定要 慢慢的進行學習數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關系的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來更高的運行或者存儲效率。數據結構往往同高效的檢索算法和索引技術有關。
目前 程序員工資最高的是 Java 程序 所以啊 你可以選擇學習java語言,希望你能學好它,這樣就 這樣程序員的道路上 走了會更好 希望你能關注我的 今日頭條,有什么不懂的問題 你也可以 給我留言,歡迎給我點贊