⑴ 系統程序員怎樣把代碼寫得又快又好
很多初學者包括一些有經驗的程序員,在敲完代碼的最後一個字元後,馬上開始編譯和運行,迫不急待的想看到自己的工作成果。快速反饋有助於滿足自己的成就感,但是同時也會帶來一些問題:
讓編譯器幫你檢查語法錯誤可以省些時間,但程序員往往太專注這些錯誤了,以為改完這些錯誤就萬事大吉了。其實不然,很多錯誤編譯器是發現不了的,像內存錯誤和線程死鎖等等,這些錯誤可能逃過簡單的測試而遺留在代碼中,直到集成測試或者軟體發布之後才暴露出來,那時就要花更大代價去修改它們了。
修改完編譯錯誤之後就是運行程序了,運行起來有錯誤,就輪到調試器上場了。花了不少時間去調試,發現無非是些低級錯誤,或許你會自責自己粗心大意,但是下次可能還是犯同樣的錯誤。更嚴重的是這種debug&fix的方法,往往是頭痛醫頭腳痛醫腳,導致低質量的軟體。
讓編譯器幫你檢查語法錯誤,讓調試器幫你查BUG,這是天經地義的事猛灶,但這確實是又慢又爛的方法。就像你要到神知行離家東邊1000米的地方開會,結果你往西邊走,又是坐車又是搭飛機,花了一周時間,也繞著地球轉了一周,終於到了會議室,你還大發感慨說,現代的交通工具真是發達啊。其實你往東走,走路也只要十多分鍾就到了。不管你的調試技巧有多高,都不如一次性寫好更高效。
下面是我在閱讀自己代碼時的一些方法:
檢查常見錯誤
第一遍閱讀時主要關注語法錯誤、代碼排版和命名規則等等問題,只要看不順眼就修改它們。讀完之後,你的代碼很少有低級錯誤,看起來也比較干凈清爽。第二遍重點關注常見編程錯誤,比如內存泄露和可能的越界訪問,變數沒有初始化,函數忘記返回值等等,在後面的章節中,我會介紹這些常見錯誤,避免這些錯誤可以為你省大量的時間。如果有時間,在測試完成之後,還可以考慮是否有更好的實現方法,甚至嘗試重新去實現它們。說了讀者可能不相信,在學習編程的前幾年,我經常重寫整個模塊,只我覺得能做得更好,能驗證我的一些想法,或提高我的編程能力,即使連續幾天加班到晚上十一點,我也要重寫它們。
模擬計算機執行
常見錯誤是比較死的東西,按照檢查列表一條一條的做就行了。有些邏輯通常不是這么直觀的,這時可以自己模擬計算機去執行,假想你自己是計算機,讀入這些代碼時你會怎麼處理。北大青鳥http://www.kmbdqn.cn/認為這種方法能有效的完善我們的思路,考慮不同的輸入數據,各游嘩種邊界值,這能幫助我們想到一些沒有處理的情況,讓程序的邏輯更嚴謹。
⑵ 程序員笑話
程序員笑話集錦
程序員笑話集錦一:
1“咚咚咚”“誰?”過了很久……“java”
2換一個電燈泡需要幾個程序員?一個也不要,這是硬體問題。
3一個計算機系學生坐在樹下學習,又有一個計算機系學生騎著一輛很炫的自行車經過。前一個學生問道:“你的車從哪兒弄來的?”騎車的回答說:“我在外面學習的時候,一個漂亮的MM騎著車過來,她脫光了所有的衣服對我說,‘你想要什麼我都給你’。”“明智的選擇!你穿她的衣服肯定不合適的。”前一個學生說道。
4 怎麼使用面向對象的`方式變得富有?繼承。
5 要理解遞歸,你先要理解遞歸。
程序員笑話集錦二:
1、c程序員看不起c++程序員, c++程序員看不起java程序員, java程序員看不起c#程序員,c#程序員看不起美工, 周末了,美工帶著妹子出去約會了…一群SX程序員還在加班!
2、愛情就是他媽這么個過程:確定喜歡的類型是需求分析;初步接觸是概要設計,深入接觸是詳細設計;確定戀愛關系是編寫代碼;同居就是測試;吵架就是fix bug;上線就是結婚;項目經理離職是喪偶;項目升級是生孩子;項目下線就是他媽的離婚。
3、某游戲公司招了個日本人當主策,上班第一天就對下屬說:“我是個加班狂,希望大家配合我。”一個月之後他回日本了,最後一句話是:“你們這樣加班是不人道的。”
4、大學畢業三年,幾個同學在班群聊天,聊的全是技術,java,xml之類。另一同學家裡開廠,早早做上管理者,插不上嘴,心裡很不爽,過了半天插了一句:本公司因業務拓展,招聘門衛一名,要求:4年java開發經驗!頓時群里安靜了。
;⑶ 如何評價一個程序員是資深程序員
給他安排debug的任務,最好是崩潰問題或性能問題,觀察他面對大量復雜的代碼,在信息不全的的情況下,看他怎樣一步步抽絲剝繭縮小范圍,最終定位根本原因,並且給出一個不錯的fix。
如果能獨立完成工作,那麼以後必然成為高手。
如果經過少量提醒點撥也能完成,以後會是個不錯的程序員。
如果需要不斷提醒,只能按照我給的思路去反復測試調查,那麼只能說是個踏實肯乾的人,但天賦不高,可以委派些普通任務。
如果以上皆非,我基本就放棄對他的治療了。
之所以選崩潰或性能問題,因為這種問題沒什麼玄學,行就行、不行就不行,結果好驗證。
這種問題很考察基本功,可能對操作系統,語言,編譯鏈接器,內存,進線程,網路,存儲,圖形學都要有深刻理解,也很考驗邏輯推理能力,在一堆證據中構建合理的證據鏈推導出最終結果,懂得大膽假設小心求證的工作方法,也考察耐心和毅力,有的問題需要構建復雜的測試場景,還要反復多次測試才能重現,考察溝通能力,復雜的bug可能涉及多個部門開發組,可能還要對最終用戶做訪談。
⑷ 有哪些話一聽就知道一個程序員是個水貨
其實如果要嚴格說起來,工作經驗少於一年半的程序員基本上可以算是「假」的程序員。這里的「假」可以這樣來理解。
你的編程能力只有復制粘貼的水準
剛工作的程序員大致可以分為兩類人:1 高校畢業;2 培訓班出身。對於第一類的人來說,在讀書期間老師和學校教的內容都是基礎內容,而且要學的內容非常的多。但學校只讓你學廣,並沒有讓學生專研一門學科。畢竟學校並不能保證每個學生對某個方向一定感興趣,只能把基礎知識教給學生。讓學生自己去選擇自己感興趣的方向,自己自學。所以在校期間對於大部分學生來說,實戰能力基本為零,都是像剛重生在新手村,無知茫然,這也是許多企業愛招應屆生的原因。開始工作,基本只能靠谷歌、靠網路上網找代碼,復制粘貼。這段時間就比誰找代碼能力強了。而對於培訓的人來說更是如此。不要看你在培訓期間學習了非常多的編程知識,好像做了非常多的練習,甚至還自己寫了一個實戰項目。但這些都是在短時間內,靠著培訓老師手把手帶你們寫的。你只管跟著老師走就好,不懂的問下老師就行。你根本就沒有過自己的思考,就只懂:好!今天老師叫我們寫這個代碼!我們就寫!換個角度來看,培訓機構就像富士康工廠一樣,批量製造編程機器,沒有自己的思維。
想要擺脫「假」程序員的身份,你只有努力提升自己的編程水平,讓自己有更好的能力。在工作上能靠自己的實力,去完成分配的任務。你只有這樣才能提升,才能突破薪水的瓶頸,達到更高的層次。
⑸ 程序員是做什麼的
程序員一般的工作是從事程序開發、程序維護。
程序員是從事程序開發、程序維護的專業人員。一般將程序員分為程序設計人員和程序編碼人員,軟體從業人員分為初級程序員、中級程序員、高級程序員(現為軟體設計師)、系統分析員,系統架構師,測試工程師六大類。具體工作職責如下:
1、負責軟體項目的詳細設計、編碼和內部測試的組織實施,對小型軟體項目兼任系統分析工作,完成分配項目的實施和技術支持工作。
2、協助項目經理和相關人員同客戶進行溝通,保持良好的客戶關系。
3、參與需求調研、項目可行性分析、技術可行性分析和需求分析。
4、熟悉並熟練掌握交付軟體部開發的軟體項目的相關軟體技術。
5、負責向項目經理及時反饋軟體開發中的情況,並根據實際情況提出改進建議。
6、參與軟體開發和維護過程中重大技術問題的解決,參與軟體首次安裝調試、數據割接、用戶培訓和項目推廣。
7、負責相關技術文檔的擬訂。
8、負責對業務領域內的技術發展動態。
(5)fix程序員擴展閱讀:
職業要求
一般的程序員都有四年的在專業領域的學習,需要一個在程序領域的學士學位獲得者,不論是數學方面的還是工程方面的都是可以的。
大約有20%的人在這一領域的計算機科學和工程學擁有更高的學位。還有很小一部分程序員是自學的,盡管一些專業性的學校或者綜合大學可以提供,但是也需要一些別的途徑來提供相關的人才。
盡管學歷是比較重要的,但是公司經常把重點放在應聘者的工作經驗上,很多剛從大學畢業的大學生雖然有引人注目的學位證書,但是他們找不到工作是因為他們缺乏經驗。
一個程序員雖然沒有正規的學歷,但是如果一個人擁有程序設計的深厚知識背景或者豐富的工作經驗的話,那麼他的機會要比有學歷的應屆畢業生大得多。
對於職業程序員,另外一個重要的方面就是,程序員需要不斷提升自己的業務技術,他的技術必須一直保持在一個較高的水平,並且要不斷發展,程序員也要尋找貿易的機會,要參加研討會,在周刊上發表文章和接受職業教育,這些使程序員在自己的領域中分級或者不斷並排前進。
⑹ 普通程序員的工作生活是怎樣的
通常我們進入公司以後,不會是重頭開始一個項目,而是在已有代碼的基礎上進行維護或新功能的開發,所以必須「讀代碼」。
讀有「泛讀」,了解系統架構、功能模塊,對系統有一個大致的認識,各個功能能找到相應代碼實現的位置。
還有「精讀」,通常就是調試了,在fix bug的時候使用。此外還包括審核:一些規范一點的公司,都會有code review,也是精讀,但不用debug。
對於一個成熟的項目來說,讀代碼——而不是寫代碼——可能是最耗時間的工作了。
寫注釋文檔
為了減少「讀代碼」的時間,我們不得不花時間「寫注釋」「寫文檔」——這個程序員最深惡痛絕的工作。所以現在「爛代碼才需要注釋」的聲音變得越來越強,但無論如何,文檔還是要寫的。(注意:要能區分注釋和文檔)
了解需求
好了,終於到了「寫代碼」的時間了。
然而,在動手開始寫代碼之前,你必須花時間「了解需求」。和自己寫個小程序玩玩不同,在公司,你是為別人寫代碼,所以你一定要了解別人究竟想實現什麼功能。通常,這並沒有你想像的那麼簡單,需要反復的溝通。
當然,也有一些團隊和個人,不願意在這上面「浪費時間」,通常他們的下場就是不斷的寫代碼,然後不斷的改代碼,加班加點的做大量的無用功,整個公司怨氣沖天一地雞毛。