Ⅰ 如何成為一個優秀的程序員
講幾個小的方面吧。
批評還是啟發?
代碼審查是一個不錯但很少用的想法。在一個團隊里,優秀的程序員另一個任務就是要指導經驗比你少的程序員,但是主要以指導和啟發為主,不是貶低和公開批評,因為消極的態度不利於接下來團隊合作的開展。
學會分享
搞編程的沒有去逛一些論壇都不好意思說自己是干編程這個行業的。優秀的程序員往往會在這些論壇幫助別人,而實質上,輸出就是最好的學習。在一個團隊中也是一樣,幫助他人解決問題收獲更多,你也將不斷地得到成長。
勞逸結合
每天工作 24 小時不會讓你更有效率!不少程序員年紀輕輕就有腰椎盤突出、頸椎病、肩周炎、腰肌勞損、圓肩駝背等職業病。程序員們需要加強鍛煉,運動不僅僅可以加強肌肉的力量和耐力,而且也能夠活動身體的各個關節,有效緩解長時間保持一個動作導致局部肌肉過勞。
另外,編程是一項艱苦的腦力勞動活;有時你的大腦確實需要休息一下,休息是為了更好的工作。否則,你的工作質量將大打折扣。業余時間養成一項自己的個人愛好,確保自己可以放鬆並沉浸其中。如果是球類運動,效果更好,它將讓你保持旺盛的精力和活力。
不要閉門造車
留意網路各種平台,學習新語言和框架、參與討論以及看看同行在干什麼。多關注業界在干什麼,這將讓你的視野更加廣闊,不致於為了編程而編程。
Ⅱ 如何自學成為程序員
如何學習自學編程的方式最好的莫過於在網路上面查找資源。
目前,網路上電腦資源多不勝數。其中有很多都是基礎到精通的視頻教程。通過視頻講解。讓你明白重點知識。你通過查找一套適合自己的視頻。然後看完是基本。
這里推薦幾個可以在線學習的好網站:慕課、極客學院、傳智播客、如朋網、網易公開課等等做筆記在進行看視頻的過程中,一定注意要記筆記。
對視頻中重點的部分進行截圖,並加以文字解釋。就形成了自己的筆記。這些筆記對於你來說很重要。通過記筆記的形式,你就不需要重新觀看視頻了。只需要復習的時候查看筆記就夠了,這樣就大大的節約了時間。
下面介紹一個記筆記的好軟體:CherryTree多練習代碼在視頻中講解的代碼,我認為你至少需要自己寫三遍以上。在寫代碼的時候,就用到了上面寫的筆記了。通過看筆記截圖,即可自己慢慢摸索寫出來代碼。當然練習到一定程度,就需要你適當的做個項目。鞏固自己的知識。
程序員必備技能
1、熟練開發工具
做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點推薦的開發工具,C/C++以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C++編寫。
而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVAOne很可能會成為未來的主流開發工具之一。
其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,CBuilder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。
2、熟知資料庫
為什麼資料庫是如此重要?作為程序員,他們自然有自己的理由:很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。
雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL,Postgres等。
3、了解操作系統
當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。
Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。懂得網路協議TCP/IP。
在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課。
網路技術已改變了軟體運行的模式,從最早的客戶/伺服器結構,到今天的WEBServices,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,深入掌握TCP/IP協議是非常必要的。
至少,需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。
4、明白DCOM/CORBA/XML/WEBServices存在的意義
隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。
XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布式計算的基石之一。
5、不要將軟體工程與CMM分開
大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,一個編程高手並不一定是一個優秀的程序員,一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟體工程思想有機結合。
編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能,如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。
6、需求理解能力
程序員要能正確理解任務單中描述的需求。
在這里要明確一點,程序員不僅僅要注意到軟體的功能需求,還應注意軟體的性能需求,要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有著兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。
7、模塊化思維能力
作為一個優秀的程序員,他的思想不能局限在當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。
這樣做可以使代碼能重復利用,減少重復的勞動,也能使系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。
Ⅲ 如何成為一個程序員
如果想做一個程序員,在沒有基礎的情況下,買書自學是一個辦法。但是大多數人會因為沒有相關的基礎知識,導致看書看得一知半解,因為有不同的語言,不同的開發環境,在你不了解的時候,買的書不一定合適。
比較速成的辦法還是去報名一個培訓班,系統的學習一下基礎知識,然後選擇一個發展方向,再具體的針對性的買點書籍來學習。
程序員是一個不停學習的崗位,你需要每天除了工作以外,花一定的時間了解新的技術或正在使用的技術的原理,這樣才能一直提高,不然,可能會被淘汰。在你了解代碼以後,你還需要了解邏輯,就等於你要熟悉你所從事的這個領域及行業。
注意事項:
不管任何行業和任何工作,概念的理解都是成功的關鍵。除非你有強大的概念基礎,否則就不可能成為一名優秀的程序員。
核心概念的理解有助於你用最佳的方式設計和實施解決方案。如果你覺得你現在還沒有好好掌握關於核心計算機科學和編程語言的特定概念,那麼現在回過頭去重新學習這些基礎知識猶未晚矣。
Ⅳ 北大青鳥設計培訓:如何成為一名優秀的程序員
如何成為優秀的程序員,這個問題我也曾經問過我自己,可惜我做的還不夠好,經常這么反問自己的話,會提升你對開發流程工藝思考,同時沒事也可以問問身邊的是程序員的同事,我相信你們會引發一些有趣的討論,但是南昌計算機學習http://www.kmbdqn.cn/個人認為掌握下面五個技能非常重要,看看吧,為了我們都成為優秀的程序員。
1,問題分解編程很大程度上是來解決問題,但是寫代碼之前,程序員需要弄清楚如何解決這些問題。
一個優秀的程序員會嘗試把這些問題進行拆分,然後一部分一部分去開發,直到每個部分都可以很容易的解決。
但是僅僅做到這些還不夠,一個優秀的程序員會發明一種工作模式,利用現有的標准化邏輯去開發,便於實現和測試。
一些很復雜的程序,復雜部分的原因是代碼實施不能完美的解決問題,而且代碼難以理解。
當遇到難題建模,曾經采訪優秀的開發者:「很少有程序是不能修改的,但是如果你看一段代碼,它往往看起來很復雜,很多人覺得無從下手,他們往往這是缺乏思考的一種表現,而我會捲起袖子試圖修復它,慢慢的其實這些都不算困難,而且很容易。
」2,情景分析好的開發人員有能力考慮許多不同的場景。
這既適用於程序中的邏輯,以及內部和外部事件可能發生。
考慮不同的路徑的邏輯,他們會問這樣的問題:如果這個論點是零?如果這些條件是真的嗎?這是線程安全的方法嗎?發現軟體需要處理什麼類型的事件,他們會問這樣的問題:如果這個隊列變得滿了嗎?如果沒有響應這個請求嗎?如果其他伺服器重啟,這個伺服器重新啟動嗎?優秀的程序員會問自己:「這怎麼能算結束呢?」說明他們還想測試自己的能力,相比之下,沒有經驗的程序員大多隻考慮自己,能夠暫時解決問題就行,當然大部分不可避免的意外情況發生,他們都有方法解決。
3,所示命名編程在很大程度上由命名的事情:類、方法和變數。
如果做得好,程序變得很大程度上是在自我記錄,這意味著程序的功能是非常清楚的執行源代碼。
自我記錄的代碼的一個作用是,它自然會導致許多較小的差錯,而不是幾個很大的功能缺陷,因為這些優秀的代碼將存在很多的地方。
想出好名字要困難得多。
我喜歡一句話:「計算機科學中只有兩個艱難的事:緩存失效和命名的東西。
「部分命名是很困難的,因為它需要清晰的在腦海中每個名字代表什麼。
有時這是不清楚,但隨著開發的進行才會顯現。
因此,重命名命名一樣重要。
」命名的東西也還包括提出的概念,以及這些概念應該叫什麼。
通過考慮周全,明顯命名概念一致地使用,編寫的程序才會變得更容易。
Ⅳ 怎麼樣才能成為一個軟體工程師開發高手
信息技術的發展時間雖然不長,但其爆炸式的發展速度使信息技術迅速覆蓋社會和人類生活的各個角落。程序員們是這場信息化浪潮的見證者之一,更是其中的主要參與者,這是時代賦予每個程序員的機會和責任。
信息技術的更新速度是驚人的,程序員的職業生涯則是一個要求不斷學習的過程,永遠不能固步自封。本人在工作期間曾看見過很多程序員只要有閑暇時間就瀏覽一些沒有太大作用的網頁,在網上聊天,打游戲,浪費了大量的時間,十分不可取。而另外一種情況是,IT技術的日新月異使很多程序員眼花繚亂,什麼都想學,卻又不知從何學起,今天看看這個,明天學學那個,貪多不熟。
雖然IT技術發展迅速,但很多技術都是有規律可循,一些基本的概念、原理和方法還很通用,可以舉一反三。本人根據自己的體會和經驗,向那些剛剛踏入IT行業的新程序員們或正在迷茫的程序員們推薦程序員必須掌握的七種武器,有了這七種武器,雖不敢說笑傲江湖,但將自己立於不敗之地還是可以的。
第一種武器:開發工具
至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和JAVA是我重點推薦的開發工具,C/C++以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C++編寫。而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而本人對SUN公司的「網路即計算機」的概念相當欣賞,並相信JAVA即其相關的技術集JAVA One會成為未來的主流開發工具之一。其次,如果能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,C++ Builder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。
第二種武器:資料庫
為什麼資料庫是如此重要?很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL, Postgres等。
第三種武器:操作系統
當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。只有對操作系統有一定的了解後,你會發現自己上了一個新的台階。
第四種武器:網路協議TCP/IP
在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課,網路技術已改變了軟體運行的模式,從最早的客戶/伺服器結構,到今天的WEB Services,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,所以,深入掌握TCP/IP協議是非常必要的。至少,你需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。
第五種武器:DCOM/CORBA/XML/WEB Services
隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間件平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。程序員需要做的不僅僅是利用商業的開發平台來開發軟體,而是要理解這些技術的初衷,即為什麼需要這項技術,如果你能理解了這一點,再回頭看這些技術的具體實現,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布計算的基石之一。
第六種武器:軟體工程與CMM
現代大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,一個編程高手並不一定是一個優秀的程序員,一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟體工程思想有機結合,編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能,如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。一句話可以概括我的看法:「創意無限,流程保證」。
第七種武器:強烈的好奇心
什麼才是一個程序員的終極武器呢,那就是強烈的好奇心和學習精神。沒有比強烈的好奇心和學習精神更好的武器了,它是程序員們永攀高峰的源泉和動力所在
Ⅵ 如何成為一名高級程序員
程序員可以分為很多種,像Unix程序員、Windows程序員,或是C++程序員、Delphi程序員,等等。今天我想談的是Web程序員,一名真正的Web程序員應該懂得那些方面的知識,應該注意學習哪些東西。 x0dx0ax0dx0a也許有些朋友會說,我知道Asp、Jsp,會做網站、會做bbs,這應該叫Web程序員了吧。確實,我承認,這些技術是一名Web程序員應該具備的;但是,你如果僅懂得這些,卻只能叫做Asp程序員、Jsp程序員,而不是真正意義上的Web程序員。現在的世界是屬於Internet的,大部分的應用基於Internet,大家可以想想,像Yahoo、Microsoft、Amazon那樣的網站,其訪問量之大、應用之復雜,需要什麼樣的技術才可以支撐,難道僅僅是硬體的功勞么。 x0dx0ax0dx0a我想在Windows平台下來談談Web程序員應該掌握的技術 x0dx0ax0dx0a1. 首先,就是上面提到的各種腳本,asp、jsp、php等等,這些東西大同小異,基本可以舉一反三。 x0dx0ax0dx0a2. 資料庫, x0dx0ax0dx0a相信做Web的人肯定用過,像Access、Sql Server、Oracle。很多人會用各種資料庫,但是僅限於寫一些sql,select、update、insert,用ADO來操作,如果這樣,就算會用100種資料庫又有什麼用呢? x0dx0ax0dx0a你應該考慮用戶量、訪問速度、內存消耗,這些東西和你的sql密切相關,我經常見到很多分頁程序根本不去考慮資料庫中有多少條數據,統統select出來,很明顯,當你從資料庫中查出1萬條數據和100條數據,佔用的內存是不同的。 x0dx0ax0dx0a另外,資料庫連接池和事務機制是非常重要的,應該知道資料庫用什麼來保證事務,連接池如何實現,這些都是商務應用的關鍵。譬如,目前很多的應用服務,像weblogic、MTS,都包含事務處理,可以說好的事務處理決定了他們的競爭力。 x0dx0ax0dx0a3. 組件技術 x0dx0ax0dx0a我想是現在的Web應用推動了組件技術的發展。以前,從老式的靜態庫、動態庫(dll),到現在的COM/DCOM,再到正在興起中的Web Service;從單機調用,到基於內部網的分布式調用,到現在基於Internet的分布式計算。現在的應用都是基於組件的n層結構,最明顯的就是COM和JavaBean。 x0dx0ax0dx0a這些東西體現了軟體架構的發展,以前是基於單機的應用,然後是C/S結構,到現在的B/S結構。我記得李維曾經說過,程序員一定要注意軟體技術的發展趨勢,只有這樣,才不至於被淹沒在技術的洪流中。我想,作為Web程序員,一定要明白COM的原理,如何實現這種調用、如何進行分布式調用。說實話,我覺得COM還是比較復雜的,否則微軟為什麼要提供ATL和VB呢,要搞明白,應該學學C++,因為VC中提供的ATL庫可以很明顯的說明COM的內部運行機制。 x0dx0ax0dx0a4. 網路技術 x0dx0ax0dx0a這可以說是Web程序員最應該懂得東西。起碼,應該知道Web伺服器的機制,要明白Http協議。就拿IIS來說,要懂得web應用程序運行的進程安全和IIS的關系,懂得ISApi的作用。 x0dx0ax0dx0a如果有時間,就看看TCP/IP,看看winsock,這些都是底層的網路的東西。 x0dx0ax0dx0a我所說的這些都是基於微軟技術下的東西,其他的像Java方面的東西都可以對照參考,就不多說了,這也是我這幾年來的一些心得。總之,學海無涯,每當接觸一些新的東西,就會發現自己的不足,同時也就覺得基礎知識的重要。說實話,像我們做應用開發,用別人的東西,在現在這種情況下,新的技術層出不窮,稍不注意就會被甩開,這也是沒有辦法的事情。
Ⅶ 怎麼做一個好的程序員
1. 學會看代碼
大多數程序員都只願意用自己寫的代碼,但高手一般可以輕易調用別人寫的代碼。表面看上去是工作習慣不同,
但實際上是能力上的差別。看代碼要比寫代碼難很多倍。
2. 復習
程序員一般都很忙, 手上有永遠也做不完的活兒。但在某些公司里,
你只是在反復做同樣的事。偶爾放下手上的活兒,留下一部分時間來分析自己的弱點,更改壞習慣,看新書, 或學習新語言。
3. 做個人項目
工作中的編程一般只能讓你熟悉一部分技術, 導致漏洞的形成。這就好像你長期一個人在自己後院練習投籃, 但第一次打比賽才(在慘敗中)發些原來還需要傳球,
防守, 強籃板這些概念。
Facebook喜歡僱傭所謂的 「full stack programmer」,就是一個人從設計,到交互,到html,css,javascript,
server,sql, 架構,和數據統計都能做。成為full stack programmer最好的方式就是不斷做個人項目。
4. 問答網站
問問題和回答問題都是很好的學習方式。 有的時候寫出一個好問題, 比寫出解答次問題所需要的代碼還難。寫問題可以幫你整理自己的思維邏輯。
5. 加入一個好團隊
最好的進步方式就是跟比自己強的人一起做事。高手都願意聚在一起,所以很多會選擇去優秀的早期創業公司。
Ⅷ 如何才能修煉成一名不可替代的程序員,避免裁員危機
(1)專業能力程序員作為專業性較高的人才,對其專業能力要求很高,這個問題下很多程序員大佬也紛紛表示:「代碼是程序員的立身之本啊,所以一定要錘煉好代碼基本功,扎扎實實的能力練出來了,你就是公司不可替代的人兒~」在技術說話的互聯網公司,要保持一個不可替代的地位,實力是最基礎的一環,需要不斷地學習新技術,才能跟上技術發展的腳步,完成從一名普通程序員到精英程序員的蛻變。
(2)性格特質在外人看來,程序員就是整天和bug打交道的人,這樣的人需要耐得住寂寞,但同時也要腦筋足夠靈活,才能更好地應對各種bug,並且不斷開發出新的產品。同時還要有責任心,對自己的代碼負責,對自己的產品負責。
(3)發展需求除此以外,因為要不斷地發展自身能力以提升自己的核心競爭力,所以要做一名「不可替代」的程序員還要有一定的競爭意識,與自己競爭,督促自己進步等。以上僅僅是比較概括性的特質,具體到不同公司的不同程序員崗位,還會有不同的層級要求,需要進行一定的調整。
如今市場不景氣,企業用人大大收縮,再加上一批小企業的倒下,造成就業壓力越來越大,但我認為這是接下來的常態。前幾年的經濟「泡沫式」過渡發展,互聯網也跑的太快,造成大量的用工需求。一些其他行業的從業者培訓下就能改行做程序員,造成這個行業的人五花八門,能力參差不齊。寒冬的到來,必將對市場人力的重新洗牌。互聯網企業將會對程序員的要求越來越高,並促使IT從業者更加專業化。
Ⅸ 如何成為一個牛逼的程序員
如果要想成為一個厲害的程序員,涉及到的方面比較多。
首先要了解計算機的組成原理、結構體系,還要熟練掌握多種編程語言,以及常見的演算法。
還需要熟悉各種軟體知識:網路、圖形圖像、數據結構、編譯原理等
同時熟悉相關的專業知識,這個得看所在行業了。如在電力行業的軟體需要對電力調度、保護設備等了如指掌。
這些,需要投入大量的時間進行學習。需要毅力才可以實現,不是說說就行的。