很多程序員都是這樣,很多時候你直接給他項目給他做,他可以馬上查找資料做了,可是實際中,想你這樣,說是幹了有兩年,其實經驗也不過1年多點,你向人家吹你很牛逼,做幾個SSH框架技術很厲害,人家不問你深入點怎看到你的經驗在哪呢?小公司就更不用說啦,小公司都是處於發展的重要時期,對真正的人才急需,所以重點看能力然後學歷可以再商量。現在Java人才扔著滿街都是,如果面試官面試時看不出你有什麼能力和優勢,直接PASS掉,反正人家手中有的是面試者。不知道底層的東西,你只是個初中級的程序員,不會成為真正的軟體工程師,25歲不老,只要你有真正的技術和一張推銷自己的嘴,去哪都不會事業。
❷ 程序員在職業生涯中易犯的7個錯誤
1.沒有明確的職業目標
沒有目標的人生,就像無根的浮萍,水流到哪裡就飄到哪裡,一生漂泊。
如果你想要在軟體開發領域獲得真正的成功,那麼就必須知道該何去何從。或許面對遙遠的未來,你已經有了一個粗略的目標了。但是除了這點還不夠,你應當堅實自己的目標——清楚的定義在實現過程中的每個重要時間點所需要達到的效果。
我認識許多程序員和其它方面的專業人士,數十年來他們都在相同的職位上反復地做著同樣的事情。是的,你沒有看錯,是數十年。接受職業現狀,不做任何改變,是造成這種悲劇的根源。對於未來,如果你沒有明確的職業規劃,這樣的悲劇就很可能會發生在你身上。
面對於此,你該怎麼做呢?
從現在開始,花一些時間來認真規劃一下職業並確定最近的目標。一旦你達到了這個目標,你就要選擇一個新的目標了。在職業生涯中,這樣的目標會一個接著一個。你可以把這些目標寫下來,放在一個每天都可以看見的地方,這樣就可以讓你隨時回想起當前需要做的工作。
2.不重視「軟技能」或非技術的東西
我認識許多擅長寫代碼的程序員,他們可以用所寫的演算法把我耍得團團轉,他們對復雜架構的理解力和思考能力令我自愧不如。
但是真實的狀況卻是:技術不如他們的我,軟體開發領域的職業發展卻全面超過了他們,除了職位,還包括薪水、生產力等諸多方面。
在這里我並不是為了吹噓自己多了不起,而是為了向那些只埋頭專研技術的程序員們說明「軟技能」對於職業發展有多重要。
作為一個軟體開發者,我相信你也清楚,編寫代碼並不是工作的全部。在通往成功的道路上,還需要學習很多其它技能。我們需要長期與他人打交道,所以必須學習為人處事;軟體開發面臨長期的趕工與不同的需求變化,所以需要學習對心態和注意力的調整;在不斷變化的環境里有許多事情需要處理,所以應當學習對事情劃分優先順序以做到效率的最大化。另外,我們對待身體健康應當和對待自己收入一樣敏感,這個才是革命的本錢。
我還可以繼續列舉出更多的東西,關於了解開發者應當掌握的「軟技能」你可以去閱讀我寫的《SoftSkills:TheSoftwareDeveloper』sManua》一書。
總的來說,在生活中無論從事什麼樣的工作,那些軟技能通常都比硬性的技術能力更為重要,所以請保持不斷地學習這些技能。
3.不融入社區生活
在程序員生涯中有一樣東西令我受益頗深,它就是社區的幫助。成為這個大群體的一部分,不僅讓我擁有了歸屬感不再孤獨,也幫助我改進了自身的技能,向著更高的平台發展。
如果你還沒有參與社區生活的話,我強烈建議你融入這個圈子裡來。它是一個比自我寬廣得多的平台,有助於你的發展。
如果你感覺自己的軟體開發工作停滯不前,費勁腦力也無法獲得更大突破的時候,最好的方式就是加入社區,與一群有志同道合的人共同探討所遇到的困難,獲得有助於解決問題的建議。另外,融入社區生活還能夠聚集人氣,培養人脈,這對於提升自身的職業發展也有很大幫助。
但是,如何才能融入到社區生活中呢?
這很簡單,世界各地都有很多開發者團體,你可以通過程序員網站找到並加入到他們當中去。你還可以參加開源夏令營,這是一個一年一度的免費地方性活動,眾多開發人員會聚在一起分享他們的工作,任何人都可登記參加自己感興趣的話題。
如果你不希望在現實生活中與過多的人接觸,也可以選擇加入虛擬社區。
那些大眾的程序員社區會是你的第一選擇。在社區中你會發現有一些非常厲害的程序員,他們會在自己的博客上寫一些精闢的文章並解答大家的問題。除此之外,還有另外一些不錯的在線社區,比如大牛們的博客網站、各種技術論壇、討論群等。
當你開始學會分享,把自己的所知與所想都寫出來的時候,你就真正的融入進了社區生活——而這個博客就是我為自己加入這個程序員社區所做的第一件事。:-)
4.沒有專長
如果你過去常訪問我的博客或者YouTube視頻,你會發現我很多時候都在談論這個話題。這個話題是如此重要,以至於我一有機會就會說到它。
俗話說,術業有專攻。你應當選擇一項想要專精的技術並努力磨煉它。但這並不意味著你就可以放棄對其它技術的基本理解而一味地去專研某項技術——我對那些會數種語言的人是非常欣賞的。這一點非常重要,尤其是在你職業生涯的早期培養一技之長的時候。
專長可以滿足更高級的需求,因此,在同等條件下,它會帶來更豐厚的報酬並更快的積累聲望——這些對於業界對你的認可是很有幫助的。
有專長的人好比是小池塘中的大魚,受人矚目。或許最終這條大魚會跳入更寬廣的池子,但是所累積的聲望和名氣同樣有助於在軟體開發行業的其它領域的發展。
凡事只要七分就好,對於專長技術的研究學習同樣如此。過度的投入會對程序員的時間與精力造成浪費,這是得不償失的。
5.無視個人品牌價值
生活中充滿著各種變數:搬家、結婚、換工作、一夜暴富、突然發福等等。無論如何,有一樣東西始終會伴隨著你一生,而這個東西就是——名字。
你的名字會貫穿於你的全部生活,難道它還不值得你去重視么?
你的名字或者也可以稱作是你的個人品牌是一件非常有投資價值的東西,可許多軟體開發人員對此卻一無所知。
對於獲得工作、取得晉升、客戶端的登陸以及工作的開展等,名字無疑都展現了其強大的作用。毫不誇張的說,假如你臭名昭著的話,會萬事難行,而如果你有良好的名譽的話,大多事情只需通過簡單的握手就能搞定。
我認識很多的軟體開發人員,他們從不擔心自己會失業,這是因為他們投資了時間和精力來打造堅實的個人品牌。他們知道,無論發生什麼事情,在他們失業後的幾個小時內就可以獲得一份新的工作,這是因為他們在業界有良好的聲譽。
對產品和服務進行的投資看起來很正常,但是你是否考慮過自我營銷的價值?要在軟體開發行業建立起自己的個人品牌,我的建議是從創建自己的博客開始,選擇將自己的專長或者有很深了解的領域作為提高自己影響力的跳板,學會把自己的名字一步步做成行業的金字招牌。如何快速的提高自己的影響力呢?最好的方法之一就是創建對別人有幫助的文章。
就拿這個博客為例吧。這個博客建立了我在互聯網上的個人品牌和聲譽,如果你認為我的文章或者網站是有價值的,你會選擇進行分享。甚至你有可能把它列入收藏或者進行訂閱,以方便以後繼續訪問。而這只是其中一種打造個人品牌的方式。同樣的,你還可以選擇視頻網站、播客等媒體,或者在書刊上發表文章,在會議上演講等方式。如果你對如何在軟體開發領域深度挖掘自身的品牌價值很感興趣,這個網站會告訴你如何去做。
6.荒廢業務時間
在工作之餘,你應當做一些項目來練練手。
做業余工作有許多你不知道的好處。首先,它可以有效的改進你的專業技能,特別是那些在平時的工作中很少用到的技術。相比起平時朝九晚五的工作,業余工作類型多變,對於專業技能的提高更有好處。其次,它有助於你對新的開發技術和技巧的學習。這對於日後你想從事新的工作是很有幫助的。我碰到過許多程序員,他們向我抱怨在當前工作中沒有機會去學習新技術,這讓他們今後無法在工作市場上立足。而我向他們建議工作之餘去做一些小項目,使用他們今後想要立足的新技術——這種方式對於提高相關技術是很有幫助的。
除此之外,我們不要忽視做業余工作所帶來的經濟利益。人們常認為業余時間做的那些小項目是掙不到什麼錢的,而事實上它卻是額外收入的重要來源。4年以前,我在業余時間里開發了一個在Android和iOS平台上使用的應用程序,而到現在,這個應用程序還能為我創造價值。
我還認識一些程序員,他們從業余工作做起,最後把這些工作發展為了全職工作。而事實上我就是這些程序員中的一位。這個博客本身以及SimpleProgrammer周圍的其它部分現在成為了我的全職工作。我喜歡稱自己為程序員的生活導師,但是也有很多人認為我是一個專職的博客寫手。
業余工作可以讓你充滿樂趣,它能夠把你從那些你不喜歡但又必須去做的工作中解脫出來。作為一種釋放工作壓力的好方法,它會每天帶給你新的希望。
7.沒有自我學習的計劃
在我面試軟體人員的時候,我首先會問到的一個問題就是關於他們的自我學習和持續完善的計劃——如何進行自我完善。程序員如何在這個快速變化的領域保持技術與觀念上的更新?我希望獲得的回答是他們能告訴我對於自我學習與成長他們有著一個實際可行的計劃。因為一個致力於不斷學習進步的人不僅能夠讓自己邁向成功還能影響到周圍的人,使他們一同邁向成功。
然而,有如此之多的程序員對於自我學習沒有任何計劃。假如你是這些人中的一員,你就應該立即行動起來做一個自我學習的計劃。
這兒有一個可供參考的個人簡單計劃:
堅持每月讀一本關於技術學習或者職業發展的書籍。
這意味著一年時間里你需要閱讀12本書。對於我來說,我會在每天用至少45分鍾時間來閱讀。當我在跑步機上運動的時候我會同時閱讀一些與我個人職業發展相關的文章。
積沙成塔,集腋成裘。每天只需花費30分鍾時間來閱讀書籍,一兩年時間之後你的人生境遇就會發生很大的改變。
❸ 程序員如何突破技術瓶頸期
對於程序員來說,在工作中除了實現自己的個人價值以外,同時也需要不斷吸收新的知識來充實和提高自己的能力。今天,我們就一起來了解一下,程序員在技術瓶頸期應該如何突破。
作為一個技術人,不知道你有沒有遇到過下面的情況?
「我學不到新東西」
「我感覺沒啥成長」
「每天都在重復勞動」
其實,每個技術從業者,多多少少都會遇到工作或學習瓶頸期。產生瓶頸鄭猜期,往往不是因為我們不夠努力,而是以下原因導致的:
1、無法積累有效的項目經驗,一直在做著重復的事情,成長出現斷層。
2、企業的培訓較為傳統,多為被動接收,「營養成分」較低,對業務開發無明顯提升。
3、技術書籍和網上的免費資料實效性較低,且大多理論性會大於實用性,導致無法應用到工作場景。
那麼,該如何解決呢?
1、藉助「巨人的肩膀」,快速成長。
學習資料非常關鍵,真正經典的素材只佔1%。如果希望得到快速成長,或是成為技術領域高手,那麼就需要藉助「巨人的肩膀」。比如,如果可以接觸到BAT、或者國外大公司的資深技術人,你的學習效果就會事半功倍。
2、利用碎片化時間,提升專業能力。
一旦進入職場,我們很難有成塊的時間去系統的學習一門知識,良好的狀態是利用自身碎片時間,學習與業務緊密相關的實戰知識。網上下載的資料,或者一些技術書,可能無法在碎片化時間消化。
3、每個角色都要懂其他角色的東西,才能成為優秀的角色。
雖然研發團隊角色不同,如產品、研發、測試。但是這些角色都是相互交叉影響的。如果對其他領域沒有一定的認知,就會聽不懂他們的訴求本質和技術方案,耗費溝通罩悔成本。而能在多方配合的溝通場景中,北京北大青鳥發現通過學習到的多樣技術能力,直面解決技術問題,就可以在技術成長之路上得到提喊悶型升,成為一名優秀的技術leader。
有沒有「拿來就用」的解決方法呢?
以上推薦的3點解決方法,可以總結如下:
1、學習使用有價值的經典學習材料;
2、持續學習,碎片化汲取「營養」;
3、保持在多領域對技術知識的拓展。
❹ 程序員競爭力太大了,怎麼樣才能提升自己呢
1、程序員要學會主動學習,要不斷地更新自己的技能,提高自己的「基線」。
2、程序員程序員要學會自我營銷,在業界打造自己的個人品牌,要有品牌意識。
3、程序員要善於對付中斷。如果你在跟別人結對編程,或者你用了TDD,那麼保存上下文信息就變得非常簡單。
4、程序員要重視單元測試。要知道單元測試的重要性,把測試代碼和產品代碼看的一樣重要。
❺ 你認為一名優秀的程序員應該具有哪些品質
作為一名奮斗在一線的程序員,我覺得我最有發言權,以實際項目開發為前提,闡述優秀程序員具備的特點。其一:全局掌控觀念,可理解為懂需求,用何種技術開發項目,可達到高效、快捷、bug少、兼容性強統稱為代碼的健壯性。其二:熟悉各種代碼規范,並且有自己實戰代碼規范。其三:人品優良,態度誠懇。其四:代碼簡潔、漂亮、通俗易懂、有良好的職業操守!
❻ 如何做一名優秀的程序員
首先就是你的目標就不明確,你先要確定自己打算向哪方面發展
當好一名合格的程序員不僅要有扎實的基礎知識,還要多思考,多實踐,勤看書,更要有團隊合作精神,平時多和別人交流,俗話說:「三人行必有我師」,多上網看看一些資料,看看別人對同一問題的看發會有很大的啟發,要知道不是你一個人在寫程序而是和大家一起寫程序,注重團隊的力量!編程是一種藝術,要好好的發揮團隊的力量把它做的漂亮,完美。
勤奮聯系,多寫一些程序,然後在根據程序代碼多想想用多種方法去測試運行它`實習基地給我們提供了實際做一些項目的機會`我會借這個機會多學習`多思考,多實踐。多看一些相關的書,不斷提高自己。
我覺得做一名程序員是很難的,特別是做一名合格的程序員就更要嚴格要求自己,增加團隊合作能力,不斷提高自身水平。
1.1 程序≠軟體
現在很多人以為程序就是軟體,軟體就是程序。事實上,軟體和程序在20世紀80年代時,還可以說是等同的,或者說,在非pc領域里它們可能還會是等同的,比如說某個嵌入式軟體領域,軟體和程序可能是等同的。但是,在pc這個領域內,現在的程序已不等於軟體了。這是什麼意思呢?
1. 軟體發展簡述
在20世紀80年代的時候,pc剛誕生,這時國內還沒有幾個人會寫程序。那麼,如果你寫個程序,別人就可以拿來用。這時候的程序就能產生價值,這個程序就直接等同於軟體。
但軟體行業發展到現在,這里以中國的情況為例(美國在20世紀80年代,程序已經不等同於軟體了),程序也不等同於軟體了。因為現在會寫程序很容易,但是你的這個程序很難產生什麼樣的商業意義,也不能產生什麼價值,這就很難直接變成軟體。要使一個程序直接變成軟體,中間就面臨著很高的門檻問題。這個門檻問題來自於整個行業的形成。
現在,你寫了一個程序以後,要面臨商業化的過程。你要宣傳,你要讓用戶知道,你要建立經銷渠道,可能你還要花很多的時間去說服別人用你的東西。這是程序到軟體的一個過程。這門檻已比較高了。
我們在和國內的大經銷商的銷售渠道的人聊天時,他們的老闆說,這幾年做軟體的門檻挺高的,如果你沒有五、六百萬做軟體,那是「玩」不起來的。我說:「你們就使門檻很高了。」他說:「那肯定是的。如果你寫個「爛」程序,明天你倒閉了,你的東西還佔了我的庫房,我還不知道找誰退去呢。我的庫房是要錢的呀!現在的軟體又是那麼多!」
所以,如果你沒有一定的資產的話,經銷商都不理你。實際情況也是這樣的,如果你的公司比較小,且沒什麼名氣,你的產品放到經銷商庫房,那麼他最多給你暫收,產品銷不動的話,一般兩周絕對會退貨。因為現在經銷商可選擇的餘地已很多了,所謂的軟體也已經很多了。而程序則更多,程序都想變成軟體,誰都說自己的是「金子」。但只有經受住用戶的檢驗,才能成為真正的「金子」。
這就是美國為什麼在20世紀90年代幾乎沒有什麼新的軟體公司產生的原因。只是原來80年代的大的軟體公司互相兼並,我吞你,你吃我。但是,寫程序的人很多,美國的程序變軟體的門檻可能比我們還高,所以很多人寫了程序就丟在網上,就形成了共享軟體。
2. 共享軟體
共享軟體是避開商業渠道的一種方法。它避開了商業的門檻,因為這個行業的門檻發展很高以後就輕易進不去了。我寫個程序丟在網上,你下載就可以用,這時候程序又等於軟體。共享軟體是這樣產生的,是因為沒有辦法中的辦法。如果說程序直接等於軟體的話,誰也不會輕易把程序丟到網上去。
開始做共享軟體的人並不認為做它能賺錢,只是後來用的人多了,有人付錢給他了。共享軟體使得程序和軟體的距離縮短了,但是它與商業軟體的距離會進一步拉大。商業軟體的功能和所要達到的目標就不是一個人能「玩」得起來的了。這時的軟體也已不是幾個人、一個小組就能做出來的了。這就是在美國新的軟體公司沒法產生的原因。比如netscape網景是在1995~1996年產生的新軟體公司,但是,兩三年後它就不見了。
1.1.1 商業軟體門檻的形成
1. 商業軟體門檻的形成
商業軟體門檻的形成是整個行業發展的必然結果。任何一個行業初始階段時的門檻都非常低,但是,只要發展到一定的階段後,它的門檻就必然抬高。比如,現在國內生產小汽車很困難,但在20世紀50年代~60年代的時候,你裝4個輪子,再加上柴油機等就形成汽車。那時的萊特兄弟裝個螺旋槳,加兩個機翼,就能做飛機。整個行業還沒有形成的時候,絕對可以這樣做,但是,到整個行業形成時,你就做不了了。所有的行業都是這樣的。
為什麼網站一出來時那麼多人去擠著做?這也是因為一開始的時候,看起來門檻非常低,人人都可以做。只要有一個伺服器,架根網線,就能做網站。這個行業處於初始階段時,情況就是這樣的。但這個行業形成後,你就輕易地「玩」不了了。
國內的軟體發展也是如此。國內的軟體自從軟體經銷商形成以後,這個行業才真正地形成。有沒有一個渠道是判斷一個行業是否形成的很重要的環節。任何一個行業都會有一個經銷渠道,如果渠道形成了,那麼這個行業也就形成了。第一名的經銷商是1994年~1995年成立的,也就是說,中國軟體行業大概也就是在1995年形成的,至今才經歷8年時間的發展。
有一種浮躁的思想認為,中國軟體產業應該很快就能趕上美國。美國軟體行業是上世紀80年代形成的,到現在已經發展了20多年了。中國軟體行業才8年,8年才是一個懵懂的小孩,20多歲是一個強壯的青年,那麼他們的力量是不對等的。但也要看到,當8歲變成15歲的時候,它真正的能量才會反映出來。
2. 軟體門檻對程序員的影響
現在中國軟體行業正在形成。所以,現在做一個程序員一定要有耐心,因為現在已經不等於以前了。你一定要把所有的問題搞清楚,然後再去做程序。
對於程序員來說,最好的工作環境是在現有的或者初始要成立的公司裡面,這是最容易成功的。個人單槍匹馬闖天下已經很困難了。即使現在偶爾做兩個共享軟體放在網上能成名,但是也已經比較困難了。因為現在做軟體的人已經很多了。這也說明軟體已經不等於程序了,程序也不等於軟體。
程序要變成軟體,這中間是一個商業化的過程。沒有門檻以前,它沒有這個商業過程,現在有這個行業了,它中間就有商業化的過程。這個商業的過程就不是一個人能「玩」的。
如果你開始做某一類軟體的時候,別人已經做成了,這時你再決定花力氣去做,那麼你就要花雙倍的力氣去趕上別人。
現在的商業軟體往往是由很多模塊組成的,模塊是整個系統的一部分。個人要完整地寫一個商業系統幾乎是不可能的。軟體進入windows平台後,它已經很復雜了,不像在dos的時候,你寫兩行程序就能賣,做個zip也能賣。事實上,美國的商業編譯器也不是一個人能「玩」的。現在你可能覺得它是很簡單的,甚至linux還帶了一個gcc,且源程序還在。你可以把它改一改,做個vc試一試,看它會有人用嗎?它能變成軟體嗎?即使你再做個界面,它也還是一個gcc,絕對不會成為visual c++那樣能商業化的軟體。
可見,國外軟體行業的門檻要比中國的高很多了。我覺得我們中國即使再去做這樣的東西,也沒有多大的意義了。這個門檻你是追不過來的。不僅要花雙倍的力氣,而且在這么短的時間內,你還要完成別人已經完成過的工作,包括別人所做的測試工作。只有這樣,才能做到你的軟體與別人有競爭力,能與它做比較。
1.1.2 認清自己的發展
如果連以上認識都不清楚,很可能就以為去書店買一本mfc高手速成之類的書,編兩個程序就能成為軟體高手。就好像這些書是「黃金」,我學兩下,學會了vc、mfc,就能做一個軟體拿出去賣了。這種想法也不是不行,最後一定能行,但要有耐心,還要有機遇。機遇是從耐心中產生的,越有耐心,就越有機遇。你得非常努力,要花很多的精力,可能還要走很多的彎路。
如果你是從mfc入手的,或是從vb入手的,則如要做出一個真正的能應用個人領域的通用軟體,就會走非常多的彎路。直接的捷徑絕對不是走這兩條路。這兩條路看起來很快,而且在很多公司裡面確實需要這樣的東西,比如說我這家公司就是為另一個家公司做系統集成的,那我就需要這樣的東西,我不管你具體怎麼實現,我只需要達到這個目標就行了。
任何軟體的實現都會有n種方法,即使你是用最差的那種方法實現的,也沒有問題,最後它還是能運行。即使有問題,再改一改就是。但是,做通用軟體就不行了,通用是一對多,你做出來的軟體以後要面向全國,如果將來自由貿易通到香港也好,通到國外也好,整個產品能銷到全世界的話,這時候,通用軟體所有做的工作就不是這么簡單了。所以說,正確的入門方法就很關鍵。
如果你僅僅只是想混口飯吃,找個工作,可能教你成為mfc的高手之類的書對你就足夠了。但是,如果你想做一個很好的軟體,不僅能滿足你謀一碗飯吃,還能使你揚名,最後你的軟體還能成為很多人用,甚至你還想把它作為一個事業去經營,那麼這第一步就非常關鍵。這時就絕對不能找一本mfc或找一本vb的書學兩下就行,而是要從最底層開始做起,從最基本做起。
1.2 高手是怎樣練成的
1.2.1 高手成長的六個階段
程序員怎樣才能達到編程的最高境界?最高境界絕對不是你去編兩行代碼,或者是幾分鍾能寫幾行代碼,或者是用什麼所謂的可視化工具產生最少的代碼這些工作,這都不是真正的高手境界。即使是這樣的高手,那也都是無知者的自封。
我認為,一個程序員的成長可分為如下六個階段。
第一階段
此階段主要是能熟練地使用某種語言。這就相當於練武中的套路和架式這些表面的東西。
第二階段
此階段能精通基於某種平台的介面(例如我們現在常用的win 32的api函數)以及所對應語言的自身的庫函數。到達這個階段後,也就相當於可以進行真實散打對練了,可以真正地在實踐中做些應用。
第三階段
此階段能深入地了解某個平台系統的底層,已經具有了初級的內功的能力,也就是「手中有劍,心中無劍」。
第四階級
此階段能直接在平台上進行比較深層次的開發。基本上,能達到這個層次就可以說是進入了高層次。這時進入了高級內功的修煉。比如能進行vxd或操作系統的內核的修改。
這時已經不再有語言的束縛,語言只是一種工具,即使要用自己不會的語言進行開發,也只是簡單地熟悉一下,就手到擒來,完全不像是第一階段的時候學習語言的那種情況。一般來說,從第三階段過渡到第四階段是比較困難的。為什麼會難呢?這就是因為很多人的思想變不過來。
第五階級
此階段就已經不再局限於簡單的技術上的問題了,而是能從全局上把握和設計一個比較大的系統體系結構,從內核到外層界面。可以說是「手中無劍,心中有劍」。到了這個階段以後,能對市面上的任何軟體進行剖析,並能按自己的要求進行設計,就算是ms word這樣的大型軟體,只要有充足的時間,也一定會設計出來。
第六階級
此階段也是最高的境界,達到「無招勝有招」。這時候,任何問題就純粹變成了一個思路的問題,不是用什麼代碼就能表示的。也就是「手中無劍,心中也無劍」。
此時,對於練功的人來說,他已不用再去學什麼少林拳,只是在旁看一下少林拳的對戰,就能把此拳拿來就用。這就是真正的大師級的人物。這時,win 32或linux在你眼裡是沒有什麼差別的。
每一個階段再向上發展時都要按一定的方法。第一、第二個階段通過自學就可以完成,只要多用心去研究,耐心地去學習。
要想從第二個階段過渡到第三個階段,就要有一個好的學習環境。例如有一個高手帶領或公司里有一個好的練手環境。經過二、三年的積累就能達到第三個階段。但是,有些人到達第三個階段後,常常就很難有境界上的突破了。他們這時會產生一種觀念,認為軟體無非如此,認為自己已無所不能。其實,這時如果遇到大的或難些的軟體,他們往往還是無從下手。
現在我們國家大部分程序員都是在第二、三級之間。他們大多都是通過自學成才的,不過這樣的程序員一般在軟體公司也能獨當一面,完成一些軟體的模塊。
但是,也還有一大堆處在第一階段的程序員,他們一般就能玩玩vb,做程序時,去找一堆控制項集成一個軟體。
現在一種流行的說法是,中國軟體人才現在是一個橄欖型的人才結構,有大量的中等水平的程序員,而初級和高級程序員比較少。而我認為,現在中國絕大多數都是初級的程序員,中級程序員很少,高級的就更少了。所以,現在的人才結構是「方塔」形,這是一種斷層的不良結構。而真正成熟的軟體人才結構應該是平滑的三角形結構。這樣,初級、中級、高級程序員才能充分地各施所長。三種人才結構對比如圖1.1所示。
圖1.1 三種人才結構對比
1.2.2 初級程序員和高級程序員的區別
一般對於一個問題,初級程序員和高級程序員考慮這個問題的方法絕對是不同的。比如,在初級程序員階段時,他會覺得vb也能做出應用來,且看起來也不錯。
但到了中級程序員時,他可能就不會選擇vb了,可能會用mfc,這時,也能做出效果不錯的程序。
到高級程序員時,他絕對不是首先選擇以上工具,vb也好,vc也好,這些都不是他考慮的問題。這時考慮的絕對是什麼才是具有最快效率、最穩定性能的解決問題的方法。
軟體和別的產品不同。比如,在軟體中要達到某個目標,有n種方法,但是在n種方法中,只有一種方法或兩種方法是最好的,其他的都很次。所以,要做一個好的系統,是很需要耐心的。如果沒有耐心,就不會有細活,有細活的東西才是好東西。我覺得做軟體是這樣,做任何事情也是這樣的,一定要投入。
程序員到達最高境界的時候,想的就是「我就是程序,程序就是我」。這時候我要做一個軟體,不會有自己主觀的思路,而是以機器的思路來考慮問題,也就是說,就是以程序的思考方式來思考程序,而不是以我去設計程序的方式去思考程序。這一點如果不到比較高的層次是不能明白的。
你設計程序不就是你思考問題,然後按自己的思路去做程序嗎?
其實不是的。在我設計這個程序的時候,相當於我「鑽」入這個程序裡面去了。這時候沒有我自己的任何思維,我的所有思維都是這個程序,它這步該怎麼走,下步該怎麼走,它可能會出現什麼情況。我動這個部分的時候,別的部分是否要干擾,也許會動一發而牽全身,它們之間是怎麼相互影響的?
也只有到達這個境界,你的程序才能真正地寫好,絕對不是做個什麼可視化。可視化本身就是「我去設計這個程序」,而真正的程序高手是「我就是程序」,這兩種方法絕對是不同的。比如,我要用vb去設計一個程序,和我本身就是一個程序的思維方式,是不一樣的。別人也許覺得操作系統很深奧,很復雜,其實,如果你到達高手狀態,你就是操作系統,你就能做任何程序。
對待軟體要有一個全面的分析方法,光說理論是沒有用的。如果你沒有經過第一、第二、第三、第四這四個階段,則永遠到達不了高境界。因為空中樓閣的理論沒有用,而這些必須是一步一步地去做出來。
一個高級程序員應該具備開放性思維,從里到外的所有的知識都能了解。然後,看到世界最新技術就能馬上掌握,馬上了解。實際上,技術到達最高的境界後,是沒有分別的。任何東西都是相通的,只要你到達這個境界以後,什麼問題一看就能明白,一看就能抓住最核心的問題,最根本的根本,而不會被其他的枝葉或表象所迷惑,做到這一步後才算比較成功。
從程序員本身來說,如果它到達這一步以後,他就已經形成了開闊的思維。他有這種開放性思維的話,他就能做戰略決策,這對他將來做任何事情都有好處。事實上,會做程序後,就會有一種分析問題的方法,學會怎麼樣把問題的表象剖開,看到它的本質。這時你碰到任何具體的問題,只要給點時間,都能輕而易舉地解決。實際上,對開發計算機軟體來說,沒有什麼做不了的軟體,所有的軟體都能做,只是看你有沒有時間,有沒有耐心,有沒有資金做支撐。
這幾年,尤其是這兩三年,估計到2005年前,中國軟體這個行業裡面大的軟體公司就能形成。現在就已經在形成,例如用友,它上市後,地位就更加穩固了。其他大的軟體企業會在這幾年內迅速長大。這時候,包括流通渠道、經銷商的渠道也會迅速長大。也就是說,到2005年以後,中國軟體這個行業的門檻比現在還要高很多,與美國不會有太大的差別。此時,中國軟體才真正體現出它的威力來。如果你是這些威力中的一員,就已經很厲害了。
別人可能知道比爾•蓋茨是個談判的高手,是賣東西的高手,其實,比爾•蓋茨從根本上來說是個程序高手,這是他根本中的根本。他對所有的技術都非常敏感,一眼就看到本質,而且他本身也能做程序,時常在看程序。現在他不做董事長,而做首席設計師,這時他就更加接近程序的本質。因為他本身就有很開闊的思維,又深入到技術的本身,所以他就知道技術的方向。這對於一個公司,對他這樣的人來說,是非常重要的。
如果他判斷錯誤一步,那公司以後再回頭就很難了。計算機的競爭是非常激烈的,不能走錯半步。很多公司以前看上去很火,後來就
銷聲匿跡了,就是因為它走錯一步,然後就不行了。為什麼它會走錯?因為他不了解技術的本質在哪裡,技術的發展方向在哪裡。
比爾•蓋茨因為父母是學法律的,所以他本身就很能「侃」,很有說服力,而他又是做技術的,就非常清楚技術的方向在哪裡,所以他才能把方向把握得很准確,公司越來越大。而別的公司只火一陣子,他卻火了還會再火。就算微軟再龐大,你如果不把握好軟體技術的最前沿,一樣也會玩完。就像intel時刻把握著cpu的最新技術,才能保證自己是行業老大。技術決定它的將來。
所以,程序員要能達到這樣的目標,就要有非常強的耐心和非常好的機遇才有可能。事實上,現在的機會挺好的,2005年以前機會都非常大,以後機會會比較小。但是,如果有耐心的話,你還是會有機會的,機會都是出在耐心裡。我記得有句話說「雄心的一半是耐心」,我認為雄心的三分之二都是耐心。如果你越有野心,你就越要有耐心,你的野心才有可能實現。如果你有野心而沒有耐心,那都是胡思亂想,別人一眼就能看穿。最後在競爭中,對手一眼就看到你的意圖,那你還有什麼可競爭的?
1.2.3 程序員是吃青春飯的嗎
很多人都認為程序員是三十歲以前的職業,到了三十歲以後,就不應再做程序員了。現在的很多程序員也有這種想法,我覺得這種想法很不對。
在20世紀80年代末到90年代初,那時軟體還沒有形成行業,程序員不能以此作為謀生的手段時,你必須轉行,因為你年輕的時候不用考慮吃飯的問題,天天「玩」都可以,但是以後就不可能了。
據我了解,微軟裡面的那些高手,幾乎都是四五十歲的,而且都是做底層的。他們是上世紀70年代就開始「玩」程序的,所以對於整個計算機,他們是太清楚了。現在有些人主觀臆斷地希望微軟第二天倒閉就好了,但那可能性太小了。因為那些程序員是從cpu是4004的時候開始,玩到現在奔騰iv,沒有哪一代東西他們沒有經歷過。
你知道他們現在正在玩什麼嗎?現在正在玩64位的cpu。你說你普通的程序員,有這個耐心嗎?沒有這個耐心,你絕對做不了,你也絕對做不了高手。他為什麼能做?因為他不僅是玩過來的,而且他還非常有耐心,每一步技術他都跟得上,所以對他來說,沒有任何的難度和壓力。
因為計算機技術沒有任何時候是突變的。它的今年和去年相差不會很大,但是回過頭來看三年以前的情況,和現在的距離就很大。所以說,如果你每年都跟著技術進步的話,你的壓力就很小,因為你時刻都能掌握最新的技術。但是,如果你落下來,別說十年,就是三年,你就趕不上了。
如果你一旦趕不上,就會覺得非常吃力;如果你趕不上,你就會迷失方向;如果你迷失了方向,你就覺得計算機沒有味道,越做越沒勁。當你還只是有個思路的時候,別人的產品都做出來了,因為你的水平跟別人相差太遠,人家早就想到的問題,你現在才開始認識。水平越高,他就看得越遠,那麼他的思維就越開闊;水平越低,想的問題就越窄。
64位cpu是這個十年和下個十年最重要的技術之一,誰抓住這個機會,誰就能抓住未來賺錢的商機。cpu是英特爾設計的,對這一點他肯定清楚。舉例來說,如果從64位的角度來看現在的32位,就像從現在的角度去看dos。你說dos很復雜嗎?當你在dos年代的時候,你會覺得dos很復雜。你說現在的windows不夠復雜嗎?windows太復雜了,但是你到了64位的時候再去看windows,就如同現在看dos一樣。
整個64位系統的平台和思維方式、思路都比現在更開闊,打個比方說,現在的windows裡面能開n個dos窗口,每個dos窗都能運行一個程序。到達64位的時候,操作系統事實上能做到開n個x86,開n個windows 98,然後再開n個windows 95都沒有問題,系統能做到這一步,甚至你的系統內開n個windows nt都沒有關系。這就是64位和32位的差別。所以,微軟的那些「老頭」,四、五十歲的那幾個做核心的人,現在正在玩這些東西。你說微軟的技術它能不先進嗎?是linux那幾個玩家能搞定的嗎?
微軟的技術非常雄厚,世界計算機的最新技術絕對集中在這幾個人手裡。而且這幾個人的思維模式非常開闊,誰都沒有意識到的東西他早就開始做了。現在64位的cpu都出來一二年了,你說有什麼人去做這些應用嗎?沒有,有的就是那幾個unix廠商做好後給自己用的。
所以,追求技術的最高境界的時候,實際上是沒有年齡限制的。對我來說,現在都三十三了,我從來沒有想過退出這行,我覺得我就能玩下去,一直玩到退休都沒有問題。我要時刻保持技術的最前端,這樣的話對我來說是不困難的,沒有任何累的感覺。
很多人說做程序不是人乾的事情,是非人的待遇。這樣,他們一旦成立一個公司,做出一點成績,在輝煌的時候馬上就考慮退出。因為他們太苦了,每天晚上熬夜,每天晚上燒了兩包煙還不夠,屋子裡面簡直就缺氧了,好像還沒有解決問題。
白天睡覺,晚上幹活,那當然累死了,這是自己折騰自己。所以,做程序員一定要有一種正常的心態,就是說,你做程序的時候,不要把自己的生活搞得顛三倒四的。如果非得搞得晚上燒好多煙才行,這樣你肯定折騰不到三十歲,三十歲以後身體就差了。
事實上,我基本上就沒有因為做程序而熬夜的。我只經歷過三次熬夜,一次是在學校的時候,1986年剛接觸計算機時,一天晚上跟一個同桌在計算機室內玩游戲,研究了半天,搞著搞著就到了天亮,這是第一次。然後在畢業之前,在286上做一個程序。還有一次就是超級解霸上市前,那時公司已吹得很大了,那天晚上沒法睡覺。
一般來說,我也是十二點鍾睡覺,第二天七點就起了。所以說,只有具有正常的生活、正常的節奏,才有正常的心態來做程序員,這樣,你的思路才是正常的,只有正常的東西才能長久。搞疲勞戰或者是黑白顛倒,時間長久後就玩不轉了,玩著玩著就不想玩了。
❼ 程序員應該學會怎樣保護自己
程序員應該學會怎樣保護自己?
1. 技術不是全部
這個觀念,我曾不止一次普及過,眼裡只有技術的程序員,跟讀書時分的書獃子沒什麼差異。程序員們許多都認為只需技可以牛,我就可以憑仗技術掙更多的錢,然後就可以過的更好,所以容易往往忽略了其他方面的展開,溝通交流、為人處事都是很重要的,程序員的弱勢在於終年跟機器打交道,認為什麼都很機器相同講道理,輕視了人道的雜亂與醜陋,沒有一點防備心思,這些都是很風險的,總歸一句話,程序員們大多智商較高,但是情商較缺少,但是人這一生,情商絕比照智商要更有用的多。
2. 培養第二技術
都說程序員是芳華飯,被認為中年危機最嚴峻的一個集體,在許多人看來不理解,說人到中年,有車有房,收入也較高,怎樣會有那麼大的危機呢?但是殊不知,人到中年,收入雖然高了,但是房貸、車貸壓力不小,一起還背負著家庭的職責,處處都是花錢的當地,而且經濟大環境欠好,很擔憂公司展開遇到困難,自己受到各種影響,換崗的話雖然不愁找工作,但是這個年歲薪資崗位低了不想姑息,高的話除非處理崗位,不然企業不如找個年輕點的、薪酬低點的來代替了,種種原因導致中年危機感很重。
我之前就說過,一定要培養第二技術,永久不要把全部賭注都押寶在工作上,年輕的時候趁早培養第二技術,寫作、講演、英語、咨詢等等都歸於第二技術,根據你的個人興趣愛好去選擇,第二技術會是你的後路,當你到了中年,或許第二技術早就展開的如火如荼,甚至跨越你的本職工作,擁有第二技術的人從不會擔憂危機的到來,規勸全部程序員們,一定要重視第二技術的培養。
3. 永久不要在非正常狀況下做任何決議
這次事情許多人都想不通,當事人高學歷,經驗豐富,被裁了大不了換份工作就是了,何須想不開呢?簡直太懦弱了。其實我們不知道當時是在一個什麼環境下,我們處在事外當然看得清,但是許多決議其實都是一念之差,就是那麼一瞬間沒想通,導致激動做出差錯的選擇,我們能總結出的經驗教訓就是:永久不要在非正常狀況下做任何決議。
什麼叫非正常狀況?醉酒、憤怒、極度哀痛甚至振奮、反常快樂等狀況都歸於非正常狀況,這種狀況做出的決議一般都是不客觀甚至差錯的,別的,做決議的時分多想想身邊的家人,考慮的要素全面點,會更能避免一些想不開發生。
4. 職場中不要講感情
成熟的職場人士是不會講感情的,不要把公司作為家相同,更不能把公司夥伴作為家人看待,那些只給你打感情牌,沒有任何實質性的表明的公司或許老闆,你得留神了。
當然,可以對公司以及夥伴有感情,但是不可以感情用事,在公司的任何決議,假如你都可以拋開感情,其實都很好處理,但是許多同學想不開,在遇到類似事情的時分,往往會有非常不冷靜的處理方式。
❽ 程序員久了,會很敏感,因為小事煩躁,怎麼回事
程序員的煩躁來源於壓力。程序員缺少宣洩情緒的出口,每天基本都是在處理問題,面對工作、生活各方面的壓力,沒有很好的疏解途徑,造成了心理負擔