畅谈编程人生
瘋狂Java實訓(xùn)營創(chuàng)始人李剛:暢談編程人生
width="22" height="16" src="http://hits.sinajs.cn/A1/weiboshare.html?url=http%3A%2F%2Fwww.csdn.net%2Farticle%2F2014-11-10%2F2822554&type=3&count=&appkey=&title=%E5%8D%81%E5%A4%9A%E5%B9%B4%E7%9A%84%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E4%BB%8E%E4%B8%9A%E7%BB%8F%E9%AA%8C%E7%9A%84%E2%80%9C%E8%80%81%E7%A8%8B%E5%BA%8F%E5%91%98%E2%80%9D%E6%9D%8E%E5%88%9A%E8%80%81%E5%B8%88%E4%BB%8E%E4%BB%8A%E5%A4%A9%E5%BC%80%E5%A7%8B%EF%BC%8C%E5%9D%90%E9%95%87CSDN%E7%A4%BE%E5%8C%BA%E9%97%AE%E7%AD%94%E6%A0%8F%E7%9B%AE%E7%9A%84%E7%AC%AC%E5%8D%81%E4%B8%89%E6%9C%9F%EF%BC%8C%E5%B1%8A%E6%97%B6%E4%BC%9A%E6%8E%A5%E5%8F%97%E5%B9%BF%E5%A4%A7%E7%BD%91%E5%8F%8B%E7%9A%84%E6%8F%90%E9%97%AE%EF%BC%8C%E4%BB%96%E5%B0%86%E4%BA%A4%E6%B5%81%E7%A8%8B%E5%BA%8F%E5%91%98%E5%85%A5%E8%A1%8C%E3%80%81%E5%BF%83%E6%80%81%E3%80%81%E6%8A%80%E8%83%BD%E7%AD%89%E6%96%B9%E9%9D%A2%E5%86%85%E5%AE%B9%EF%BC%8C%E6%80%BB%E7%BB%93%E7%A8%8B%E5%BA%8F%E5%91%98%E8%81%8C%E4%B8%9A%E7%9A%84%E5%89%8D%E9%80%94%E3%80%81%E6%9C%AA%E6%9D%A5%E3%80%82&pic=&ralateUid=&language=zh_cn&rnd=1416030558648" frameborder="0" scrolling="no" allowtransparency="true">摘要:十多年的軟件開發(fā)從業(yè)經(jīng)驗的“老程序員”李剛老師從今天開始,坐鎮(zhèn)CSDN社區(qū)問答欄目的第十三期,屆時會接受廣大網(wǎng)友的提問,他將交流程序員入行、心態(tài)、技能等方面內(nèi)容,總結(jié)程序員職業(yè)的前途、未來。
十多年的軟件開發(fā)從業(yè)經(jīng)驗、瘋狂軟件教育中心教學(xué)總監(jiān)、瘋狂Java實訓(xùn)營創(chuàng)始人、瘋狂Java體系原創(chuàng)圖書作者李剛老師從今天開始,坐鎮(zhèn)CSDN社區(qū)問答欄目的第十三期,屆時會接受廣大網(wǎng)友的提問,歡迎各位網(wǎng)友前來與謝老師一起暢談編程人生。
李剛老師將交流程序員入行、心態(tài)、技能等方面內(nèi)容,以一個十多年“老程序員”的經(jīng)歷向大家敞開心扉,分享一個“老程序員”職業(yè)生涯的快樂,總結(jié)程序員職業(yè)的前途、未來。
瘋狂Java實訓(xùn)營創(chuàng)始人、瘋狂Java體系原創(chuàng)圖書作者李剛
李剛(微博),十多年的軟件開發(fā)從業(yè)經(jīng)驗,瘋狂軟件教育中心教學(xué)總監(jiān)。瘋狂Java實訓(xùn)營創(chuàng)始人,瘋狂Java體系原創(chuàng)圖書作者。廣東技術(shù)師范學(xué)院計算機科學(xué)系的兼職副教授。培訓(xùn)的學(xué)生已在華為、IBM、阿里軟件、網(wǎng)易、電信盈科等名企就職。
國內(nèi)著名高端IT技術(shù)作家,已出版《瘋狂Java講義》、《瘋狂Android講義》、《輕量級Java?EE企業(yè)應(yīng)用實戰(zhàn)》、《瘋狂iOS講義(上)(下)》、《瘋狂Ajax講義》、《瘋狂XML講義》、《經(jīng)典Java?EE企業(yè)應(yīng)用實戰(zhàn)》、《Struts?2.x權(quán)威指南》、《瘋狂HTML?5/CSS?3/JavaScript講義》等著作。其中瘋狂Java體系圖書均已沉淀多年、贏得極高的市場認同、多次重印成為超級暢銷圖書,并被多所“985”、“211”高校選作教材,部分圖書已被翻譯成繁體中文版、授權(quán)到臺灣地區(qū)。
十多年“老程序員”的李剛老師與你暢談Java編程人生,以下是李剛對編程人生理解和看法,更多精彩還請關(guān)注CSDN社區(qū)問答欄目的第十三期。
我對IT的理解
從人類文明的發(fā)展歷史來看,人類文明發(fā)展史,本質(zhì)上就是一部IT發(fā)展史,此處的IT指廣義的IT:Information &?Technology,人類從結(jié)繩記事開始,已經(jīng)意識到信息重要性,因此人類采用采用“結(jié)繩”這種記錄信息的技術(shù);后來古代中國出現(xiàn)了甲骨文,但由于龜甲難得,因此只有堪稱“神諭”的文字才能得以記載、保存下來;然后開始出現(xiàn)了銘刻在青銅器上金文,同樣只能記錄極少、及其珍貴的文字。
為了尋找能更好、能記錄更多信息的技術(shù),中外先賢孜孜以求,他們陸續(xù)發(fā)現(xiàn)了竹簡、獸皮等載體——所以直到今天,在西方世界中,羊皮卷都代表了偉大先賢的智慧和則學(xué)。
直到后來,中國人發(fā)明了紙,這種方便攜帶、而且造價便宜的信息技術(shù),也是中華文明開始大放異彩:漢賦、唐詩、宋詞、元曲、明清小說,這些文明需要記錄的信息量越來越大,而且需要廣大普通民眾的參與——這都是因為紙的推動,而紙,就是當時最為先進的IT技術(shù),也是中華文明得以發(fā)展、屹立于世界文明之巔的秘密。
培根說,知識就是力量。知識,這個詞除了可用knowledge表示之外,也可用information表示,因此完全可以說:信息就是力量。信息是易逝的、需要傳承的,而信息技術(shù)的根本目的就是讓人類的知識薪火相傳。中國古代留下的浩如煙海的文學(xué)典籍,但在醫(yī)學(xué)、玄學(xué)、自然科學(xué)……等學(xué)科上則保守的多,“傳男不傳女、傳內(nèi)不傳外”等門戶囿限極大地限制中華文明的傳承。對于當代中國人而言,實該以此為鑒,應(yīng)積極傳播心得,分享信息。
今天,狹義的IT則指的是以計算機、網(wǎng)絡(luò)為信息的記錄載體,今天的IT技術(shù)不僅能快速記錄海量信息、支持快速檢索,而且能以電的速度,實時同步到地球的每個角落,最新的IT技術(shù)成就了美國的今天,正如紙張成就了古代中國的卓爾不群。無論哪個民族、哪個國家,掌握了最新的信息技術(shù),就可以屹立于世界之巔。
軟件行業(yè),既是廣大軟件從業(yè)者賴以謀生的行業(yè),也是華夏民族復(fù)興的關(guān)鍵行業(yè)。軟件開發(fā),應(yīng)該是成為軟件從業(yè)者的興趣,也應(yīng)該成為軟件從業(yè)者的生活習(xí)慣。當然,沒有人天生對什么事情感興趣。即使是玩游戲,也要有人帶、有人教,才能學(xué)會。對于年輕人來說,剛開始接觸一個事物時,不管是否喜歡,先不要排斥它,扎扎實實做上一段時間,等真正明白自己在做什么,然后才能得到正確的結(jié)論。
軟件開發(fā),是對現(xiàn)實世界的信息化過程的模擬、重建。開發(fā)一個程序,實際是創(chuàng)造一個或大或小的“模擬世界”。在這個過程中,程序員享受著“創(chuàng)造”的樂趣,程序員沉醉在他所創(chuàng)造“模擬世界”里:瘋狂地設(shè)計、瘋狂地編碼實現(xiàn)。實現(xiàn)過程不斷地遇到問題,然后解決它;不斷地發(fā)現(xiàn)程序的缺陷,然后重新設(shè)計、修復(fù)它——這個過程本身就是一種享受。一旦完全沉浸到編程世界里,程序員是“物我兩忘”的,眼中看到的、心中想到的,只有他正在創(chuàng)造的“模擬世界”。
對于許多年輕人而言,如何培養(yǎng)編程的興趣可能是一個問題,許多年輕人開始可能抱著極大的熱情準備投入軟件開發(fā),但會在學(xué)習(xí)、工作過程中會有大量問題撲面而來,許多年輕人可能就會放棄,因此對于有經(jīng)驗的知識傳播者而言,不應(yīng)該滿足于炫耀自己的知識、技能,而應(yīng)該致力于如何幫助學(xué)習(xí)者,盡可能通俗、簡單地把知識傳播出去,這樣才會對年輕人有切實的幫助,瘋狂Java體系、瘋狂iOS體系圖書秉承這條原則,希望帶給軟件行業(yè)從業(yè)者切實有用的幫助。
除此之外,軟件開發(fā)者也需要調(diào)整自己的心態(tài),不要夢想一蹴而就,羅馬不是一日建成的。在軟件開發(fā)行業(yè),表面上的毫不費力,背后一定十分努力。只要不斷堅持學(xué)習(xí)、積累,就一定如春園之草,不見其長,日有所增。不論是學(xué)習(xí)過程、還是開發(fā)過程,都應(yīng)該學(xué)會享受:享受點滴的改進,如同享受沿途的風景。定期重構(gòu)從前的項目,就像總結(jié)過往的歲月。結(jié)果雖然值得關(guān)注,細節(jié)更需要把握,就像生命是一個過程。
對個人而言,軟件行業(yè)是一個“進可攻、退可守”的行業(yè):遇到志同道合的朋友、資金不太緊張時,能“大膽向前”,創(chuàng)業(yè)一次,這就是一次偉大的經(jīng)歷。無論成敗,經(jīng)歷才是享受;一無所有時,至少還有編程。
軟件行業(yè),作為21世紀最朝陽的行業(yè),從少數(shù)人參與的科學(xué)計算時代,到普通人接觸的單機軟件時代,再到互聯(lián)網(wǎng)時代,直到今天的移動互聯(lián)網(wǎng),與普通人生活聯(lián)系得越來越緊密。
我的編程人生
我在大學(xué)學(xué)習(xí)的第一門編程語言就是FORTRAN(不知道現(xiàn)在大學(xué)是否還教這門語言),這門語言就是專門科學(xué)和工程計算而設(shè)計的,就是早期軟件行業(yè):曲高和寡,大部分普通人并不知道,也意識不到軟件行業(yè)會發(fā)展到與每個人息息相關(guān)。
當我開始用Visual?FoxPro、VB等工具開發(fā)開發(fā)一些工具軟件換錢的時候,各種單機游戲、單機系統(tǒng)軟件已經(jīng)開始走近普通人:《大富翁》、《明星三缺一》……等游戲讓普通人感受了電腦、軟件吸引力;此時各行各業(yè)的已經(jīng)急不可耐地掀起了“ERP”熱,大量私營企業(yè)主已經(jīng)開始感受到軟件管理的便捷和魅力。
互聯(lián)網(wǎng)時代、移動互聯(lián)網(wǎng)時代,則成就了普通大眾的狂歡盛宴。時至今日,街頭無處不見的“低頭族”、“拇指族”,顯示了軟件行業(yè)的強大魔力。大量軟件巨頭、無數(shù)草根創(chuàng)業(yè)者,正在這片領(lǐng)域殺伐征戰(zhàn):一個軟件公司倒下去,千千萬萬個軟件公司會站起來。
軟件開發(fā)的現(xiàn)狀及未來
有人可能會問:軟件研發(fā)能力會過剩嗎?軟件開發(fā)人才會飽和嗎?我的回答是:絕對不會。除非出現(xiàn)一種更先進、更未來的行業(yè)。軟件,現(xiàn)在已經(jīng)成為、或即將成為基本的生活驅(qū)動力,且不論已經(jīng)廣泛普及的游戲、電商行業(yè)所需的軟件人才會逐年遞增,而且大量傳統(tǒng)行業(yè)、工具正向“智能化”方向發(fā)展(“物聯(lián)網(wǎng)”、“智能家居”也是目前熱門詞),不管哪種智能化,一定要有軟件的支撐,由此可見,軟件行業(yè)依然處于高速爆炸期:軟件的存在形式、運行平臺可能會變化,但軟件行業(yè)的前景無限遠大。
另外一個不容忽視的問題:軟件行業(yè)確實承受著巨大的壓力,這種壓力既有來自外界的壓力,也有來自程序員自身的壓力。
談程序員的抱怨、缺乏運動、加班和壓力等
對于大部分草根出身的程序員而言,如果選擇在公司從事開發(fā),則有來自公司管理層、客戶的壓力,由于軟件本身的復(fù)雜度,另外加上來自客戶的壓力,開發(fā)周期的壓力,以及軟件工程管理的各種不規(guī)范,這些都會帶給普通開發(fā)者必須面對的困擾。具體來說,軟件工程師經(jīng)常抱怨的問題有:長時間坐在電腦面前編碼,缺乏運動;長期高強度的腦力勞動,導(dǎo)致疲憊;不定期的加班,生活缺乏規(guī)律……
關(guān)于上面這些抱怨,既是心態(tài)問題,也是習(xí)慣問題,首先必須從心態(tài)上認識到:這世界上任何一種工作都是辛苦的、都有必須承受的工作壓力——所有光鮮的成就,都有背后的辛酸和汗水。就像一部電影中的臺詞:“年輕的時候總想知道沙漠那邊有什么,走過去發(fā)現(xiàn)其實什么也沒有,除了沙漠還是沙漠。”如果年輕人能早一天明白這個道理,他會更加欣然地接受自己的職業(yè)。
至于提到軟件工程師缺乏運動,這其實是一個生活習(xí)慣問題——不管工作多忙,我們總可以抽出一個小時去做運動,選擇一個適合自己的運動,將它變成生活習(xí)慣就好了。年輕時候,總以工作忙作為借口,我同樣很少運動。現(xiàn)在人到中年,開始學(xué)會改變自己,逐漸培養(yǎng)健康的生活習(xí)慣,現(xiàn)在我每天能堅持跑步4~5千米,其實現(xiàn)在我的工作比以前更多,只是個人的習(xí)慣變了。時下很多年輕人,下班之后,看電視有時間,玩游戲有時間、甚至打麻將也有時間,反而運動就沒時間——這顯然就是生活習(xí)慣導(dǎo)致的,而絕非軟件開發(fā)職業(yè)占據(jù)了他所有的時間。
至于說到加班問題,則可從兩方面來解決:
一方面軟件工程師要提高自己的能力:提高編碼效率和排錯效率,這樣可以最大限度地保證開發(fā)效率,盡量在工作時間解決工作問題,試想一個小小錯誤就調(diào)試、耽擱很長時間,那自然就導(dǎo)致了后面的加班啰;
另一方面則需要學(xué)會溝通,學(xué)會與上司、管理者確認模塊的開發(fā)周期,而不是盲目地順從。
程序員自身的壓力則來自于軟件行業(yè)的高速發(fā)展:迄今為止,軟件行業(yè)是實際上發(fā)展最快的行業(yè),短短幾十年,軟件行業(yè)已經(jīng)經(jīng)歷了傳統(tǒng)的科學(xué)計算時代、單機軟件時代、互聯(lián)網(wǎng)時代,目前正處于移動互聯(lián)網(wǎng)時代,接下來物聯(lián)網(wǎng)、智能家具時代即將來臨,這種飛速發(fā)展帶來的是各種開發(fā)語言、各種新技術(shù)層出不窮,令人眼花繚亂,而軟件工程師則需要不斷地更新自己的知識,這種壓力確實是軟件工程師無法回避的客觀存在。既然無法回避,那就不如直面這種壓力,只不過調(diào)整一下看法即可。首先要我們要意識到,正因為軟件行業(yè)是一個朝陽行業(yè),具有勃勃生機,自然就會衍生大量的新東西,這些新東西就需要軟件工程師積極探索;相反,如果一個行業(yè)日語沒落,自然也就沒有新東西產(chǎn)生了。其次,探索新知識的過程中,無需給自己太大的壓力,“吾生也有涯,而知也無涯”,我們只要看準自己的興趣,每天堅持留給自己2個小時左右的學(xué)習(xí)時間,積十年寒暑之功,自然就能做到“望盡天涯路”。
總結(jié)