『壹』 一個優秀的程序員需要養成哪些良好的習慣
1. 理解編程語言的原理,遵循編程規范,並且能夠寫出有效的代碼,並學會優化代碼。
2. 估算解決問題所需要的時間,為自己定一個時間限制,加強程序自測試。
3. 做好版本控制,並及時備份代碼,經常檢查代碼,還要回顧以前寫過的代碼,看看能不能有新想法。
4. 動手編碼之前,先做好分析和設計。
5. 對項目文件歸類保存。可以把項目文件放到SOURCE、HEADERS、MAKE、EXES等不同的文件夾中。
6. 制定驗收規則,優秀出色的程序一定會編寫技術測試腳本,因為他們清楚要是省略了這一步會嚴重後果。
7. 重視,但不過於注重程序的設計模式。
8. 養成耐心、冷靜的好習慣,多向優秀的程序員學習。
『貳』 軟體設計原則有哪些
七大設計原則
開閉原則
依賴導倒置原則
單一職責原則
介面隔離原則
迪米特原則
里氏替換原則
合成復用原則
設計模式-創建型模式
工廠方法模式
抽象工廠模式
建造者模式
單例模式
原型模式
設計模式-結構性模式
適配器模式
裝飾者模式
代理模式
外觀模式
橋接模式
組合模式
享元模式
設計模式-行為型模式
策略模式
模板方法模式
觀察者模式
訪問者模式
迭代器模式
責任鏈模式
中介者模式
解釋器模式
狀態模式
命令模式
備忘錄模式
軟體設計原則介紹
所以,可以說軟體系統是連接需求分析、硬體系統以及使得系統實現的橋梁,對軟體的設計應首先了解軟體設計的設計原則。
設計原則
(1)可靠性
軟體系統的規模越做越大越加復雜,其可靠性越來越難保證。應用本身對系統運行的可靠性要求越來越高,軟體系統的可靠性也直接關繫到設計自身的聲譽和生存發展競爭能力。軟體可靠性意味著該軟體在測試運行過程中避免可能發生故障的能力,且一旦發生故障後,具有解脫和排除故障的能力。軟體可靠性和硬體可靠性本質區別在於:後者為物理機理的衰變和老化所致,而前者是由於設計和實現的錯誤所致。故軟體的可靠性必須在設計階段就確定,在生產和測試階段再考慮就困難了。
(2)健壯性
健壯性又稱魯棒性,是指軟體對於規范要求以外的輸入能夠判斷出這個輸入不符合規范要求,並能有合理的處理方式。軟體健壯性是一個比較模糊的概念,但是卻是非常重要的軟體外部量度標准。軟體設計的健壯與否直接反應了分析設計和編碼人員的水平。
(3)可修改性
要求以科學的方法設計軟體,使之有良好的結構和完備的文檔,系統性能易於調整。
(4)容易理解
軟體的可理解性是其可靠性和可修改性的前提。它並不僅僅是文檔清晰可讀的問題,更要求軟體本身具有簡單明了的結構。這在很大程度上取決於設計者的洞察力和創造性,以及對設計對象掌握得透徹程度,當然它還依賴於設計工具和方法的適當運用。
(5)程序簡便
(6)可測試性
可測試性就是設計一個適當的數據集合,用來測試所建立的系統,並保證系統得到全面的檢驗。
(7)效率性
軟體的效率性一般用程序的執行時間和所佔用的內存容量來度量。在達到原理要求功能指標的前提下,程序運行所需時間愈短和佔用存儲容量愈小,則效率愈高。
(8)標准化原則
在結構上實現開放,基於業界開放式標准,符合國家和信息產業部的規范。
(9)先進性
滿足客戶需求,系統性能可靠,易於維護。
(10)可擴展性
軟體設計完要留有升級介面和升級空間。對擴展開放,對修改關閉。
(11)安全性
安全性要求系統能夠保持用戶信息、操作等多方面的安全要求,同時系統本身也要能夠及時修復、處理各種安全漏洞,以提升安全性能。
『叄』 程序員該有哪些職業道德
只有一個道德問題,誠實和其他技術和貿易問題。
離職的時候,我沒有帶走一行代碼,我覺得這就是職業道德。
目前在國內IT行業,我覺得最可怕的不是問題,但當它人才流失技術(如源代碼、文檔等)也跟著一起,它是可用的,一些大公司,比如一些外國公司所做的相對較好,電腦上的所有外部設備介面已經被封鎖,不得INETERNET,即將離任的電子郵件或被監控,但不用說,這種管理方式,通常國內中小企業很難做到這一點,所以基本上依靠員工的意識和個性,就像心理醫生必須為病人保守秘密,作為程序員或者人才,當你從事產品的研發和接手一個項目,你必須與該產品或項目如源代碼、文檔、數據保密,這些東西是公司的商業秘密。
『肆』 你覺得作為一名程序員應該遵守的規則有哪些
1: 技術是你獲取解決方案的方法,而不是解決方案本身
2: 對代碼而言,「聰明」是「清晰」的敵人
3: 只在逼不得已的情況下才寫代碼
4: 注釋是魔鬼
5: 永遠要在你開始寫代碼前考慮好它是做什麼的
6: 在交付之前,測試你的代碼
7: 寫代碼是件快樂的事
『伍』 軟體工程師應該遵循的8條基本原則:1.公眾;2.顧客與僱主;3.產品;4.評判;5.管理;6.專業;7.同事;8.自
1、扎實的基礎
數據結構、離散數學、編譯原理,這些是所有計算機科學的基礎,如果不掌握它們,很難寫出高水平的程序。程序人人都會寫,但當你發現寫揭歡ǔ潭群苣言傯岣叩氖焙潁陀Ω孟胂朧遣皇且毓防囪ад廡┳罨鏡睦礪邸2灰豢季腿パOP,即使你再精通OOP,遇到一些基本演算法的時候可能也會束手無策。因此多讀一些計算機基礎理論方面的書籍是非常有必要的。
2、豐富的想像力
不要拘泥於固定的思維方式,遇到問題的時候要多想幾種解決問題的方案,試試別人從沒想過的方法。豐富的想像力是建立在豐富的知識的基礎上,除計算機以外,多涉獵其他的學科,比如天文、物理、數學等等。開闊的思維對程序員來說很重要。
3、最簡單的是最好的
這也許是所有科學都遵循的一條准則,復雜的質能轉換原理在愛因斯坦眼裡不過是一個簡單得不能再簡單的公式:E=mc2。簡單的方法更容易被人理解,更容易實現,也更容易維護。遇到問題時要優先考慮最簡單的方案,只有簡單方案不能滿足要求時再考慮復雜的方案。
4、不鑽牛角尖
當你遇到障礙的時候,不妨暫時遠離電腦,看看窗外的風景,聽聽輕音樂,和朋友聊聊天。當我遇到難題的時候會去玩游戲,當負責游戲的那部分大腦細胞極度亢奮的時候,負責編程的那部分大腦細胞就得到了充分的休息。當重新開始工作的時候,我會發現那些難題現在竟然可以迎刃而解。
5、對答案的渴求
人類自然科學的發展史就是一個渴求得到答案的過程,即使只能知道答案的一小部分也值得我們去付出。只要你堅定信念,一定要找到問題的答案,你才會付出精力去探索,即使最後沒有得到答案,在過程中你也會學到很多東西。
6、多與別人交流
三人行必有我師,也許在一次和別人不經意的談話中,就可以迸出靈感的火花。多上上網,看看別人對同一問題的看法,會給你很大的啟發。
7、良好的編程風格
注意養成良好的習慣,代碼的縮進編排,變數的命名規則要始終保持一致。大家都知道如何排除代碼中錯誤,卻往往忽視了對注釋的排錯。注釋是程序的一個重要組成部分,它可以使你的代碼更容易理解,而如果代碼已經清楚地表達了你的思想,就不必再加註釋了,如果注釋和代碼不一致,那就更加糟糕。
8、韌性和毅力
這也許是「高手」和一般程序員最大的區別。高手們並不是天才,他們是在無數個日日夜夜中磨煉出來的。成功能給我們帶來無比的喜悅,但過程卻是無比的枯燥乏味。你不妨做個測試,找個10000以內的素數表,把它們全都抄下來,然後再檢查三遍,如果能夠不間斷地完成這一工作,你就可以滿足這一條。
『陸』 要做好一個程序員要具備什麼條件
1、扎實的基礎
數據結構、離散數學、編譯原理,這些是所有計算機科學的基礎,如果不掌握它們,很難寫出高水平的程序。程序人人都會寫,但當你發現寫到一定程度很難再提高的時候,就應該想想是不是要回過頭來學學這些最基本的理論。不要一開始就去學OOP,即使你再精通OOP,遇到一些基本演算法的時候可能也會束手無策。因此多讀一些計算機基礎理論方面的書籍是非常有必要的。
2、豐富的想像力
不要拘泥於固定的思維方式,遇到問題的時候要多想幾種解決問題的方案,試試別人從沒想過的方法。豐富的想像力是建立在豐富的知識的基礎上,除計算機以外,多涉獵其他的學科,比如天文、物理、數學等等。開闊的思維對程序員來說很重要。
3、最簡單的是最好的
這也許是所有科學都遵循的一條准則,復雜的質能轉換原理在愛因斯坦眼裡不過是一個簡單得不能再簡單的公式:E=mc2。簡單的方法更容易被人理解,更容易實現,也更容易維護。遇到問題時要優先考慮最簡單的方案,只有簡單方案不能滿足要求時再考慮復雜的方案。
4、不鑽牛角尖
當你遇到障礙的時候,不妨暫時遠離電腦,看看窗外的風景,聽聽輕音樂,和朋友聊聊天。當我遇到難題的時候會去玩游戲,當負責游戲的那部分大腦細胞極度亢奮的時候,負責編程的那部分大腦細胞就得到了充分的休息。當重新開始工作的時候,我會發現那些難題現在竟然可以迎刃而解。
5、對答案的渴求
人類自然科學的發展史就是一個渴求得到答案的過程,即使只能知道答案的一小部分也值得我們去付出。只要你堅定信念,一定要找到問題的答案,你才會付出精力去探索,即使最後沒有得到答案,在過程中你也會學到很多東西。
『柒』 程序員在工作中到底有哪些規則是需要注意得
你做得太賣力了。領導安排給你一周的工作量,你一天就趕出來,讓UI怎麼混?你開發都做那麼快,那UI豈不是要比你更有效率?加上你們領導又不太懂這行,肯定在工作安排上給UI壓力了。那人家對你有意見是再正常不過了,哪怕你再能幹,也不用這么拚命趕。安排你一周,你估算一下進度四~五天交出來會比較合適,領導會覺得你進度把控得當,而且還有可以小修小改的餘地。否則你效率那麼高,讓他們怎麼安排工作…… 不過這家公司老是做這么簡單的東西,其實對你個人發展是很不利的。
『捌』 程序員的基本要求是啥
程序員是從事程序開發、維護的專業人員。一般將程序員分為程序設計人員和程序編碼人員,但兩者的界限並不非常清楚,特別是在中國。軟體從業人員分為初級程序員、中級程序員、高級程序員(現為軟體設計師)、系統分析員,系統架構師,測試工程師六大類.
崗位職責
1、對項目經理負責,負責軟體項目的詳細設計、編碼和內部測試的組織實施,對小型軟體項目兼任系統分析工作,完成分配項目的實施和技術支持工作。
2、協助項目經理和相關人員同客戶進行溝通,保持良好的客戶關系。
3、參與需求調研、項目可行性分析、技術可行性分析和需求分析。
4、熟悉並熟練掌握交付軟體部開發的軟體項目的相關軟體技術。
5、負責向項目經理及時反饋軟體開發中的情況,並根據實際情況提出改進建議。
6、參與軟體開發和維護過程中重大技術問題的解決,參與軟體首次安裝調試、數據割接、用戶培訓和項目推廣。
7、負責相關技術文檔的擬訂。
8、負責對業務領域內的技術發展動態進行分析研究。
職業要求
一般的程序員都有四年的在專業領域的學習,需要一個在程序領域的學士學位獲得者,不論是數學方面的還是工程方面的都是可以的。
大約有20%的人在這一領域的計算機科學和工程學擁有更高的學位。還有很小一部分程序員是自學的,盡管一些專業性的學校或者綜合大學可以提供,但是也需要一些別的途徑來提供相關的人才。盡管學歷是比較重要的,但是公司經常把重點放在應聘者的工作經驗上,很多剛從大學畢業的大學生雖然有引人注目的學位證書,但是他們找不到工作是因為他們缺乏經驗。一個程序員雖然沒有正規的學歷,但是如果一個人擁有程序設計的深厚知識背景或者豐富的工作經驗的話,那麼他的機會要比有學歷的應屆畢業生大得多。所以要盡量抓住有用的工作和實習機會,這樣的話在畢業後你就會發現,多實習讓你有更多的經驗,在找工作的時候就有更多的機會。
對於職業程序員,另外一個重要的方面就是,程序員需要不斷提升自己的業務技術,他的技術必須一直保持在一個較高的水平,並且要不斷發展,程序員也要尋找貿易的機會,要參加研討會,在周刊上發表文章和接受職業教育,這些使程序員在自己的領域中分級或者不斷並排前進。
做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點推薦的開發工具,C/C++以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C++編寫。而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVAOne很可能會成為未來的主流開發工具之一。其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,CBuilder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。
熟知資料庫
為什麼資料庫是如此重要?作為程序員,他們自然有自己的理由:很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL,Postgres等。
了解操作系統
當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。懂得網路協議TCP/IP。
在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課,網路技術已改變了軟體運行的模式,從最早的客戶/伺服器結構,到今天的WEBServices,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,深入掌握TCP/IP協議是非常必要的。至少,需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。
明白DCOM/CORBA/XML/WEBServices存在的意義
隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布式計算的基石之一。
不要將軟體工程與CMM分開
大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,一個編程高手並不一定是一個優秀的程序員,一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟體工程思想有機結合,編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能,如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。
需求理解能力
程序員要能正確理解任務單中描述的需求。在這里要明確一點,程序員不僅僅要注意到軟體的功能需求,還應注意軟體的性能需求,要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有著兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。
模塊化思維能力作為一個優秀的程序員,他的思想不能局限在當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。這樣做可以使代碼能重復利用,減少重復的勞動,也能使系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。
『玖』 為建立良好的編程風格應遵循什麼原則
一、程序內部文檔應具備的規則
1、標識符應含有含義鮮明的文字。
含義鮮明的文字,能正確地提示程序對象所代表的實體。這對於幫助閱讀者理解程序是非常重要的。如果用縮寫的形式,那麼縮寫規則應該一致,並且應該給每個名字加註解。在VB中,主要有如下的約定:
(一)對象命名約定
應該使用一致的前綴來命名對象,使人們容易識別對象的類型。例如我們常用控制項CommandButton(命令按鈕)可用cmd做為其前綴。Form以frm,Image以 img ,Label以 lbl,List Box 以lst,PictureBox以 pic,Timer以 tmr,等等,在我們編程的過程中,我們看到下面的名稱cmdExit我們就知道這一定是一個命令按鈕了。如果是第三方提供的控制項,我們的說明最好要清晰地標出製造商的名稱,以區別於我們的常用控制項。
(二)常量和變數命名約定
除了控制項以外,常量和變數也是我們編程過程中經常遇到的,我們和他們打交道也是通過名字。
(1)給變數加范圍前綴
變數按其作用范圍可分做三類,過程級,模塊級和全局,所以我們在編程的過程中應將三者加以區別。我們在使用變數時,為了更好地體現代碼重用和可維護原則,其定義范圍應盡量縮小,這樣將使我們的應用程序更加容易理解和易於控制。在VB應用程序中,只有當沒有其他方便途徑在窗體間共享數據時才使用全局變數。當使用全局變數時,在一個單一模塊中聲明它們,並按功能分組,給模塊取一個有意義的名字。較好的編碼習慣是盡可能地定模塊化的代碼。除了全局變數,過程和函數應該僅對傳遞給它們的的對象操作。在過程中使用的全局變數應該在過程起始處的聲明部分標識出來。變數的作用范圍前綴如下:全局 g(global) ,模塊級 m(model),本地過程不需要使用。例如:gintFlag,表示全局整型變數,mstrPassword,可表示模塊級字元型變數。
(2)聲明所有變數原則。聲明所有變數將會節省編程時間,鍵入錯誤將大大減少,我們可在程序開始寫上如下語句:
Option Explicit
該語句要求在程序中聲明所有變數。
(3)變數數據類型聲明。可通過下面的前綴來做為變數的數據類標志。
Boolean bln
Byte byt
Double dbl
Integer int
String str
(4)常量。常量的命名,可遵循與變數命名大體相同的原則。
(5)對變數和過程名作出描述。變數或過程名的主體應該使用大小寫混合的形式,並且應該足夠長以描述它的作用。而且,函數名應以一個動詞開頭。如JudgeDialog。
2、適當的註解
註解是程序員和程序讀者通信的重要手段,正確的註解非常有助於對程序的理解。VB中代碼註解約定如下:所有的過程和函數都應該以描述這段過程的功能的一段簡明的注釋開始,說明該程序是干什麼的,至於是如何做的,也就是編程的細節,最好不要包括。因為可能日後我們要修改程序,這樣做會帶來不必要的注釋維護工作,如果不修改,將提供誤導信息,可能成為錯誤的注釋。因為代碼本身和後面程序中的注釋將起到相應的說明作用。
過程中的注釋塊應該包括如下標題:
小節描述內容
目的該過程完成什麼
假設列出每個外部變數、控制項、打開文件或其他不明顯元素
效果列出每個被影響的外部變數、控制項或文件及其作用(只有當它不明顯時)
輸入每一個可能不明顯的參數。
返回函數返回值的說明
格式化代碼
(1)標準的,基於製表位的嵌套應該包括一個嵌注釋,來描述該變數的使用。
(2)變數、控制項及過程的命名應該足夠清楚,使得只有復雜的執行細節才需要嵌入注釋。
(3).bas 模塊包含包含工程的VB一般常量聲明,在其起始處,應包括程序的綜述,列舉主要數據對象,過程、演算法、對話、資料庫及系統需求。
3、程序的視覺組織
程序的視覺組織可用階梯式,結構化的程序風格對於我們實際編程也很有意義,可極大地改善代碼的可讀性。主要有代碼注釋和一致性縮進。
---------------------------------------------------------------------------------------------------------
二、數據說明
數據結構的組織和復雜程序是在設計期間就已經確定了的,然而數據說明的風格卻是在寫程序時確定的。為了使數據更容易理解和維護,有一些比較簡單的原則應該遵循。
1、數據說明的次序應該標准化。有次序就容易查閱。因此能夠加速測試、調試和維護的過程。當多個變數名在一個語句中說明時,應按字母順序排列這些變數。
2、數據結構復雜時,應加以說明其特點和實現方法。
---------------------------------------------------------------------------------------------------------
三、語句構造
語句構造原則:每個語句應該簡單而直接,不能為了提高效率而使程序變得過分復雜。下述規則的使用有助於語句簡單明了。
1、不要為了節省空間把多行語句寫在一行;
2、盡量避免復雜的條件測試;
3、盡量減少對「非」條件的測試;
4、避免大量使用循環嵌套和條件嵌套;
5、利用括弧使邏輯表達式或算術表達式的運算次序清晰直觀。
---------------------------------------------------------------------------------------------------------
四、輸入輸出
1、對所有輸入數據都進行檢驗;
2、檢查輸入項重要組合的合法性;
3、保持輸入格式簡單;
4、使用數據結束標志,不要要求用戶指定輸入數據的數目
5、明確提示互動式輸入的請求,詳細說明可用的選擇或邊界數值;
6、當語言對格式有嚴格要求時,應保持輸入格式一致
7、設計良好的輸出報表;
8、給所有輸出加標志;
---------------------------------------------------------------------------------------------------------
五、效率
效率三原則:
1、效率是性能的要求,需求分析時就應確定;
2、效率是靠設計提高的;
3、程序的效率和程序的簡單程序是一致的。
(一)運行時間
(1)寫程序前先簡化算術和邏輯表達式;
(2)他細研究嵌套的循環,以確定是否有語句從內層移到外層;
(3)盡量避免使用多維數組;
(4)盡量避免使用指針和復雜的表;
(5)使用執行時間短的算術運算;
(6)不要混合使用不同的數據類型;
(7)盡量使用整數運算和布爾表達式
(二)存儲器效率
(三)輸入輸出效率
如果用戶是為了給計算機提供輸入信息或為了理解計算機輸入的信息,所需花費的腦力勞動是經濟的,那麼,人和計算機之間的通信效率就高。簡單清晰是關鍵。
---------------------------------------------------------------------------------------------------------
六、小結
其實風格是非常重要的,程序的外表是我們交流中不可缺少的東西。象我們常說的紅顏命薄而歸疚於外表太靚,也常聽一些才子佳人的悲劇故事,提醒我們外表美而引出的一見鍾情的浪漫不可取。可讓人細想,才子佳人產生悲劇雖多,可也讓人找到過心動和美好的感覺,做為一個人,活了一輩子,連那種感覺都未體驗到,豈不比悲劇更加令人覺得可悲!編程亦然。
『拾』 有前途的程序員8個習慣,你擁有幾個
謹慎說Yes
在沒有搞清楚開發需求、任務工作量、團隊期望值之前,有前途的程序員不會輕易答應。特別是對於新人來說,比較急於表現自己,對於同事或者老闆的工作安排來者不拒,精神可嘉,方法不可取。承諾太多,會出現自己無法按時完成的情況,即使按時完成,也可能沒有達到別人的期望值,長期以往別人對你的失望會越來越多。
2敢於說No
看起來和第一條雷同,其實細究起來不一樣。第二條執行起來比第一條難得多。當遇到明顯不合理的要求時,可以考慮拒絕,前提是准備好了全面充分的理由。不要經常說No,但是一旦說了,就要切中要害。有前途的程序員不會悶頭幹活,知道自己的定位和團隊期望,分清楚哪些是不合理的要求,哪些是合理的要求,然後把明顯不合理的要求和領導溝通下,取得支持。
3構建自己的知識體系
在信息爆炸的年代,碎片化的知識很多,系統學習的時間越來越少,如果沒有自己的知識體系,很容易被淹沒在知識的海洋中,而且難以記憶。100分程序員推薦的做法,通過Wiki或者其他知識管理工具構建一個知識框架,大的分類可以包括軟技能、架構、語言、前端、後端等,小的分類可以更細化。
4培養大局觀觀念
程序員比較容易陷入的困境是專注於自己的一畝三分地,不關心團隊的進度和業績,也不關心軟體的整體架構和其他模塊。這種狀態長期下去沒有好處,特別是在大公司中,逐漸成長為一顆螺絲釘。100分程序員會在工作之餘,多看看其他人在做什麼,看看團隊的整體規劃,看看軟體系統的架構和說明文檔。對自己的工作更理解,而且知道為什麼這個產品應該這樣設計,為什麼領導應該這樣做規劃,這種大局觀非常有利於自己的職業生涯。
5代碼規范
程序員在新手時期需要培養良好的代碼規范。最直接的辦法,遵循公司已有的代碼規范(如果沒有類似的規定,也是醉了),從簡單的變數命名到模塊劃分,有些規則可以導入到編碼工具中,更多的部分需要自己體會和遵守。關於此方面的知識,最權威的書籍是《代碼大全》,別誤會,書名是個美麗的錯誤,裡面不是代碼集錦。對於新手來說,養成一個統一的編碼風格非常重要,是基礎一步。
6代碼審查
把這個單獨拎出來說,是因為對於程序員來說很重要。很多快速成長的公司沒有這個步驟,建議大家能夠堅持下來。讓別人審查自己的代碼,可以得到更多的反饋,也是和同事交流的好機會;審查別人的代碼,可以借鑒別人的經驗和思路。通常情況下,代碼審查比自己寫代碼的收獲更大,對於新手來說更有價值。只要你想做,不論形式是不是正規,都可以執行下去,最好形成團隊的習慣。
7一個時間段內只專注於一種類型的語言
如果你正在設計或開發網站,你將需要同時熟悉多種不同的語言。你可能會想同時學習所有的這些語言,特別是考慮到它們是如何相互關聯的。
我想,在某種程度上,這是不可避免的。但如果你真的想快速提高,我建議你專注於一個特定領域的專業知識。你想更好地利用CSS?把你的重點放在這一點。嘗試使用一個單一的HTML文檔只使用CSS實現不同的布局。 CSS Zen Garden 是一個使用相同布局實現不同頁面樣式非常棒的例子。你也可以通過查找元素的列表,並把精力集中在裡面。舉個例子來說,你熟悉CSS2,但想提升對 CSS3 的理解,你可以學習CSS3屬性並逐一的實現它們。你可以閱讀當前的 CSS3規范 ,還可以通過每個模塊的學習來了解它在瀏覽器上能(或不能)做什麼。
8通過注釋來寫邏輯
說到編碼,我有堅持很多原則和想法。其中一個就是,代碼中95%都是邏輯。另一個就是從人類語言到編程語言,邏輯並沒有改變。