不過從經驗上來看,意見太統一也不一定是一件好事。我有時也會小人之心地想,表示贊同的朋友們是真與lovecherry的想法一致,還是僅僅因為自己以前對待技術隨波逐流不堪所累,現在把這篇文章作為救命稻草看待,追求自身的心理平衡呢?lovecherry寫這篇文章,是基於他對於技術和思想的深度。如果我們沒有達到這樣的程度,是否會誤解他的意思,得到的僅僅是一種心理安慰,卻失去了更多東西呢?
我們到底該如何學習技術?或者說,如何成為乙個優秀的技術人員?
如果要成為乙個優秀的技術人員——我並沒有說是「開發人員」,比如也包括「測試人員」吧——一定需要紮實的基礎。什麼叫做紮實的基礎呢?其實就是我們大學所學的課程——離散數學、演算法與資料結構、作業系統、計算機體系結構、網路、編譯原理等等。現在它們經常被視為「沒有用」,但是我認為這些都是乙個優秀技術人員成長和前進的基礎。不知道大家有沒有過這樣的感覺:某天早上一醒來,發現對於最近接觸的事物有了新一層的認識,似乎什麼都不會了,卻好像什麼都理解了——就像張無忌練太極劍,不求劍招,只求劍意。我曾經有過兩次這樣的感覺,真可謂豁然開朗。其實我想,這就是所謂的「突破瓶頸」。而引起「量變到質變」的關鍵,可能就是您忽視的那些課程,那些一進大學就被「灌輸」的知識。
在面試時我經常聽到這樣的話:「我的理論和基礎不行,但是我讓我寫**是沒有問題的。」這樣看來,基礎真的沒有用嗎?我並不這樣認為,因為……
因為我們不光要寫**,而且要寫好的**,因此我們必須強調基礎。很多時候技術人員之間能力的高低,很可能就會取決於這寫基礎。有朋友告訴我,這些電腦科學的基礎的意義不僅僅在於知識本身,它們還能夠讓人的思維更符合電腦科學的發展和變革——這可能說的有點遠大,但是我基本上同意這個看法。如果說得簡單一些,它們讓您的思維方式更適合這個行業——試想,如果您知道了計算機/程式/框架/系統是怎麼想的,他們還能夠為難你嗎?
舉乙個例子,微軟有著大量高素質的技術人員,他們是微軟驚人生產力的源泉。因此微軟能夠在vista和office開發完成之後將大量牛人派去作windows live產品研發。在我們很多技術人員看來,vista是作業系統,windows live是web,兩者大相徑庭。但是微軟就是能夠有大量的技術人員作此類遷移。再舉乙個例子,當年google挖角microsoft許多技術人員,難道他們跳槽去google繼續作微軟產品的研發嗎?正是因為那些技術人員有著紮實的基礎能力,因此就能夠在各種型別的技術之間游刃有餘,即使它們「表面」上看來差距有多大。
表面?這兩個字放在這裡是什麼意思?因為這就是我想說的就是……
其實《不》一文的中心思想,就是不要隨波逐流,不要迷失在技術的汪洋之中。我很同意,但是我也想補充一點我的看法。
我是今年1月份加入目前的公司的,公司的技術團隊當時使用.net framework 1.1進行應用開發。是時由於業務的原因需要開發乙個平台以及其他一些應用,我在時在技術部門內部強烈建議將新系統使用.net framework 2.0 + 3.0的方式進行構建。我的理由是:「使用.net framework 2.0構建新平台在基礎設施上不會增加任何成本,但是在功能和效能上都會有提高。而.net framework 3.0,尤其是wcf,是微軟提供的新元件,也即將成為微軟平台上通訊的標準。」領導同意了我的建議,並希望我帶領新的團隊進行新平台的開發。過程中的細節就不一一道來了,現在回頭看來過程雖有波折,但是倒也收到了較好的效果。我們經常會發現有技術人員會抱怨技術發展地太快,但是就拿我之前的例子來說,在2023年還在使用2023年出現的東西,卻忽視2023年就已經成熟的技術,這究竟是技術發展的太快,還是我們沒有根本沒有去跟進技術呢?
我想答案很明顯是後者,這其實就是「如果乙個技術不會用到,就不要去學它。當要用的時候再去學」。我們不會(或者很難)因為不斷鑽研老技術而領會新技術,掌握新技術是需要我們主動去追求的。如果乙個人不追求,他就難以發展。如果人人不追求,那麼整個技術團隊就難以發展。不過我認為,其實只要懷著「把專案做的更好」的想法,追求新的技術和實踐(例如重構、tdd)是自然而然的事情。
不論您是普通開發人員、技術經理抑或是架構師,我想您都不能止步不前。有人說,領導不願意使用新技術,我們沒有辦法——那麼設法說服他們。如果他們不能給出讓您滿意的理由,如果您覺得他們妨礙了您的發展,那麼可以選擇離開。我想有追求的您一定不會在找工作的問題上遇到太多麻煩。:)
似乎話題有些偏了,我們回到正體。新技術那麼多,我們到底該怎麼學呢?我這裡想說的就是,新技術並非洪水猛獸。在一定程度上,我們完全可以駕馭它們。
我們來想一下,新技術是怎麼來的?新技術並不是某些公司的牛人們拍腦袋出來的,新技術也是發展過來的。發展需要時間,發展是乙個過程。例如c# 3.0由2.0發展而來,clr 2由clr 1發展而來。根據我的經驗,如果乙個技術人員能夠較好地掌握.net framework 1.1,他幾乎能夠輕而易舉地過渡到.net framework 2.0。他之需要了解一下新特性,找一些資料比較一下前後兩者的改變即可。我們並沒有創造技術,我們只是在跟進。為什麼總有人能夠在技術出現不久就寫出大量文章或書籍來進行推廣呢?這就是值得我們思考的地方。
舉個例子,如果要從.net 2.0公升級到3.5(我不懂vb,用vb的朋友抱歉了),其實您只需要了解……
真的不多。其實我覺得,跟進每個人各自領域的技術並非不可能的事情。我一再提到這麼一句話:乙個優秀的技術人員,他的知識架構應該成倒t字形,有著紮實的底盤,並且成為某個領域的專家。
紮實。我認為,這是關鍵。
我的文章寫完了。
我很理想,我也在努力。:)
我們該怎麼成為技術尖子生
我上小學時從一到四年級都是好學生,班級前十名。我時常把功勞歸功於我當時的老師,因為老師上課講的仔細,講的慢,遇到學生不懂得會停下來 不厭其煩的 反反覆覆的跟我們講解,直到我們達到 滿腦子都是課本知識 的狀態,自然到了考試時,一拿到試卷題目彷彿見到自己親人一般的好認 親切 易上手。那一年,我是班級名列...
計算機網路到底該怎麼學?
你好,我是 趣談網路協議 的作者劉超,我為你整理了 趣談網路協議 專欄的所有學習資料,並告訴你如何更高效地使用這些資料,從而幫助你消化吸收專欄內容,以期獲得更好的學習效果。我從常用的網路協議中,精心篩選了核心知識點,編成了10道測試題。這裡面的題目和答案都是我精心設計的。你一定要拿出紙筆,認真思考,...
新手該如何學python怎麼學好python
1 學好python的第一步,就是馬上到 3 學完了基本語法後,就可以進行互動式學習了。python具備很好的互動學習模式,對於書本上的例子我們可以通過互動平台進行操練,通過練習加深印象,達到學習掌握的目的。4 通過以上三個步驟的學習後,我們大致掌握了python的常用方法 關鍵字用法以及函式語法等...