如何做程序員?
如何成為一個程序員
1、 程序員意味著要編程序。(如果你僅僅想得到一份高薪水的工作,喝喝咖啡就等老闆發薪水,我奉勸你還是另找一份更合適的工作,譬如練攤,真的,兄弟,這份工作不適合你)
2、你是學文的還是學理的,編程序也許需要浪漫,但更需要邏輯和嚴謹。(說坦白點就是,在你沒有找到樂趣以前,它很枯燥)
3、你有對新技術追求的熱情嗎?你有刨根問底的探索精神嗎?(熱情絕對是最重要的!你仔細思考一下自己的性格適合當程序員嗎?)
4、當程序員決不是什麼好差事,時刻需要學習,需要思考。(直到你成為那個可以引導別人去學習和思考的人,你才可以偷偷的嘿嘿笑,又一群傻蛋)
5、程序員的未來很迷茫。(但我認為關鍵看你自己!我希望你是一個有追求的人,不僅僅是混碗飯吃。因為真正的樂趣在於創造;如果你能改變軟件業的歷史,那才是英雄;不想成為Bill Gates,不想成為Dennis Ritchie和 Bjarne Stroustrup,我會說你沒有追求。有個關於程序員未來的笑話,也許你還沒聽過,你該聽一聽,摘抄如下:
一個程序員對自己的未來很迷茫,於是去問上帝。
“萬能的上帝呀,請你告訴我,我的未來會怎樣?”
上帝說“我的孩子,你去問Lippman,他現在領導的程序員的隊伍可能是地球上最大的”
於是他去問Lippman。
Lippman說“程序員的未來就是駕馭程序員”
這個程序員對這個未來不滿意,於是他又去問上帝。
“萬能的上帝呀,請你告訴我,我的未來會怎樣?”
上帝說“我的孩子,你去問Gates,他現在所擁有的財產可能是地球上最多的”
於是他去問Gates。
Gates說“程序員的未來就是榨取程序員”
這個程序員對這個未來不滿意,於是他又去問上帝。
“萬能的上帝呀,請你告訴我,我的未來會怎樣?”
上帝說“我的孩子,你去問侯捷,他寫的計算機書的讀者可能是地球上最多的”
於是他去問侯捷。
侯捷說“程序員的未來就是誘惑程序員”
這個程序員對這個未來不滿意,於是他又去問上帝。
“萬能的上帝呀,請你告訴我,我的未來會怎樣?”
上帝搖搖頭“唉,我的孩子,你還是別當程序員了”)
6、當程序員還是很有樂趣的。(當你學到新知識時,當你有新的思想見解時,當你有新的產品問世時,和知己探討你的成果時…我問你,覺得這些是樂趣嗎?)
7、當程序員不易也不難。(世間事有難易乎?為之…;不為…。你有決心和信心嗎?)
8、你真的要當程序員?是你自己的想法?
9、你捨得花錢買書嗎?(讀好書絕對是學習編程的最佳捷徑。你一定會說,現在電腦書籍真他XX的貴,沒法子,誰讓知識和技術在人家的腦袋,在人家的書裡呢;等你寫書時可以把價格定低一點,記著還有好多沒錢但想買書的兄弟很困難呀。要捨得買書,買好書,不好的的書不如不讀,其害大於其益,關於買什麼書,你可以問高手或看候捷的書評;準備一個小本子記錄你想買的書的名字,逛書店時看看,如果好就買下,記住要讀,別光買不看。) 10、我告訴你,程序就是:任何有目的的、預想好的動作序列,它是一種軟件。
11、編程序就是編寫程序。
12、你想好了嗎?(如果你想好了還是決定要當程序員,可以繼續往下讀;否則,你可以繼續尋找別的出路了。)
(三) 一個程序員應該具備的基礎知識和概念
1、計算機是有什麼組成的,CPU是什麼東西,其工作原理是什麼。(對於這些以及下面將要提到的概念我不會告訴你什麼答案,你可以看相應的教材,關於教材我會在下一部分詳述,記住理解最重要!)
2、機器語言和微指令集的概念。
3、程序的概念。
4、彙編語言是低級語言但不是機器語言。
5、高級語言主要有那些?(C......
如何成為一名程序員?
首先先選擇一門語言 現在比較火的是sun公司的java 和微軟的C#
友情提示:java移植性很好,這是網絡平臺所需要的。C#只能運行在微軟的平臺,有侷限性。
我不排斥其他的計算機語言 不過一般只要學懂一門語言後就相當進入程序的天堂,在學其他的語言時候就能簡單的多,因為很多軟件語言是相同的,學懂一門就能夠看懂其他的。
買書,見意買比較薄的書開始學,太厚的書看不完會打擊心靈。
需要有耐心,其實是非常有耐心,因為學軟件做軟件是一輩子的,沒有任何一門技術能做到老,必須一路學下去。每當度過一個階段儘量總結所學過的。
一定要沉得住寂寞,無論是學軟件還是做軟件。
只要認真學,一般一年自學都可以有所小成,程度還要看個人的領悟。
做軟件是需要注意很多細節,正是這些細節所以讓人很頭疼,所以需要耐心。
順便提一句:學軟件就儘量學比較火的,因為市場需要,才會火。
我不是鄙視某某某語言,而是實話說,畢竟學出來需要應付工作的,如果工作不需要,就算學的很有本事,沒人僱也沒用,對吧!
你完全可以去招聘網看看軟件這個行業哪些軟件需要的人才多。
別聽誰誰誰說哪種語言火,火不火招聘的數量就能說明一切。
一定要對軟件充滿信心,千萬別輕易放棄。相信軟件是有“錢”途的。
本人現在也是在自學軟件,也有三年的學習。
以上是我一些經驗,如果有需要,可以按右下角Hi我,相互促進。
怎樣才能快速成為一名程序員
1 學習如何編程
這當然是最基本的黑客技術。如果你還不會任何計算機語言,我建議你從Python開始。它設計清晰,文檔齊全,對初學者很合適。儘管是一門很好的初級語言,它不僅僅只是個玩具。它非常強大,靈活,也適合做大型項目。
但是記住,如果你只會一門語言,你將不會達到黑客所要求的技術水平,甚至也不能達到一個普通程序員的水平---你需要學會如何以一個通用的方法思考編程問題,獨立於任何語言。要做一名真正的黑客,你需要學會如何在幾天內通過一些手冊,結合你現在所知,迅速掌握一門新語言。這意味著你應該學會幾種不同的語言。
如果要做一些重要的編程,你將不得不學習C語言,Unix的核心語言。其他對黑客而言比較重要的語言包括Perl和LISP。 Perl很實用,值得一學;它被廣泛用於活動網頁和系統管理,因此即便你從不用Perl寫程序,至少也應該能讀懂它。 LISP 值得學習是因為當你最終掌握了它你會得到豐富的經驗;這些經驗使你在以後的日子裡成為一個更好的程序員,即使你實際上可能很少使用LISP本身。
當然,實際上你最好四種都會。 (Python, C, Perl, and LISP). 除了是最重要的四種基本語言,它們還代表了四種非常不同的編程方法,每種都會讓你受益非淺。
這裡我無法完整地教會你如何編程---這是個複雜的活兒。但我可以告訴你,書本和課程也不能作到。幾乎所有最好的黑客都是自學成材的。真正能起作用的就是去親自讀代碼和寫代碼。
學習如何編程就象學習用自然語言寫作一樣。最好的做法是讀一些大師的名著,試著自己寫點東西,再讀些,再寫點,又讀些,又寫點....如此往復,直到你達到自己在範文中看到的簡潔和力量。
過去找到好的代碼去讀是困難的,因為很少有大型程序的可用源代碼能讓新手練手。這種狀況已經得到了很大的改善;現在有很多可用的開放源碼軟件,編程工具和操作系統(全都有黑客寫成)。這使我們自然地來到第二個話題...
2 得到一個開放源碼的Unix並學會使用、運行它
我假設你已經擁有了一臺個人計算機或者有一個可用的( 今天的孩子們真幸福 :-) )。新手們最基本的一步就是得到一份Linux或BSD-Unix,安裝在個人計算機上,並運行它。
當然,這世界上除了Unix還有其他操作系統。但它們都是以二進制形式發送的---你無法讀到它的源碼,更不可能修改它。嘗試在DOS或Windows的機器上學習黑客技術,就象是在腿上綁了鐵塊去學跳舞。
除此之外,Unix還是Internet的操作系統。你可以不知道Unix而學會用Internet,但不懂它你就無法成為一名Internet黑客。因為這個原因,今天的黑客文化在很大程度上是以Unix為中心的。(這點並不總是真的,一些很早的黑客對此很不高興,但Unix和Internet之間的共生關係已是如此之強,甚至連微軟也無可奈何)
So,裝一個Unix---我個人喜歡Linux,不過也有其他選擇。(你也可以在同一臺機器上同時運行DOS,Windows和Linux)學會它。運行它。用它跟Internet對話。讀它的代碼。試著去修改他。你會得到比微軟操作系統上好的多的編程工具(包括C,Lisp, Python, and Perl),你會得到樂趣,並將學到比你想象的更多知識。
關於學習Unix的更多信息,請看 The Loginataka.
要得到Linux,請看: 哪裡能得到 Linux...
想做一名程序員,要怎麼做?
學c 和 c++ 然後做點作品找工作
程序開發最重要的就是邏輯思維,數學只是對思維有好處 並不是必須,
大概是工學數學競賽的邏輯思維就ok了,你可以看看那些競賽題 我說的就是那個意思
其次是英文文檔 英語初中畢業水平得有,然後baidu或google翻譯就行了,,大學6級過了的人看計算機文檔都得用翻譯。聽說不用,遇到問題先查百度再查google
如何做一個成功的程序員
程序員是一種技術工作.在IT的發展中有相當重要的地位.從底層硬件通訊協議的建立. 到數據傳輸層的處理.到操作系統的建設.到數據庫平臺的建設.一直到應用層上各種數 據營銷平臺的搭建.程序員在裡面都扮演著舉足輕重的角色併為IT事業的發展做出了巨大 的貢獻.
中國有很多精於編碼的人.但是中國軟件行業.尤其是網絡應用開發方面誤區很大.很難形成有規模的軟件開發力量和產品能力.不但比美國差距甚遠.和印度相比也是頗有不 如.這些問題不是在於中國程序員的智商和工作努力狀況.也不是在於國家和民間對開發 的投入程度.而是很大程度上.有一些對技術.對程序開發.對項目設計方面的思想誤 區.這些誤區.導致了軟件行業的產品化能力不足.缺乏規模化和大型複用系統研發能 力.可以說.改變認識誤區.是解決軟件行業小作坊模式和個體英雄模式所帶來的侷限性 的重要工作.
中國有很多小朋友.他們18.9歲或21.2歲.通過自學也寫了不少代碼.他們有的代碼寫的很漂亮.一些技術細節相當出眾.也很有鑽研精神.但是他們被一些錯誤的認識和觀點左右.缺乏對系統.對程序的整體理解能力.這些人.一個網上的朋友說得很好.他們實際 上只是一些Coding fans.壓根沒有資格稱為程序員.但是據我所知.不少小網絡公司的 CTO就是這樣的coding fans.拿著嚇人的工資.做著嚇人的項目.項目的結局通常也很嚇人.
一.程序員基本素質
作一個真正合格的程序員.或者說就是可以真正合格完成一些代碼工作的程序員.應該具有的素質.
1:團隊精神和協作能力
把它作為基本素質.並不是不重要.恰恰相反.這是程序員應該具備的最基本的.也是最 重要的安身立命之本.把高水平程序員說成獨行俠的都是在囈語.任何個人的力量都是有 限的.即便如linus這樣的天才.也需要通過組成強大的團隊來創造奇蹟.那些遍佈全球 的為linux寫核心的高手們.沒有協作精神是不可想象的.獨行俠可以作一些賺錢的小軟 件發點小財.但是一旦進入一些大系統的研發團隊.進入商業化和產品化的開發任務.缺 乏這種素質的人就完全不合格了.
2:文檔習慣
說高水平程序員從來不寫文檔的肯定是乳臭未乾的毛孩子.良好的文檔是正規研發流程中 非常重要的環節.作為代碼程序員.30%的工作時間寫技術文檔是很正常的.而作為高級 程序員和系統分析員.這個比例還要高很多.
缺乏文檔.一個軟件系統就缺乏生命力.在未來的查錯.升級以及模塊的複用時就都會遇 到極大的麻煩.
3:規範化.標準化的代碼編寫習慣
作為一些外國知名軟件公司的規矩.代碼的變量命名.代碼內註釋格式.甚至嵌套中行縮 進的長度和函數間的空行數字都有明確規定.良好的編寫習慣.不但有助於代碼的移植和 糾錯.也有助於不同技術人員之間的協作.
有些coding fans叫囂高水平程序員寫的代碼旁人從來看不懂.這種叫囂只能證明他們自 己壓根不配自稱程序員.代碼具有良好的可讀性.是程序員基本的素質需求.
再看看整個linux的搭建.沒有規範化和標準化的代碼習慣.全球的研發協作是絕對不可 想象的.
4:需求理解能力
程序員需要理解一個模塊的需求.很多小朋友寫程序往往只關注一個功能需求.他們把性 能指標全部歸結到硬件.操作系統和開發環境上.而忽視了本身代碼的性能考慮.有人曾 經放言說寫一個廣告交換程序很簡單.這種人從來不知道在百萬甚至千萬數量級的訪問情 況下的性能指標是如何實現的.對於這樣的程序員.你給他深藍那套系統.他也做不出太 極鏈的並訪能力.性能需求指標中.穩定性.並訪支撐能......
如何自學成為初級程序員
[經驗之談]30歲,我的程序,我的夢!
程序人生 : 30歲,我的程序員夢想
作 者: redbridge (雪燃)
30歲,開始實現我的程序員夢,從一個編程愛好者,從一個業餘的程序員,一個水平不高的程序員,一個半道出家的程序員......
我的經歷到這裡就告一段落了,五年裡跳了五次槽,不知道和大家比算不算多J,沒有什麼太多起伏,但我想很多朋友可能會和我有類似的經歷,不知道能不能引起你們的共鳴。我想對我上面所說的話給一個總結:
1. 如果你覺得自己應該追求什麼,不管遇到什麼困難千萬不要放棄,一定要堅持下去。
2. 不要因為自己年輕就找理由揮霍時間,少玩一點SC、CS、魔獸3、傳奇、魔力或者…….,多看點書,多練練題。
3. 如果你還是在校的學生,英語很差,專業課也很差。沒關係,想怎麼學計算機就怎麼學計算機吧。其它地只要能混到畢業證就行了。除非你對自己的未來沒有信心。(當然,如果你的理想不僅僅是要做一個程序員,那你別丟掉英語。)
4. 如果你不是科班出身,想要轉行而不知該怎麼開始的話,建議你先看兩類書:(1)計算機原理;(2)數據結構和算法。(看數據結構之前先看C語言)。
5. 什麼時候努力都不晚,關鍵是你明白要努力了,大器晚成總比一事無成要好的多。
6. Java、.net、C++、PB、VB、Delphi、彙編到底應該學哪個?我的經驗,哪個最簡單就先學哪個、公司用哪個你就學哪個、哪個和你有緣(比如剛好你認識一個願意幫助你的Delphi高手)你就學哪個,如果你都學,或者三天兩頭的換,我可以告訴你結果肯定是什麼都不會,不要心浮氣燥,他們都只是工具,學精一門其它的就相通了,重要的是掌握編程的思想。如果你問我面向對象(好像現在已經是面向需求了)、UML、WebLogic、WebService、軟件工程、XML…….應該怎麼學呀,對不起,這些我也確實不是都會,但請相信,你先實實在在的寫上十萬行以上的代碼以後,那些東西你自然就慢慢會了。
7. 不要以為程序員的工資都很高,程序員之間的水平差異也大。公司衡量一個人的待遇標準是他能給公司帶來多大的效益。如果你體現了自己的價值,公司會主動給你加薪的,當然你也可以自己主動提,但一定要在你表現出了自己的價值之後。
8. 輕易不要跳槽,如果非要跳,也要保持工作經驗上的延續,而不是從新開始,不然就會象我一樣走很多彎路。
9. 如果你以為程序員都是熬夜熬出來的,那麼你錯了,因為它的代價就是縮短你的青春!大家不要象我一樣,真的,熬夜一點也不好!記住老毛的話:如有恆,何須三更起,半夜眠;最怕莫,三天打魚兩天晒網,竹籃打水一場空!
10. 這一點是我覺得最精華的一點:“君子性非異也,善假於物也。”這句話的本意是一個水平很高的人本身並不一定很高明,關鍵是他善於利用別人的高明!我在這裡做個借鑑,就是要充分利用自己身邊的資源,不放過任何一個可以提高自己的機會。大家不要誤會,這裡的假於物可不是指抄襲別人的源代碼,而是指通過學習別人的源代碼把他的思想擴展到自己的思想裡去。
注:上面的十大“精華”純屬我個人的“謬論”,您自己看著消化,有用的收下,沒用的請拖入“回收站”。如果你覺得這些總結不過是一些浮華之詞,那請你先問問自己:“是不是在行動上都真正做到了。”
這就是我,一個不算優秀,不算勤奮;玩能玩通宵,學也學能學通宵;對夢想的追求很執著;到了30才開始真正寫程序;一個很平凡但又不甘於平凡的人……我的經歷相信很多朋友都有過的,我現在也不能算是一個成功人士,但我相信我的經歷卻是值得大家借鑑的,因為我終究代表了一類人......
如何才能成為一名優秀的程序員
中國的信息技術發展迅速,由它所帶來的浪潮已經滲入到了人們生活的每一個角落,而程序員們成為了這場信息化浪潮的見證者之一,更是其中的主要參與者,這是時代賦予每個程序員的機會和責任。 做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點推薦的開發工具,C/C++以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟件還是用C/C編寫。而JAVA的跨平臺和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVA One很可能會成為未來的主流開發工具之一。其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,C Builder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。 熟知數據庫 為什麼數據庫是如此重要?作為程序員,他們自然有自己的理由:很多應用程序都是以數據庫的數據為中心,而數據庫的產品也有不少,其中關係型數據庫仍是主流形式,所以程序員至少熟練掌握一兩種數據庫,對關係型數據庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。雖然很多數據庫產品提供了可視化的數據庫管理工具,但SQL是基礎,是通用的數據庫操作方法。如果沒有機會接觸商業數據庫系統,可以使用免費的數據庫產品是一個不錯的選擇,如mySQL, Postgres等。 對操作系統有一定的瞭解 當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。要想成為一個真正的編程高手,需要深入瞭解操作系統,瞭解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。Linux作為開發源碼的操作系統,是一個很好的學習平臺,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。只有對操作系統有一定的瞭解後,你會發現自己上了一個新的臺階。 懂得網絡協議TCP/IP 在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課,網絡技術已改變了軟件運行的模式,從最早的客戶/服務器結構,到今天的WEB Services,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網絡協議支持,所以,深入掌握TCP/IP協議是非常必要的。
如何成為一個程序員
要成為這樣的程序員,其實沒那麼難。
在這個答案裡,我想把程序員分為兩個層次:
L1-能根據上級的指示,按照公司的要求和規範開展開發工作的,稱為程序員。
L2-能根據客戶的需求,選擇恰當的技術方案,制定合理的工作計劃,獨自或帶領團隊完成開發工作並達到質量要求,稱為軟件工程師。
我想題主可能想成為的是後者,而不是普通的編碼人員,在我接觸到的程序員中,其實很少有單純從事簡單編碼工作的,他們大多數都是乾的軟件工程師的活。
軟件工程師應該具備哪些能力呢?我們以前歸納過:
1. 分析問題的能力
2. 設計解決方案的能力
3. 編碼實施的能力
4. 排除故障的能力
這四種能力如果要展開來講,要寫好長的,暫時就不寫了。
開始回答——”如何成為“的問題。
科學家追求的是知識,工程師追求的是能力。而能力是很難從書本上的來的,只能從實踐當中來。
我注意到題主的問題中,提到看書靜不下心,看視頻又覺得太慢,可能從一個具體的項目開始更能激發學習興趣並且獲得成就感。
先給第一種路徑建議吧——從C語言開始。
之所以建議C語言,是因為C語言裡沒有那麼多現成的、強大的類庫,在不熟悉基本的語法、面向對象這些概念時C#其實比C語言難以理解,很難深入。學習C語言不僅限於對C語言語法的掌握,而是通過C語言的學習,建立程序設計的思維,比較深入地瞭解一些計算機系統的工作原理。
在我的教學班級中,我的教學內容是這樣組織的,題主似乎也可以按照這種方式來學習:
第一階段高級程序語言的基本概念(編譯、庫、鏈接等),開發工具的使用(Visual Studio 2010), C語言的基本結構以及在VC中的一些差異,動手能力上達到能按照書本輸入一個程序,能編譯,能運行的結果即可。
第二階段變量、指針、表達式、函數、分支、循環、簡單的輸入與輸出。
第一階段和第二階段的時間往往很短。
第三階段開始做第一個小程序(比如最簡單的超市收銀系統),這個時候學生開始頭大,因為很多要用到的東西根本就沒給他們講過,即使網上查得到資料也未必都能用在項目裡。學生被我帶進一個接一個的坑裡,我從不在第一時間告訴他們答案,總要他們冥思苦想抓耳撓腮一個星期了,下週上課的時候才開始講解決的思路和方法。
經過1個月左右的折磨,他們基本可以完成一個單機版的的超市收銀系統,完成比如輸入(從鍵盤,掃描槍就免了)信息、修改輸入、價格查詢、彙總結賬這樣的功能。從知識層面上,結構體、指針、文件訪問這些基本都解決了,順帶著把簡單的查找、排序算法也學了。
可以說這是學生最痛苦的階段,但是正是這個階段開始培養他們的自學能力,這個太重要了。但是效果也很明顯,到後期的時候,少數學生開始先於我提出解決方案了。
然後接著折騰,先帶學生回顧做過的這個程序,看如何能做的更好,運行的更快,Review和重構。
由於是純C完成的,程序總是看上去很混亂,修改、擴充也不是很方便,於是我們開始探索另一種編程思想——面向對象,C++上場,又是1-2個月,用C++重新寫這個程序,在這個過程中,要求他們自己實現String類,封裝數據結構和業務邏輯、數據訪問......
到這裡,一個學期結束了,第二學期要求學生把這個控制檯的黑窗口改成圖形用戶界面。MFC不準用,只准用一個叫做Easy-x的圖形庫,而且只准用其中的putpixel函數來繪製點,一輪新的折磨開始,從畫點、劃線、逐點寫漢字開始,繪製按鈕、繪製文本框、響應鼠標和鍵盤,並且要求他們開始設計和實現TextBox, Button,Image這些類.....,,順便把消息循環之類的機制也做了初步的瞭解和簡單的實現。......
怎樣成為超級程序員
別以為是那些軟件開發定律,別以為是開發出那些特殊用途的軟件,別以為是軟件設計技術本身。只有一條真理決定了一個軟件程序員的成功還是失敗。由於堅持這個真理,一個資深的程序員能在一天的時間裡學會一門新的編程語言,而由於不堅持這條真理,一個初級的程序員用十年時間也只能掙到一份餬口的錢、永遠是來實現別人的設計、永遠不夠優秀而得不到晉升的機會。這條真理讓你看清了差的程序員和好的程序員的不同之處,好的程序員和偉大的程序員的不同之處,偉大的程序員和能通過自己的技術創造出一個億萬美元價值的程序帝國的超級程序員的不同之處。而真正的原因只有一個,唯一的一個:對所做的事情的理解越深,你就會做的越好。超級程序員跟那些平庸的、一般的程序員比起來,對自己要做的事情的理解要深的多的多。這就是原因。要想成為一名出色的程序員,你所要做的就是完全的理解要在做的事情。有人會說,該知道的我都知道了。而對說這話的人的驗證就是看他們能有應用他們知道的知識的能力。是否他能夠構造出完美的系統架構,讓人們能輕鬆的維護?是否他能在不皺眉頭的情況下把一個普通程序員毫無可能解決的問題輕鬆解決掉?是否他能在被詢問時能用最簡單的概念把任何問題都闡述明白?如果能夠,那他就是一個傑出的程序員,他能很好的理解了他在做的事情。然而,儘管這些人看起來已經“無所不知”,很多的程序員(包括我)都感覺他們仍然在知識的海洋裡奮鬥不已。有如此多的東西需要去學習,一個人幾乎要花費他畢生的心力去學習,但仍然很難說能掌握計算機知識的90%。而這場持久戰中的祕密武器、戰勝計算機知識的亞瑟王的神劍,就是透徹理解。對你的領域裡的基礎知識理解的越好,你就越容易提升到更高的層次。你對這一層次的知識理解的越好,你就更容易掌握下一層次,以此類推。一旦你從最簡單最基礎的知識走到最高級最複雜的理論,你可以從頭再過一遍,此時你會驚奇的發現,在最低最底的底層,竟然還有那麼多知識需要學習。看起來這個道理實在是太簡單,難以受到重視,但事實就是這樣。通往傑出的程序員的道路就是完全的深入的理解,從掌握精通最基本的知識開始,從而逐漸牢固掌握更高級的知識。我不想騙你 ——這是一個很長的路程。但你是值得去做的。在路的盡頭,你會突然發現,自己神奇的成為了一位資深的程序員,受到所有人的尊敬。你能成為一位神奇的程序員,任何事情都難不倒的程序員,讓其他程序員都羨慕的程序員。誰能預料到呢?我不能告訴你你該做什麼或能成為什麼。但我可以告訴你我發現一些真實的道理和有價值的東西。怎麼去做全在於自己。
程序員到底怎麼了 如何成為一個合格的程序員
可是有一天,突然意識到,我們的未來在哪裡, 每個月那點可憐的工資,一年加起來也買不了幾平米,找個女朋友也那麼難,即使找到了,她還總是跟你說,為什麼別人掙的都比你多,你每天不停的寫著代碼,每天不停的掉頭髮,每天都在發呆的想那“不遠”的未來。 他們管我們叫“碼農”,我們管自己叫“程序員”,出差的時候被叫做“工程師”,我們到底是什麼? 對於我自己,我只想告訴每個人,我不是一個程序員,I’m not coder。 程序員到底怎麼了,我們當然不否認有很多出色的程序員,他們生活的好,賺的也多,可是畢竟大多數都還是一般水平,很多還是掙扎在基本滿足吃住的水平。特別深的問題,比如國家社會問題(總有人會說我們的社會把我們搞成了這個樣子),我這裡不想談,我來結合自己的體會來講講我所認識的一些程序員都在怎 樣工作和生活。 (@程序員的那些事 微博配圖) 我周圍的程序員大都不喜歡程序員這個行業,總希望如果未來可能,一定要跳出這個圈,去做別的行業,有的說去做銷售,有的說回老家開個小超市,有的說 的更是離譜。我不知道為什麼他們都在這麼說,原因在於我從未見過他們努力過,如果沒有努力過如何知道這個職業就是沒有前途的呢?工作的時候,他們大都在談 論社會問題,昨天看了什麼電影,誰也買了個iPhone,她的爸爸給她在北京買了套房子等等無聊的問題,後來他們談論什麼我就不知道了,我帶上了耳機,暢 遊在代碼的世界裡,享受著原來100行完成的功能,經過我重寫,只要50行就能運行的比以前好,而且效率更高。第一個問題,程序員和其他行業一樣,最起碼需要一個態度。如果你連基本的態度都沒有,不要談程序員沒有前途,以為每個行業對這樣的人來說都沒有前途。 我做完一個功能,演示給我的同事看,然後告訴他我是怎麼實現的,以及這樣做的好處是什麼。他的一句話像一盆涼水一樣潑在我的臉上,“你費這麼大勁幹 嘛啊,你不要想這麼多,領導又看不見你是怎麼設計的。”,“哦”。我很無語,也更不知道怎麼答覆他。聽完那句話我徹底明白程序員沒前途的原因了,和其他很 多行業相比,軟件不容易發現問題,也許你做個特效,讓一個東西蹦來蹦去反而得到領導的賞識,而你自己花費了很多自己私有的時間來設計的結構沒有人會採用, 因為你的領導要向他的領導交差,他也希望能拿的出一點能看得見的東西。很多程序員被這樣的領導強姦了,只做哪些表面工作來取悅領導,2,3年過後,發現自 己什麼都不會了。也就看不見前途了,做那點破東西,可以讓你得到一會兒的“賞識”,計算機是個技術活,需要技術和經驗的積累。第二個問題,程序員的前途是程序員自己造就的,如果你覺得你現在沒有前途,那隻能說明你做的不夠好。 計算機業界有很多好書,非常著名的書,比如《黑客與畫家》、《Unix編程藝術》,我不想說《算法導論》這種書,因為它確實枯燥無比,我自己也從未完整的看過一遍。但是像《黑客與畫家》 此類的書是不同的,它能打通你的思路,告訴你問題出在哪裡,未來的方向在哪裡。如果你想看看一個程序員的視野是否還算開闊,問問他是否聽說過某本書,聽說 過,那就還可以,說明自己懂點門道,如果讀過,那就太好了,可以問問關於書中的一些觀點,這裡沒有對或錯,完全是自己的觀點。我問過我身邊的同事,讀過這 些著作的人屈指可數,而讀過的確實不一樣,眼界比較開闊,不回侷限在非常狹小的範圍內,更不會跟你扯閒天。第三個問題,要多讀書,讀好書,而且不要只讀一遍。讀書應該像高中老師說的那樣,從厚讀到薄,從薄讀到厚。 我去年認識了一個朋友,這個人三句話離不開寫程序,我們吃午飯談程序,我們在電梯裡談程序,只要我們在一起我們就討論如何實現某......