❶ 怎樣做一名高效率程序員
1、理解編程語言的原理
三流的人才懂應用,二流的人才懂開發,一流的人才懂原理。各種語言之間存在著相似的地方,掌握語言的原理是必不可少的。最重要的,讓語言去適應項目,反之亦然。
2、向優秀程序員學習
你有一個蘋果,我也有一個蘋果,我們交換蘋果,你我還是有一個蘋果;你有一種思想,我也有一種思想,我們交換思想,你我就有了兩種思想。
與優秀的程序員為伍,你將吸收的最實用的經驗,這遠比你一個人自學、死磕編程來的快一些。有一句話說到好,與臭棋佬下棋,棋會越下越臭。不可否認這樣一個事實:和什麼樣的人在一起,就有什麼樣的格局,就會有什麼樣的人生。
3、了解數據結構和演算法
如果你要成為一個高效的開發者,就必須學會快速排序、學會辨認O(n2)程序、學會編寫遞歸函數。
學會多種語言,你便會更清楚不同的框架是相同問題的是如何解決的。盡可能去了解底層命令(plumbing),以便能夠作出明智的決定(Web框架是怎麼存儲session狀態的?Cookie到底是什麼?)。
4、精通一個編輯器
高效開發者通常是用IDE編輯器嗎?其實不是的,他們更常用的文本編輯器,因為這樣更會學到東西。
如果使用編輯器選擇通用的Emacs或Vim,自然是最好的。其次,挑選你的首選平台最支持的。使用宏,不斷地寫代碼;使用Visual Studio或SublimeText的自動補齊功能。
5、整潔的代碼勝過巧妙的代碼
如果想讓別人可以輕松讀懂你編寫的代碼,請盡量使用最少的代碼來完成任務。在編寫代碼過程中,遵循DRY(Don』t repeat yourself)的原則,使用明確定義的對象和庫,將任務分解成小而簡單的代碼段。
6、掌握代碼調試技巧
現如今市場和需求變化相當快,項目的周期有時就會縮短。一個月的工作計劃,會縮短到2個星期。項目的壓力難免會導致程序員的代碼質量會有所下降!
因此,調試技巧在這樣的環境下就顯得尤為重要。高級程序員會在函數的開始和結束輸出Log,把所有的參數和返回值列印到日誌系統,便於追蹤。在解決問題的過程中,使用開發工具一行一行進行調試,實時觀看參數的變化。
7、重新回顧代碼
重新去回顧和審視自己寫過的代碼,通常會有兩種體驗,一種是我怎麼寫了這么爛的代碼;另外一種則是對自己寫過的代碼充滿了成就感。回顧代碼有時可以觸發我們新的想法,甚至還能對編碼有一個更深層次的思考。
❷ 遇到職業迷茫,程序員或者計算機這門技術型的行業真的可以做長久嗎是不是 35歲就退役了
可以這樣理解,搞計算機軟體編程工作要求大腦要好,思維能力要強,腦力勞動特別強,所以年齡大了會跟不上,但是搞計算機硬體不會35歲就退役,只要有體能,動手能力強,多學習,工作到40、50歲應該沒問題。僅供參考。
❸ 怎麼做一個好的程序員
想成為一名優秀的程序員,往往需要具備以下特質:
1、始終保持工作熱情
只有熱愛才能做好一件事。尤其對於技術人員來說,程序員經常對著電腦一坐就是七八個小時,有時候趕項目還得在公司熬夜加班。如果不是真的熱愛這份工作,光靠賺錢這個驅動力肯定是不足以支撐下去的。如果你每天都是一副上班比上墳還沉重的樣子,哪怕你的技術水平再高,你的狀態也很難好到哪裡去,更不可能做出一個好的產品來。
2、提高學習能力,不斷提升專業水平
新技術層出不窮,每個程序員都必須堅持學習。只有不斷學習才能不斷提升。在空餘時間多掌握一些工具,多學習一些技術語言,技多不壓身嘛。而且技術都是相通的,多學習一些新東西,會讓你更融會貫通。這樣既可以提高自己的工作效率,也能提升自己的職場競爭力。
3、加強溝通能力,避免無效的工作產出
下手寫代碼前必須明確產品的目標和需求,如果有不理解的,一定要及時跟上級進行溝通,必要時還可以從技術層面給產品和老大提出優化意見。切忌光敲代碼不思考,這樣很容易做無用功。
只要能做到以上三點,你未來的發展空間會更大,也相信你一定能找到適合自己的平台!
❹ 程序員純靠技術能一直生存下去嗎
作為一名IT行業的從業者,同時也是一名大數據、機器學習方向的研究生導師,我來回答一下這個問題。
首先,程序員完全可以靠技術來不斷延長自己的職業生命周期,目前IT行業內也有大量的「70後」程序員一直奮斗在技術研發的第一線。
對於程序員來說,如果想一直從事程序開發工作,需要面臨三大問題,其一是軟體開發技術更新速度較快;其二是軟體開發工作壓力較大;其三是軟體開發崗位升級難度較大,要想解決這三大問題,需要通過以下幾個手段:
第一:重視基礎知識結構。 程序員的基礎知識結構往往能夠決定程序員的成長空間,基礎知識結構越扎實則上升空間就越大,職業生命周期也會越長。基礎知識涵蓋兩大塊內容,一部分是數學和物理知識,另一部分是計算機操作系統、計算機網路、演算法設計等內容。從應用級程序員向研發級程序員過渡一個重要的條件就是數學基礎是否扎實,而研發級程序員的職業生命周期要遠長於應用級程序員。
第二:重視自主學習。 不論從事應用級開發崗位還是研發級開發崗位,自主學習對於程序員的成長都具有重要的意義,很多程序員就是由於不注重自主學習而導致知識結構逐漸陳舊,最終被行業淘汰。自主學習一方面要緊跟技術發展趨勢,另一方面要圍繞當前工作內容。
第三:注重提升資源整合能力。 隨著程序員年齡的增長,資源整合能力將對於未來的發展起到重要的作用,程序員的資源整合能力包括技術整合能力、方案整合能力和研發資源整合能力。當然,如果再具備一定的人力資源整合能力,那麼會進一步提升自身的職場價值。
如果有互聯網、大數據、人工智慧等方面的問題,或者是考研方面的問題,都可以在評論區留言!
從我過往多年的生涯案例來看,我覺得程序員是否可以一直生存下去,關鍵在於:「技術是否精湛」。
一般來說,技術除非你是非常稀缺,大部分到了一定階段,都會面臨天花板,學習能力會隨著年齡提升慢慢下降,就很難占據技術的前沿,28法則的存在,大約8成程序員需要謀求新的出路。
一般來說,會分為兩條路徑:
1.橫向路徑:
技術領域看似專業性很強,但是一部分泛泛之輩,小部分某一個技術領域非常精湛,那麼需要深耕,多年打磨,成為某一個細分領域的專家。
2.縱向路徑:
還有一部分程序員,本身對於程序非常倦怠,無法繼續下去,那麼縱向領域尋求突破,打個比方,你在某一方面才藝很強,攝影,營養學,演講等,但是區別主業本身,可以從縱向裡面慢慢打磨,成為你的核心技能,實現新的發展。
所以是否可以生存下去,完全取決你的選擇,當你有一技傍身,那麼才可以擁有全新的未來。
首先靠技術肯定是可以的,因為無論什麼公司都會需要一個經驗豐富,技術鼎力的一線程序員,但是這個有兩個限制,一是這種程序員的職位需求不會太多,二是這種程序員在某個技術領域必須非常厲害,而且在某一個領域大牛的基礎上,要有跟進其他新技術的能力,因為這種級別的程序員,公司不可能白白養著你,跨組協調,跨項目協作是最基本的要求,所以如果技術不在某一個領域達到大牛級別,且這個技術領域要有比較強的生命力,也就是說它的技術前景要比較好,否則想靠技術生存一輩子,還是比較危險的。選定好技術領域,然後耐心學習,很多技術人員本身是對技術痴迷的一類,所以這一類人還是很有競爭力的,他們學習新技術,深化領域技術的主觀能動性一般是很強的。相信真正愛技術的人,即使他不靠技術生活一輩子,也會一輩子暢游在技術的海洋中。
首先答案是肯定的,但因人而異。
如果基本功扎實,個人又對技術的提升有著狂熱的追求,善於鑽研,對新技術不抵觸,學習能力很強的話,可以一直靠技術生存下去。可以一直戰斗在研發的第一線。這只是本職工作。
另外,可以利用自己的技術能力去做些兼職工作。比如接些外包的項目做做也是蠻不錯的!
還有,比如現在很多內容平台上可以發布一些文章,甚至付費課程。生存是一點問題都沒有。
如果你足夠牛叉,還可以組建團隊做技術VC。
其實靠技術不是能不能生存的問題,而是能活得多好的問題!
但,如果上面的優勢在你身上不存在,那就另當別論了。
其實現在很多人都在說,技術人員到一定年齡該轉管理等等。我的觀點是看個人特點再做決定,比如你很健談,善於交際。可以轉做銷售,一個懂技術的銷售該有多麼牛叉?如果你思維縝密,表達清晰。可以轉做售前,一個懂技術的售前該有多麼牛叉?
總之,你懂技術,轉做什麼都牛叉
❺ 作為程序員,純靠技術究竟能不能一直生存下去
一、不要以為只有學習技術才可以換來穩定的生活和高的薪水待遇
做技術的沒有自己的時間,一定是個隨時叫隨時到的人。更可怕的是,會讓你接觸的人際關系非常單一,除了有限的技術人員之外你幾乎見不到做其他行業工作和職位的人,你的朋友圈子小且單一。
相反那些從事售前和市場開發的朋友,卻有更多的工作之外的時間,甚至他們工作的時間有的時候是和生活的時間是可以兼顧的,他們可以通過市場開發,認識各個行業的人士,可以認識各種各樣的朋友,只有接觸人,才能看到更多的商業機會和發展前景。
根據2018年中國程序員薪資生存現狀調查報告
❻ 程序員未來前景如何大齡程序員出路在哪裡
年齡大的普通程序員,將來的出路無非就是以下三個:
1、穩定地待在一家公司,有一定產出效率,成為一顆螺絲釘,不出彩也不出醜,就像之前棉紡廠的工人那樣,直到這家公司不行了,找另一家,繼續做個普通一兵。其實這事兒和幾十年前的工人一樣,只是時代不一樣,職業的名字變了。
2、尋找相對優勢,到稀缺你技術、能力、經驗的地方,找到存在感。比如一線城市回退到二線、三線;比如互聯網頂級公司的普通程序員進入小公司;比如互聯網行業的普通程序員進入傳統行業有軟體部門的公司。
3、轉行,想干什麼干什麼去,很多人認為,一個 35 歲以上的程序員相比較一個 20來歲的畢業生,精神狀況、身體狀況必定是不如剛剛大學畢業的年輕人,所以要盡早轉行。那麼問題來了,程序員是吃青春飯的嗎?程序員的職業發展到底如何呢?
首先,我覺得時至今日,相比其他職業,程序員仍然是一個投入產出比比較高的職業。程序員不是一個「吃青春飯」的職業,而是一個常青的職業。程序員其實也並沒有我們想像中那麼累,很多互聯網公司的工作環境、工作氛圍、員工福利都是非常不錯的:彈性工作,定期團建,免費健身;一日三餐、零食飲料應有盡有。對於頭腦靈活、思維敏捷,但還沒有明確職業目標的理工科畢業生而言,把程序員作為職業生涯的起點,應該會是一個不錯的選擇。以北京為例,應屆畢業起薪在 8000-10000 元,比其他職業高出不少。程序員現在小蜜蜂雲工作了解很多遠程可辦公的,全職兼職都是有的,可供的選擇還是比較多的。
程序員在職業生涯第一個階段,通常是 3-5 年。這個階段要以職業探索為主,腳踏實地寫好每一行代碼。只有快速學習和成長,掌握過硬的專業技能,這樣才能在職場立足,走好未來的路。現在程序員的職業領域已經細分到了令人發指的地步,比如:大數據工程師、雲計算工程師、某某語言工程師、系統架構師、web 前端工程師、嵌入式軟體工程師、資料庫開發工程師等等。
❼ 幹了兩年程序員了,不知道下面的路該怎麼走了,請前輩們指點下好嗎
我有幾個做程序員的朋友,因為我是做職業規劃的,之前有朋友也咨詢過我類似的問題,答復如下:
1.首先,程序員是非常枯燥的工作,做了大概兩年左右都會有倦怠期,這個時候應該問問自己,我還要不要繼續做IT類工作。
2.若確認繼續做此類工作,那麼有兩個選擇,第一是繼續鑽研技術,平時多到網路平台找同行交流或學習。第二是轉運維類工作,我有兩個朋友就是由編程轉到了運維。其實還有第三,可以走管理方向,不過這個需要自己多學習管理類技能,同事也要有這方面的興趣。
作為一名從業多年的程序員,同時也是一名教育工作者,我來回答一下這個問題。
對於從業兩年的程序員來說,正處在技術成長期,如果未來想在技術領域走得更遠,此時應該注重開發經驗的積累,同時應該廣泛涉獵各種技術體系,尤其要注重各種新技術的學習,包括大數據、物聯網、雲計算、區塊鏈、人工智慧等技術體系。對於程序員來說,在從業的最初五年,一定要多做「加法」,更多的技術儲備能夠為崗位升級奠定一個扎實的基礎。
對於專注於行業領域的應用級程序員來說,還應該重視行業經驗的積累,在產業互聯網時代,行業經驗對於程序員未來的發展有非常重要的影響。對於大部分基礎知識比較薄弱的程序員來說,如果不能在技術研發的道路上走得更遠,就應該考慮未來的發展方向,如果具有豐富的行業經驗,會在很大程度上拓展自身的選擇空間。從當前行業發展趨勢來看,程序員可以考慮向產品經理、項目經理、行業信息化專家等方向發展。
對於從業兩年的初級程序員來說,如果條件允許的話,還可以考慮通過讀研來提升自身的崗位級別,目前有不少初級程序員都會選擇考研。按照 歷史 經驗來看,大部分程序員在考研之後都會獲得崗位升級,不少人在讀研之後會選擇進入互聯網大廠發展,薪資待遇也有了一定程度的提升。從這個角度來看,程序員讀研也是一個不錯的選擇。
最後,隨著產業互聯網的發展,當前程序員應該注重雲計算平台、物聯網平台和人工智慧平台相關技術的學習,未來這些平台將有廣闊的發展空間。
兩年也就相當於是剛入行的一個程度,那這個程度就是要多努力幹活,多學多練,想任何其他的都是白費功夫,因為你沒有其他的時間積累,在二至四年的這個時間里,要把自己的工資技術水平提升到你所在的那個城市圈子裡面的中上等的水平,然後你要有一個比較謹慎的思維,不要空有一個想法。
那麼這個時候你個思想和你這個能力就不匹配了。我們首先要選擇考慮的就是北上廣深。你現在還可以努力干到35歲左右。另外技術這個行業它分為一個是偏技術型,另外一個是業務驅動型,還有就是屬於技術骨乾性。偏技術型的話,不建議你選這個,因為不管是程序員也好,前端也好,都是工程師,都是幹活的,不搞科研,雖然很多it公司技術部要求很多,但是都是幹活的,沒有說太深的一些技術要求,基本上就是用於日常的技術啊bug。
另外一個是業務驅動型,也叫業務,就是你要主導需求就是客戶你能找到自己的客戶,然後還要和前端一起去搞定這些問題,你要有老闆的一個思維,自己乾的時間長了,那麼你就能找到自己的這個路了,不管是你創業還是說去其他的地方去做都對自己非常有好處。
你現在考慮的可能就是說以後怎麼發展他這個技術程序員發展的話一般是年齡平均到35歲左右的時候,你就可以通過前期的一些積累,然後鋪墊到35歲的時候,你就可以去做其他的行業的,因為你到35歲的時候,不管是去面試或者是帶領團隊熬夜,很多時候有些東西都跟不上了,所以建議你到那個時候去轉行。
你好,作為一個工作4年的同學,我想以個人經歷回答下這個問題。對於工作兩年的程序員來說,大都是處於技術的快速上升期,應該也接觸了挺多的技術面,包括但不限於分布式、資料庫、網路、大數據等,並且可能對某個框架或者技術有了自己的深入見解。
對於以後的發展,如果是想往 中間件方向發展 的話,需要掌握分布式原理、網路通信、消息隊列、資料庫操作、緩存等,大多數中間件都涉及到分布式支持。可以看幾個不同類型的中間件的原理與設計實現,比如MQ可以看Rockermq,資料庫可以看MySQL,緩存可以看Redis,網路通信庫可以看Netty,配置中心可以看Apollo等,注意,每種類型的中間件或者框架重點學習一個即可,因為思想都是相同的,理解了一個之後在學其他的很快就能上手掌握。當然,除了自己的技術學習之外,一個好的平台也是很重要的,不僅僅能夠認識一幫志同道合的朋友,還能有實際的業務平台去實現技術的價值,這里推薦阿里的中間件相關崗位,目前中國中間件團隊的java水平基本是阿里最高水平了,在這里誕生了很多知名的開源軟體。
針對1-5年的程序員關於技術點來說,可以參考芋道源碼整理的下面一張圖進行查漏補缺:
上面羅列的技術目前我也在學習中,對於技術人來說,知道自己想要什麼,要比自己知道怎麼要什麼更重要。知道自己想要什麼,你就會想方設法去實現它。不管怎樣,腳踏實地做好自己的工作,學習技術,肯定沒錯。
說實話我對程序這東西一竅不通,但我知道不管什麼事情沒有了程序那就亂了,電腦沒有程序就死機了,人幹事情沒有了程序那就沒有頭緒,我覺得你還是好好乾吧,這個行業永遠淘汰不了。永遠是最需要的東西!
說實話,只是普通的編程圈子不會很大,跳出這個圈子會發現還有很多其他相關的職業。如果在一個小公司,程序員工資雖然偏高,但在運營商務銷售其他職務心裡多少還是會有些輕視,畢竟現在普通程序員太多了,大部分人做的東西千篇一律,而他們認為工資其實是靠他們的能力賺取的。
如果想在小公司發展,可以深入了解業務,和一些其他職位的主力人員維護好關系,倒時候想創業可以合夥,想轉行也會輕鬆些。
如果想在大公司發展,可以走管理,大公司一般比較看重資歷,學歷,管理能力。
還有一種走技術路線的,一般只存在於大公司,這種部門在有的公司很閑只是撐個場面,有的是真正能做出實用的東西值得敬佩。
做任何行業都要堅持,兄弟你才做了兩年,相當於是剛入門,以後要走的路還會很遠。
就現在來說,程序員還屬於是高收入行業,工作還比較好找,趁年輕時好好乾,多積累一些經驗,多做一些大的項目,以後的路會越走越寬。
不太清楚你目前的困惑點在哪裡,是學習新技術感覺力不從心了?還是對技術沒有興趣了?還是不想當程序員了?還是對程序員的發展路線迷茫了?不管怎樣,幹了兩年的程序員,對編程這個工作還是有些經驗了,也能夠解決工作中的一些技術問題,但還處於相對初級的一個水平,畢竟積累不太夠。
建議繼續做2-3年開發工作,提升編程水平,提升解決問題的能力,逐漸成長為公司的技術骨幹。等到那個時候,你的選擇會相對多一些,也會理智一些。例如:你在開發過程中,覺得自己更喜歡跟人打交道,想做項目管理,那麼,你多做2年開發工作,並不耽誤你後面轉為項目經理。你可以將接下來的2年作為一個潛伏期,在做好本質工作的同時,注意一定要做好你的工作,你的工作做好了,自然會得到別人的尊重,也會贏得人脈,千萬不可以為將來不做開發了,就開始敷衍、不用心,做好當下,再考慮將來的發展方向,是換一個公司,換一個崗位,還是換一個城市?畢竟程序員的待遇還是可以的,多做2、3年,沒啥損失。
在迷茫的時候,不要做任何決定,靜觀其變。
大家好!我是鍵盤手,
關於這個問題我想說一下我個人的看法,我個人也是吃技術飯的,現在過了三十五歲了,打工已經沒有公司要了,也不想和大學生去搶飯碗,去工作人在心不在。以前二十幾歲的時候,總認為吃技術飯經驗很重要,年齡越大經歷越豐富,薪資就越高,而現實是,現在的公司一般不招三十五歲以上的人員,而且有些公司把三十五年以上的員工解聘掉,主要是人過了三十五歲,思想和創新能力、學習能力沒有二十幾歲時候強,所以對於技術員來說就是一道坎,很多人到了這個歲數都不敢隨意跳槽,也不敢創業。
所以我個人認為如果你不是很喜歡這個行業,就早點作出選擇,當然越早越好,如果你喜歡,那就深造下去,見意在三十歲之前能夠有所作為,不要再給別人打工,我過了三十五歲才明白,打工是最不劃算的買賣。
就這個問題,我根本不了解你的任何情況,我能指點個毛線。再說我還不是前輩。
幹了兩年程序員了,沒有說乾的好還是不好, 回答裡面的各位大佬,你就認為人家 是乾的不好,說不定這個哥牛的一B。
下面的路怎麼走, 我不知道~ 我也是渣渣,不夠格當人生導師~
❽ 程序員的長久路該怎樣規劃
軟體開發之路是充滿荊棘與挑戰之路,也是充滿希望之路。Java學習也是如此,沒有捷徑可走。夢想像《天龍八部》中虛竹一樣被無崖子醍醐灌頂而輕松獲得一甲子功力,是很不現實的。每天仰天大叫"天神啊,請賜給我一本葵花寶典吧",殊不知即使你獲得了葵花寶典,除了受自宮其身之苦外,你也不一定成得了"東方不敗",倒是成"西方失敗"的幾率高一點。
"不走彎路,就是捷徑",佛經說的不無道理。
1.如何學習程序設計?
Java是一種平台,也是一種程序設計語言,如何學好程序設計不僅僅適用於Java,對C++等其他程序設計語言也一樣管用。有編程高手認為,Java也好C也好沒什麼分別,拿來就用。為什麼他們能達到如此境界?我想是因為編程語言之間有共通之處,領會了編程的精髓,自然能夠做到一通百通。如何學習程序設計理所當然也有許多共通的地方。
1.1培養興趣
興趣是能夠讓你堅持下去的動力。如果只是把寫程序作為謀生的手段的話,你會活的很累,也太對不起自己了。多關心一些行業趣事,多想想蓋茨。不是提倡天天做白日夢,但人要是沒有了夢想,你覺得有味道嗎?可能像許多深圳本地農民一樣,打打麻將,喝喝功夫茶,拜拜財神爺;每個月就有幾萬十幾萬甚至更多的進帳,憑空多出個"食利階層"。你認為,這樣有味道嗎?有空多到一些程序員論壇轉轉,你會發現,他們其實很樂觀幽默,時不時會冒出智慧的火花。
1.2慎選程序設計語言
男怕入錯行,女怕嫁錯郎。初學者選擇程序設計語言需要謹慎對待。軟體開發不僅僅是掌握一門編程語言了事,它還需要其他很多方面的背景知識。軟體開發也不僅僅局限於某幾個領域,而是已經滲透到了各行各業幾乎每一個角落。
如果你對硬體比較感興趣,你可以學習C語言/匯編語言,進入硬體開發領域。如果你對電信的行業知識及網路比較熟悉,你可以在C/C++等之上多花時間,以期進入電信軟體開發領域。如果你對操作系統比較熟悉,你可以學習C/Linux等等,為Linux內核開發/驅動程序開發/嵌入式開發打基礎。
如果你想介入到應用范圍最廣泛的應用軟體開發(包括電子商務電子政務系統)的話,你可以選擇J2EE或.NET,甚至LAMP組合。每個領域要求的背景知識不一樣。做應用軟體需要對資料庫等很熟悉。總之,你需要根據自己的特點來選擇合適你的編程語言。
1.3要腳踏實地,快餐式的學習不可取
先分享一個故事。
有一個小朋友,他很喜歡研究生物學,很想知道那些蝴蝶如何從蛹殼里出來,變成蝴蝶便會飛。有一次,他走到草原上面看見一個蛹,便取了回家,然後看著,過了幾天以後,這個蛹出了一條裂痕,看見裡面的蝴蝶開始掙扎,想抓破蛹殼飛出來。這個過程達數小時之久,蝴蝶在蛹裡面很辛苦地拚命掙扎,怎麼也沒法子走出來。這個小孩看著看著不忍心,就想不如讓我幫幫它吧,便隨手拿起剪刀在蛹上剪開,使蝴蝶破蛹而出。 但蝴蝶出來以後,因為翅膀不夠力,變得很臃腫,飛不起來。
這個故事給我們的啟示是:欲速則不達。
浮躁是現代人最普遍的心態,能怪誰?也許是貧窮落後了這么多年的緣故,就像當年的大躍進一樣,都想大步跨入***主義社會。現在的軟體公司、客戶、政府、學校、培訓機構等等到處彌漫著浮躁之氣。就拿我比較熟悉的大連大工IT職業培訓來說吧,居然打廣告宣稱"20多年的計算機職業教育,遼寧省十佳學校",殊不知中國計算機發展才幾年,軟體發展才幾年,居然去報名的學生不少,簡直是藐視天下程序員。培訓出來的「程序員」大多不知道OO,OP為何物?社會環境如是,我們不能改變,只能改變自己,鬧市中的安寧,彌足珍貴。許多初學者C++/Java沒開始學,立馬使用VC/JBuilder,會使用 VC/JBuilder開發一個Hello World程序,就忙不迭的向世界宣告,"我會軟體開發了",簡歷上也大言不慚地寫上"精通VC/Java"。結果到軟體公司面試時要麼被三兩下打發走了,要麼被駁的體無完膚,無地自容。到處碰壁之後才知道捧起《C++編程思想》《Java編程思想》仔細鑽研,早知如此何必當初呀。
"你現在講究簡單方便,你以後的路就長了",好象也是佛經中的勸戒。
1.4多實踐,快實踐
彭端淑的《為學一首示子侄》中有窮和尚與富和尚的故事。
從前,四川邊境有兩個和尚,一個貧窮,一個有錢。一天,窮和尚對富和尚說:"我打算去南海朝聖,你看怎麼樣?"富和尚說:"這里離南海有幾千里遠,你靠什麼去呢?"窮和尚說:"我只要一個水缽,一個飯碗就夠了。"富和尚為難地說:"幾年前我就打算買條船去南海,可至今沒去成,你還是別去吧!" 一年以後,富和尚還在為租賃船隻籌錢,窮和尚卻已經從南海朝聖回來了。
這個故事可解讀為:任何事情,一旦考慮好了,就要馬上上路,不要等到准備周全之後,再去幹事情。假如事情准備考慮周全了再上路的話,別人恐怕捷足先登了。軟體開發是一門工程學科,注重的就是實踐,"君子動口不動手"對軟體開發人員來講根本就是錯誤的,他們提倡"動手至上",但別害怕,他們大多溫文爾雅,沒有暴力傾向,雖然有時候蓬頭垢面的一副"比爾蓋茨"樣。有前輩高人認為,學習編程的秘訣是:編程、編程、再編程,筆者深表贊同。不僅要多實踐,而且要快實踐。我們在看書的時候,不要等到你完全理解了才動手敲代碼,而是應該在看書的同時敲代碼,程序運行的各種情況可以讓你更快更牢固的掌握知識點。
1.5多參考程序代碼
程序代碼是軟體開發最重要的成果之一,其中滲透了程序員的思想與靈魂。許多人被《仙劍奇俠傳》中凄美的愛情故事感動,悲劇的結局更有一種缺憾美。為什麼要以悲劇結尾?據說是因為寫《仙劍奇俠傳》的程序員失戀而安排了這樣的結局,他把自己的感覺融入到游戲中,卻讓眾多的仙劍迷扼腕嘆息。
多多參考代碼例子,對Java而言有參考文獻[4.3],有API類的源代碼(JDK安裝目錄下的src.zip文件),也可以研究一些開源的軟體或框架。
1.6加強英文閱讀能力
對學習編程來說,不要求英語, 但不能一點不會,。最起碼像Java API文檔(參考文獻[4.4])這些東西還是要能看懂的,連猜帶懵都可以;旁邊再開啟一個"金山詞霸"。看多了就會越來越熟練。在學Java的同時學習英文,一箭雙雕多好。另外好多軟體需要到英文網站下載,你要能夠找到它們,這些是最基本的要求。英語好對你學習有很大的幫助。口語好的話更有機會進入管理層,進而可以成為剝削程序員的"周扒皮"。
1.7萬不得已才請教別人
筆者在Martix與Java論壇的在線輔導系統中解決學生問題時發現,大部分的問題學生稍做思考就可以解決。請教別人之前,你應該先回答如下幾個問題。
你是否在google中搜索了問題的解決辦法?
你是否查看了Java API文檔?
你是否查找過相關書籍?
你是否寫代碼測試過?
如果回答都是"是"的話,而且還沒有找到解決辦法,再問別人不遲。要知道獨立思考的能力對你很重要。要知道程序員的時間是很寶貴的。
1.8多讀好書
書中自有顏如玉。比爾蓋茨是一個飽讀群書的人。雖然沒有讀完大學,但九歲的時候比爾蓋茨就已經讀完了所有的網路全書,所以他精通天文、歷史、地理等等各類學科,可以說比爾?茨不僅是當今世界上金錢的首富,而且也可以稱得上是知識的巨富。
筆者在給學生上課的時候經常會給他們推薦書籍,到後來學生實在忍無可忍開始抱怨,"天吶,這么多書到什麼時候才能看完了","學軟體開發,感覺上了賊船 "。這時候,我的回答一般是,"別著急,什麼時候帶你們去看看我的書房,到現在每月花在技術書籍上的錢400元,這在軟體開發人員之中還只能夠算是中等的 ",學生當場暈倒。(註:這一部分學生是剛學軟體開發的)
1.9使用合適的工具
工欲善其事必先利其器。軟體開發包含各種各樣的活動,需求收集分析、建立用例模型、建立分析設計模型、編程實現、調試程序、自動化測試、持續集成等等,沒有工具幫忙可以說是寸步難行。工具可以提高開發效率,使軟體的質量更高BUG更少。組合稱手的武器。到飛花摘葉皆可傷人的境界就很高了,無招勝有招,手中無劍心中有劍這樣的境界幾乎不可企及。
2.軟體開發學習路線
兩千多年的儒家思想孔孟之道,中庸的思想透入骨髓,既不冒進也不保守並非中庸之道,而是找尋學習軟體開發的正確路線與規律。
從軟體開發人員的生涯規劃來講,我們可以大致分為三個階段,軟體工程師→軟體設計師→架構設計師或項目管理師。不想當元帥的士兵不是好士兵,不想當架構設計師或項目管理師的程序員也不是好的程序員。我們應該努力往上走。讓我們先整理一下開發應用軟體需要學習的主要技術。
A.基礎理論知識,如操作系統、編譯原理、數據結構與演算法、計算機原理等,它們並非不重要。如不想成為計算機科學家的話,可以採取"用到的時候再來學"的原則。
B.一門編程語言,現在基本上都是面向對象的語言,Java/C++/C#等等。如果做WEB開發的話還要學習HTML/JavaScript等等。
C.一種方法學或者說思想,現在基本都是面向對象思想(OOA/OOD/設計模式)。由此而衍生的基於組件開發CBD/面向方面編程AOP等等。
D.一種關系型資料庫,ORACLE/SqlServer/DB2/MySQL等等
E.一種提高生產率的IDE集成開發環境JBuilder/Eclipse/VS.NET等。
F.一種UML建模工具,用ROSE/VISIO/鋼筆進行建模。
G.一種軟體過程,RUP/XP/CMM等等,通過軟體過程來組織軟體開發的眾多活動,使開發流程專業化規范化。當然還有其他的一些軟體工程知識。
H.項目管理、體系結構、框架知識。
正確的路線應該是:B→C→E→F→G→H。
還需要補充幾點:
1).對於A與C要補充的是,我們應該在實踐中逐步領悟編程理論與編程思想。新技術雖然不斷涌現,更新速度令人眼花燎亂霧里看花;但萬變不離其宗,編程理論與編程思想的變化卻很慢。掌握了編程理論與編程思想你就會有撥雲見日之感。面向對象的思想在目前來講是相當關鍵的,是強勢技術之一,在上面需要多投入時間,給你的回報也會讓你驚喜。
2).對於資料庫來說是獨立學習的,這個時機就由你來決定吧。
3).編程語言作為學習軟體開發的主線,而其餘的作為輔線。
4).軟體工程師著重於B、C、E、D;軟體設計師著重於B、C、E、D、F;架構設計師著重於C、F、H。
3.如何學習Java?
3.1 Java學習路線
3.1.1 基礎語法及Java原理
基礎語法和Java原理是地基,地基不牢靠,猶如沙地上建摩天大廈,是相當危險的。學習Java也是如此,必須要有扎實的基礎,你才能在J2EE、 J2ME領域游刃有餘。參加SCJP(SUN公司認證的Java程序員)考試不失為一個好方法,原因之一是為了對得起你交的1200大洋考試費,你會更努力學習,原因之二是SCJP考試能夠讓你把基礎打得很牢靠,它要求你跟JDK一樣熟悉Java基礎知識;但是你千萬不要認為考過了SCJP就有多了不起,就能夠獲得軟體公司的青睞,就能夠獲取高薪,這樣的想法也是很危險的。獲得"真正"的SCJP只能證明你的基礎還過得去,但離實際開發還有很長的一段路要走。
3.1.2 OO思想的領悟
掌握了基礎語法和Java程序運行原理後,我們就可以用Java語言實現面向對象的思想了。面向對象,是一種方法學;是獨立於語言之外的編程思想;是 CBD基於組件開發的基礎;屬於強勢技術之一。當以後因工作需要轉到別的面向對象語言的時候,你會感到特別的熟悉親切,學起來像喝涼水這么簡單。
使用面向對象的思想進行開發的基本過程是:
●調查收集需求。
●建立用例模型。
●從用例模型中識別分析類及類與類之間的靜態動態關系,從而建立分析模型。
●細化分析模型到設計模型。
●用具體的技術去實現。
●測試、部署、總結。
3.1.3 基本API的學習
進行軟體開發的時候,並不是什麼功能都需要我們去實現,也就是經典名言所說的"不需要重新發明輪子"。我們可以利用現成的類、組件、框架來搭建我們的應用,如SUN公司編寫好了眾多類實現一些底層功能,以及我們下載過來的JAR文件中包含的類,我們可以調用類中的方法來完成某些功能或繼承它。那麼這些類中究竟提供了哪些方法給我們使用?方法的參數個數及類型是?類的構造器需不需要參數?總不可能SUN公司的工程師打國際長途甚至飄洋過海來告訴你他編寫的類該如何使用吧。他們只能提供文檔給我們查看,Java DOC文檔(參考文獻4.4)就是這樣的文檔,它可以說是程序員與程序員交流的文檔。
基本API指的是實現了一些底層功能的類,通用性較強的API,如字元串處理/輸入輸出等等。我們又把它成為類庫。熟悉API的方法一是多查Java DOC文檔(參考文獻4.4),二是使用JBuilder/Eclipse等IDE的代碼提示功能。
3.1.4 特定API的學習
Java介入的領域很廣泛,不同的領域有不同的API,沒有人熟悉所有的API,對一般人而言只是熟悉工作中要用到的API。如果你做界面開發,那麼你需要學習Swing/AWT/SWT等API;如果你進行網路游戲開發,你需要深入了解網路API/多媒體API/2D3D等;如果你做WEB開發,就需要熟悉Servlet等API啦。總之,需要根據工作的需要或你的興趣發展方向去選擇學習特定的API。
3.1.5 開發工具的用法
在學習基礎語法與基本的面向對象概念時,從鍛煉語言熟練程度的角度考慮,我們推薦使用的工具是Editplus/JCreator+JDK,這時候不要急於上手JBuilder/Eclipse等集成開發環境,以免過於關注IDE的強大功能而分散對Java技術本身的注意力。過了這一階段你就可以開始熟悉 IDE了。
程序員日常工作包括很多活動,編輯、編譯及構建、調試、單元測試、版本控制、維持模型與代碼同步、文檔的更新等等,幾乎每一項活動都有專門的工具,如果獨立使用這些工具的話,你將會很痛苦,你需要在堆滿工具的任務欄上不斷的切換,效率很低下,也很容易出錯。在JBuilder、 Eclipse等IDE中已經自動集成編輯器、編譯器、調試器、單元測試工具JUnit、自動構建工具ANT、版本控制工具CVS、DOC文檔生成與更新等等,甚至可以把UML建模工具也集成進去,又提供了豐富的向導幫助生成框架代碼,讓我們的開發變得更輕松。應該說IDE發展的趨勢就是集成軟體開發中要用到的幾乎所有工具。
從開發效率的角度考慮,使用IDE是必經之路,也是從一個學生到一個職業程序員轉變的里程碑。
Java開發使用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans等幾種;而Eclipse、JBuilder 佔有的市場份額是最大的。JBuilder在近幾年來一直是Java集成開發環境中的霸主,它是由備受程序員尊敬的Borland公司開發,在硝煙彌漫的 Java IDE大戰中,以其快速的版本更新擊敗IBM的Visual Age for Java等而成就一番偉業。IBM在Visual Age for Java上已經無利可圖之下,乾脆將之貢獻給開源社區,成為Eclipse的前身,真所謂"柳暗花明又一村"。浴火重生的Eclipse以其開放式的插件擴展機制、免費開源獲得廣大程序員(包括幾乎所有的骨灰級程序員)的青睞,極具發展潛力。
3.1.6 學習軟體工程
對小型項目而言,你可能認為軟體工程沒太大的必要。隨著項目的復雜性越來越高,軟體工程的必要性才會體現出來。參見"軟體開發學習路線"小節。
3.2學習要點
確立的學習路線之後,我們還需要總結一下Java的學習要點,這些要點在前文多多少少提到過,只是筆者覺得這些地方特別要注意才對它們進行匯總,不要嫌我婆婆媽媽啊。
3.2.1勤查API文檔
當程序員編寫好某些類,覺得很有成就感,想把它貢獻給各位苦難的同行。這時候你要使用"Javadoc"工具(包含在JDK中)生成標準的Java DOC文檔,供同行使用。J2SE/J2EE/J2ME的DOC文檔是程序員與程序員交流的工具,幾乎人手一份,除了菜鳥之外。
J2SE DOC文檔官方下載地址:http://Java.sun.com/j2se/1.5.0/download.jsp,你可以到google搜索CHM版本下載。也可以在線查看:http://Java.sun.com/j2se/1.5.0/docs/api/index.html。
對待DOC文檔要像毛主席語錄,早上起床念一遍,吃飯睡覺前念一遍。
當需要某項功能的時候,你應該先查相應的DOC文檔看看有沒有現成的實現,有的話就不必勞神費心了直接用就可以了,找不到的時候才考慮自己實現。使用步驟一般如下:
●找特定的包,包一般根據功能組織。
●找需要使用類,類命名規范的話我們由類的名字可猜出一二。
●選擇構造器,大多數使用類的方式是創建對象。
●選擇你需要的方法。
3.2.2 查書/google->寫代碼測試->查看源代碼->請教別人
當我們遇到問題的時候該如何解決?
這時候不要急著問別人,太簡單的問題,沒經過思考的問題,別人會因此而瞧不起你。可以先找找書,到google中搜一下看看,絕大部分問題基本就解決了。而像"某些類/方法如何使用的問題",DOC文檔就是答案。對某些知識點有疑惑是,寫代碼測試一下,會給你留下深刻的印象。而有的問題,你可能需要直接看 API的源代碼驗證你的想法。萬不得已才去請教別人。
3.2.3學習開源軟體的設計思想
Java領域有許多源代碼開放的工具、組件、框架,JUnit、ANT、Tomcat、Struts、Spring、Jive論壇、PetStore寵物店等等多如牛毛。這些可是前輩給我們留下的瑰寶呀。入寶山而空手歸,你心甘嗎?對這些工具、框架進行分析,領會其中的設計思想,有朝一日說不定你也能寫一個XXX框架什麼的,風光一把。分析開源軟體其實是你提高技術、提高實戰能力的便捷方法。
3.2.4 規范的重要性
沒有規矩,不成方圓。這里的規范有兩層含義。第一層含義是技術規范,多到http://www.jcp.org下載JSRXXX規范,多讀規范,這是最權威准確最新的教材。第二層含義是編程規范,如果你使用了大量的獨特演算法,富有個性的變數及方法的命名方式;同時,沒給程序作注釋,以顯示你的編程功底是多麼的深厚。這樣的代碼別人看起來像天書,要理解談何容易,更不用說維護了,必然會被無情地掃入垃圾堆。Java編碼規范到此查看或下載http://Java.sun.com/docs/codeconv/,中文的也有,啊,還要問我在哪,請參考3.2.2節。
3.2.5 不局限於Java
很不幸,很幸運,要學習的東西還有很多。不幸的是因為要學的東西太多且多變,沒時間陪老婆家人或女朋友,導致身心疲憊,嚴重者甚至導致抑鬱症。幸運的是別人要搶你飯碗絕非易事,他們或她們需要付出很多才能達成心願。
Java不要孤立地去學習,需要綜合學習數據結構、OOP、軟體工程、UML、網路編程、資料庫技術等知識,用橫向縱向的比較聯想的方式去學習會更有效。如學習Java集合的時候找數據結構的書看看;學JDBC的時候復習資料庫技術;採取的依然是"需要的時候再學"的原則。
4.結束語
需要強調的是,學習軟體開發確實有一定的難度,也很辛苦,需要付出很多努力,但千萬不要半途而廢。本文如果能對一直徘徊在Java神殿之外的朋友有所幫助的話,筆者也欣慰了。哈哈,怎麼聽起來老氣橫秋呀?沒辦法,在電腦的長期輻射之下,都快變成小老頭了。最後奉勸各位程序員尤其是MM程序員,完成工作後趕快遠離電腦,據《胡播亂報》報道,電腦輻射會在白皙的皮膚上面點綴一些小黑點,看起來鮮艷無比…… 拖起明天的夢想還得靠自己!
❾ 如何才能修煉成一名不可替代的程序員,避免裁員危機
程序員,就是從事程序開發、程序設計、程序維護的專業人士。
作為一種專業性極強的技術性專業,程序員的工作難度非常高,只有專業技能水平高超的人才能在這個領域獲得良好的發展前景。……那些實力不足的人,只能被最終淘汰。
因此,要想在程序員這一行里成為不可替代的人,避免自己被淘汰出局的情況,就必須具備以下幾方面能力:
1,高人一籌的專業技能。
在職場上,要想確保自身生存,就必須具備一項專業技能。……要想確保自己不被淘汰,就必須具備高人一籌的專業技能水平。
因此,要想讓自己成為不可替代的程序員,要想讓自己避免被淘汰的情況,就必須確保自己的專業技能水平高人一籌。
2,強大的羅輯思維能力。
程序,是一個邏輯性極強的系統。
一個程序的各個部分之間、各項功能之間,都存在著極強的關聯,也擁有著非常強的邏輯關系。
因此,要想編寫出性能優異的程序,就必須擁有極強的邏輯思維能力。……這是確保自己擁有更強實力、確保自己不被淘汰的重要能力。
3,高超的數學水平。
程序的表象,是一段代碼。而其核心,則是數學模型,是具體的演算法。……只有具備高超的數學水平,才有能力編寫出演算法精妙、邏輯嚴謹的程序來。……這是自己具備更高水準的關鍵因素。也是自己高人一籌,不可替代的關鍵因素。
4,精通至少一門編程語言。
編程語言是程序員在編程時所用的工具。……只有熟練掌握手中的工具,才能讓自己編寫出優秀的軟體。……編程語言有很多種,一個程序員不可能面面俱到。……但是一個合格的程序員必須掌握至少一門編程語言,這就是自己工作時最得力的工具。……運用這個工具,自己就可以編寫出優秀的軟體,就可以獲得更好的業績,最終成為不可替代的優秀人才了。……自己也就不可能被淘汰了……
❿ 程序員老了怎麼辦
很多人都是說程序猿是吃青春飯的,上了年紀的程序猿將會面臨著腦力或者體力不支的問題,導致一些老程序猿不再被公司重用或者重視,甚至面臨失業的危險。然而我卻不這么認為,其實程序猿老了未必就沒有用了,很多老程序還是大用用武之地的。