IT界存在這樣一種典型的情況。一個大學剛畢業後參加工作的同學,憑著在學校學到的一些計算機專業知識,熟悉VC、VB、Java、Delphi等一兩種程式語言的技能,以及一兩張計算機等級證書,比較順利地進入一家軟體公司工作。但是他滿足於現狀,對實際工作中碰到的問題也不求甚解。不多久,就陷入了公司裡的一種「上一天班拿一天工資」的圈子裡。大家知道,IT行業風險與利潤同在,而且行情變化很快,說變就變。有一天,公司領導層突然宣布公司經營狀況不太好,要緊縮成本,開始裁員。他很不幸,名列其中。沒想到,一兩年的不思進取,造成了如今如此被動的局面。
所以,讓我們警醒一點吧!因為,一不小心,這個不幸者就可能是你。我們要時時提醒自己:加緊學習,學習,再學習;做一個積極上進的人。只有不斷保持並且提高自己對於公司的價值,我們的事業才會更上一層樓。筆者寫這篇文章的目的,一來是想給廣大同仁們敲一下警鐘,二來也是想更加務實地提出一些學習新技術的個人心得,以作拋磚引玉之功。
技術是在不斷發展的,新技術也在不斷地湧現。然而,人的精力是有限的,我們不可能去研究每一種新技術。選擇適合自己的去學才是明智之舉。那麼,我們怎麼來做到這一點呢?一定要結合自己的工作實踐,綜合考慮到自己現有的知識結構,並分析一下公司的核心技術是什麼(以及它的市場前景如何),看看你周圍同事們的專長,看看網上用人單位的類似職位的招聘要求,我想,我們不難得出結論。
筆者從事多媒體軟體開發工作這麼幾年來,也頗有幾分心得。下面,我想結合自身的實踐,跟大家一起來回顧一下這段學習、進步的歷程。我們開發微軟Windows平臺上的多媒體應用軟體,程序使用DirectX中的DirectShow作為基本架構,這是微軟自DirectX 8.0 SDK發布以來的最新技術(DirectX 8.0之前沒有DirectShow這個技術名詞,萌芽狀態的技術叫做Direct Media)。學習DirectShow編程技術,在當時是很具有挑戰性的。因為作為一項新技術,它有自身的特點:書店買不到參考書,網上的資料微乎其微,交流的地方很少(很難找到專家型人物向其諮詢),現有的資料都是英文的,還有就都是一堆一堆的原始碼。這些因素決定了,學習一項新技術是份苦差事。不過,再苦也要上啊!因為這是一項先進的技術,如果掌握了它,能夠提高自己的實力以及自身的價值。在做好了要付出艱苦努力的思想準備後,我們也應該認識到,這同時也是一次難得的機會。
學習DirectShow,最直接的資料就是它的幫助文檔。這些文檔篇幅很大,但是不要灰心,慢慢看!而且,這些文檔不是讀過一遍就能了事的。我們要把指向這些文檔的快捷方式放到桌面最顯眼的地方,以便於經常性的查看。電子文檔看多了,眼睛受不了,也可以將部分章節列印出來再看;大塊大塊的文字很費解,我們就應該儘可能多地從相關的插圖去獲得更多的信息。第一遍閱讀,我們要力圖從總體上對這項技術作出一個了解,知道它能夠做什麼,大致是怎麼做的。然後,逐步深入。這樣,對於理解這項技術,保持對這項技術認識的完整性很有幫助。另外,大家知道,任何新技術的出現都不是突變的,它們總是在以前的技術成果基礎上發展而來的。因此,對於學習一項新技術,了解它的技術發展背景,以及它使用到的相關技術也是相當重要的。就比如DirectShow來說吧,這套架構完全是建立在COM的原理之上的。如果我們對COM一無所知,直接學習DirectShow的結果只會是雲裡霧裡,似懂非懂。另外,DirectShow集成了DirectX其他部分如DirectSound、DirectDraw等的技術,對這些相關技術了解,對於我們學習DirectShow也是大有裨益的。
除了DirectX的幫助文檔外,第二個寶貴的資源,就是隨SDK一起發布的開發類庫原始碼,以及一些例子程序。看人家的代碼是很辛苦的!但為了深層次地了解它,我們必須這麼做。DirectShow SDK的目錄裡BaseClasses工程,提供了開發DirectShow Filter的所有基類。通讀了這裡的所有類的原始碼,我們就能對Filter的工作流程「親密接觸」,以後自己開發Filter可以說肯定也是遊刃有餘。另外,就是學習例子程序,一個一個研究過去。發現它們的共同點,比較它們的差異;要勤記筆記;必要的時候,我們還可以在編程環境中單步跟蹤,直至將不明白的技術細節徹底搞清楚為止。這是一個鞏固和加深第一階段看文檔學習所獲知識的過程,也是一個能夠不斷品嘗到點點滴滴收穫喜悅的過程。「痛並快樂著」!
在學習的過程中,我們還要學會善於總結。總結,是給前一階段的學習設置一個「裡程碑」;在總結中,我們同樣也能學習到新的知識,所謂溫故而知新。總結的方式多種多樣,可以寫一些學習心得,在網上發表(可以和網友交流一下);或者跟一起學習這項技術的同事定期交流等等。這些方法無疑都會促進我們的學習。學習的過程中,我們還要勇於實踐。因為理論來源於實踐,理論能夠指導實踐。我們要把學到的東西放到實踐中去驗證;進而得到更加豐富的實踐經驗,上升為理論;然後再實踐。學習本來就是一個反反覆覆的過程。實踐的內容,可以是自己動手編寫一些小型的、功能簡單的應用程式。一個好的建議,就是可以編寫一個這項技術相關的實用工具。拿DirectShow來說,我們就可以開發一個工具性質的Filter,利用這個Filter,我們能夠方便地查看其他Filter的狀態細節,可以控制Filter的行為等等。
總之,學習一項新技術是不容易的,要快速掌握它更是難上加難。但是,如果我們始終保持一個積極上進、刻苦努力的心態,並且適當地注意學習方法,我想,我們一定能夠做得更好!誰說我們不會成功呢?
轉自(http://www.douban.com/note/277570123/)
聯盟寄語:
開發軟體不要覺得學好一技之長就萬事大吉了,因為科技發展速度越來越快,程式語言的更新速度也在加劇,作為一個合格的碼農就不要停止學習的腳步,不斷充實自己,做到老,學到老,很適合咱們技術人員。
針對入門有疑惑的小夥伴聯盟推出(入門解惑)系列讀物
1. 為什麼選擇軟體開發?
2. 學習哪種語言最容易找到工作?
3. 數學不好,能學好編程嘛?
4. 沒進公司之前,如何混項目經驗?
點擊文章左下角"閱讀原文"直接閱讀
關注微信公眾號:程式設計師互動聯盟(coder_online)
更有(java/C/C++/Linux/Android)高手幫你解決難題,一起互動