成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

成為優秀碼農的十二項自我修養

譯文
新聞 前端
業界有著這樣一個普遍的誤解:要成為一名優秀的程序員,就必須掌握許多種編程語言和工具。實際情況是這樣嗎?也許本文給出的十二條建議會讓您或多或少地改變對此的認同感。

[[278185]]

【51CTO.com快譯】業界有著這樣一個普遍的誤解:要成為一名優秀的程序員,就必須掌握許多種編程語言和工具。實際情況是這樣嗎?也許下面給出的十二條建議會讓您或多或少地改變對此的認同感。

1.研究數據結構

計算機科學家Niklaus Wirth曾經有過一個著名論斷:“數據結構+算法=程序”。可見,數據結構是計算機程序的基礎,它們就像構造房屋的磚頭一樣。實際上,數據結構決定了程序將如何快速有效地解決問題。一旦使用了正確的數據結構,您的程序方案會變得既簡單,又省時。

那么,我們該如何研究數據結構呢?

  • 首先,選擇一本好書,以理解并掌握有關如何設計和執行數據結構。在此,我推薦Narasimha Karumanchi撰寫的《輕松實現數據結構和算法》(Data Structures and Algorithms Made Easy,https://amzn.to/34DxomJ)一書。這是C/C++版本的,您也可以通過鏈接:https://amzn.to/2NZ3W4E,找到其對應的Java版本。
  • 其次,嘗試從頭開始實現一些數據結構,例如:列表、堆棧和隊列。您不僅可以深刻地理解到它們的工作原理,而且還能夠通過“重新發明”這些數據結構來提高編程的技能。
  • 第三,試用那些由自己常用的編程語言所提供的內置數據結構(如果是Java,則對應的是Collections框架)。例如:使用不同的列表,通過索引來快速訪問各種元素;將集合用于元素的隨機排列;使用隊列進行producer-consumer的處理等。
  • 第四,在編寫代碼之前,請認真思考并選擇出最適合于解決問題的數據結構。當然,您不必重復造輪子,請盡量利用當前編程語言所提供的現有數據結構。

2.學習算法

如果說數據結構抽象出了問題的輸入和輸出的話,那么算法則決定了系統該如何解決問題。優秀的程序員一般都能善于使用經過實際檢驗的算法、并編寫出新的算法。

由于算法不僅需要良好的邏輯思維,而且需要一定的數學能力,因此它是編程中最難學習的部分之一。如果您能夠靈活運用自己擅長的各種算法,那么您將很容易從編程人群中脫穎而出。

不過,好消息是:您不必從頭開始發明各種算法,只需要學習和使用那些經過實際檢驗的實用算法便可。我建議您至少對如下基本算法有一定的了解:排序(快速排序、合并排序等),二進制搜索,遞歸,圖檢索,greedy,密碼學相關基礎知識,以及復雜的big O表示法。

那么,我們應該如何學習算法呢?除了上述提到的數​​據結構書籍之外,我建議您通過選讀《算法簡介》(Introduction to Algorithms,https://amzn.to/2NWOoyw)一書,以獲取相關的概念,并從頭開始實現那些熱門的算法。通常,您可以試著通過自行編程來模擬算法的運作原理。例如,您可以編寫一個程序,以可視化的方式顯示快速排序算法的工作方式。籍此,您不但可以學到許多相關概念,并且能夠大幅提高自己的編碼技能。

3.研究設計模式

雖說編程就是為問題尋找的某種解決方案,但是方案本身也可能會面臨各種問題與挑戰。例如,我們往往需要更好的性能、更靈活的設計、更可靠的體系結構、更少的錯誤、以及更少的潛在瓶頸。因此,設計模式是解決在軟件設計中各種常見問題的一種行之有效的解決方法。

要成為一名優秀的程序員,您應該能夠將恰當的設計模式應用到程序的技術實現上。那么我們應該如何學習設計模式呢?在此,我建議您從著名的設計類書籍:《設計模式:可重用的面向對象軟件的要素(C/C ++實現)》(Design Patterns: Elements of Reusable Object-Oriented Software,https://amzn.to/2Q6B2Cy)入手。如果您經常使用的是Java的話,我建議您閱讀《深入淺出設計模式》(Head First Design Patterns,https://amzn.to/2LtXu44)。通過學習,您可以迅速地掌握各種基礎的設計模式,其中包括factory、builder、strategy、command、template、facade、visitor、singleton。

當然,這是一個反復的過程,您只有通過閱讀案例,研究設計模式,編寫各種代碼,測試不同的模式,才能真正理解并自信地將自己的設計模式應用到程序之中。

4.讀書

您會堅持每年閱讀幾本編程書籍嗎?如果您的答案是少于三本的話,那么您該適當地反省一下了。畢竟,那些優秀的程序員都會表現出對新知識的如饑似渴。因此,我建議您每年至少閱讀五本書。這些書籍不但是過往經驗的集合,而且能夠拓寬您的視野,幫助您更快地獲取新知,以及向您展示如何以正確的方式實現軟件與產品的功能。

那么,我們應該閱讀哪些書籍呢?我推薦您從如下的必讀書目開始:

  • 程序員修煉之道(The Pragmatic Programmer,https://amzn.to/2Q6NUso)
  • 代碼大全(Code Complete,https://amzn.to/2IhRA4f)
  • 程序員職業規劃之道(The Passionate Programmer,https://amzn.to/2NXF0uz)
  • 軟件工藝(Software Craftmanship,https://amzn.to/2Lv7kTv)

而對于Java編程愛好者而言,《Java 高效編程》(Effective Java,https://amzn.to/2Q82yzr)也是必讀書目。擇日不如撞日,咱們現在就開始規劃一年內需要閱讀的書籍吧。

不過,您在閱讀時請記住如下兩點:

  • 不必從頭到尾地讀一本書。這樣您可能沒有足夠的時間和耐心。請試著采用一種明智的方式:首先只閱讀您需要的內容,然后在有時間的情況下閱讀其他的部分。例如,如果您需要應用Strategy模式,則應當重點閱讀涉及到該模式的章節;而如果您需要編寫servlet,則請關注servlet的相關章節。
  • 請認真做好筆記與練習,好腦筋不如爛筆頭,這樣會加深您的閱讀印象與效果。

5.閱讀各種博客與雜志

眾所周知:為了留存和吸引讀者,博客總是比書籍要更新得多。您可以在自己的細分市場與領域中找到一個權威性的博客或網站,堅持閱讀那里您所感興趣的各種帖子。例如:您可以通過每周閱讀一篇新文章的方式,讓自己與當今快速變化的技術保持更新。

在此,我會推薦DZone.com網站,這是一個最初為Java開發人員構建的社區。如今,它已成為了網絡中最大的軟件專業人員的交流社區之一。您可以在DZone上找到從Java到Javascript,從Web開發到敏捷(Agile)方法,從大數據到云計算等,幾乎所有類別的技術實用文章、見解和建議。

此外,您也可以訂閱自己相關領域的傳統或電子雜志。例如:對于Java而言,我建議您閱讀由Oracle發行的雙月刊Java Magazine(https://www.oracle.com/technetwork/java/javamagazine/index.html),它涉及到了Java技術管理的方方面面。

6.使用單元測試

在編程項目中,您可能聽說過“先寫測試,后寫代碼”的說法。我們需要將普通的需求轉換為非常具體的測試用例,然后編寫代碼,以實現業務邏輯,并確保它們能夠通過所有的測試。因此,我們應當通過編寫代碼,來測試每個程序的類,以及每個類的方法。

在編程界,大家普遍采用的是單元測試的方法。其好處包括:能夠及早地發現問題,促進代碼的更改與重構,簡化各種集成測試,為系統提供實時的文檔等方面。

單元測試直接導致了測試驅動開發(Test Driven Development,TDD)方法的出現。如今,TDD已被許多程序員運用到了多種編程語言中。

那么,我們應該如何學習單元測試呢?我建議您閱讀《單元測試的藝術》(The Art of Unit Testing,https://amzn.to/2NbbiCG)一書。它是有關單元測試與TDD方面極好的書籍。

而對于Java而言,由于JUnit是Java開發中非常受歡迎的測試框架之一,因此您可以從《Junit教程:設置、編寫與運行Java單元測試》(JUnit Tutorial: Setting Up, Writing, and Running Java Unit Tests,https://dzone.com/articles/junit-tutorial-setting-up-writing-and-running-java-1)開始。可以說,如果您從未使用過任何單元測試框架的話,那么您勢必缺少了軟件開發環節中的一項有力工具。

7.參與自由項目

以兼職或全職的方式參與自由項目,以提高編程的技能,是成為一名優秀程序員的快捷方法之一。簡而言之,自由項目意味著您可以在線查找項目,通過遠程工作的方式獲得在線的報酬。更棒的是,您可以選擇自己喜歡的項目類型,例如:PC端、Web應用、移動應用、設計、編程、測試、乃至某些硬件項目。這些都可以讓您在各個領域積累并拓展自己的編程經驗,提升面對挑戰的能力。

相比公司里的那些循規蹈矩的項目,自由項目雖然顯得更豐富、更精彩。但是,成為一名自由職業者可一點也不輕松。自由職業的市場往往充滿了激烈的競爭,您要面對成千上萬個其他自由職業者的爭搶與挑戰。因此,我強烈建議您最好在保留當前工作的前提下,逐漸參與或領取自由項目。

那么我們應該如何當一名自由職業者,開展自由項目呢?我建議您去訪問Freelancer.com網站。它是網絡上最大的自由職業市場之一,您可以在其中找到幾乎任何種類的工作。自2009年以來,我持續參加了該網站上的各類項目,目前已完成了142個項目,平均評分為4.8/5。當然,我從中也積累了豐富的編程經驗。

8.做編外項目

如果您不喜歡做自由項目的話,那么可以通過接手一些有趣的小項目,來打發空閑的時間。處理此類項目可幫助您提高各個階段的編程技能,其中包括:編碼、測試、設計、文檔編制、以及部署等方面。與您在公司參與到的主要工作相比,這些編外項目向您提供了軟件開發的整個過程,而不僅僅是編碼這一個階段。

那么我們應該如何參與編外項目呢?常言道:不積跬步,無以至千里。我的建議是“從小開始”。由于一開始您并沒有足夠的資源與經驗,因此最好不要馬上開展大型的項目。另外,您需要管理好自己的時間,一般以兩到三個月內完成一個項目為宜。

9.參加編程比賽

也許這是激發您自己成為一名優秀程序員的最具挑戰性的方式。為了參加比賽,您必須投入大量的時間和資源,并高度重視具體的開發環節,但是這對于提高您整體的編程技能是大有好處的。

請記住:重要的不是獲獎,而是在比賽中的成長。我曾經參加了幾次移動應用和桌面端游戲的競賽,雖然并未獲得任何獎勵,但是我承認自己在努力保證按時提交程序作品的時候,已經學到了不少的東西。

當然,您也可以嘗試一些著名的編程競賽,例如:微軟的Imagine Cup(https://www.imaginecup.com/);由IBM贊助的ACM-ICPC(https://icpc.baylor.edu/),以及TopCoder(https://www.topcoder.com/)。前兩個是面向學生的,而最后一個則是面向所有程序員的。另外,您還可以尋找并參與本國、本地區、乃至本公司舉辦的各類競賽。不要擔心自己是否擁有足夠的經驗,大膽注冊,一切隨緣!

10.進行規范性審查

代碼審查工作應當定期在項目團隊中開展。您既可以對他人的代碼進行規范性審查,也可以讓其他程序員來審查您的代碼。一系列的審查工作,不但能夠規范大家編寫程序代碼的習慣,而且有助于團隊成員之間相互學習、取長補短。

我建議您使用Sonar Qube(https://www.sonarqube.org/)之類的代碼分析工具。此工具可掃描整個代碼庫,并根據各種代碼的質量標準生成詳細的報告。一般而言,您需要持續修復代碼中的問題,直到該工具不再出現“紅色報警”為止。當然,某些代碼分析工具還能夠與您的IDE(如,Eclipse或NetBeans)很好地集成在一起,使得代碼的檢查過程更加順暢自然。

11.閱讀代碼

與檢查代碼不同的是,我們也需要花時間去認真閱讀其他程序員寫出的代碼。通過這一過程,您將學到更多的東西。正所謂:“一千個人心中有一千個哈姆雷特”,面對同樣的軟件需求,不同的編程專家會編寫出截然不同的代碼解決方案。只要您能夠潛下心來仔細閱讀,就能收獲到各種設計上的創新和編程上的經驗。

對于Java用戶而言,我建議您閱讀Java Collections框架(https://www.codejava.net/java-core/collections)的源代碼。您可以在JDK的安裝目錄下,通過src.zip文件找到它。當然,您也可以試著去閱讀諸如Spring、Hibernate、以及Struts等流行框架的源代碼。

12.開展與編程相關的教學

常言道:“最好的學習方法是進行教學”。您可以通過錄制視頻、撰寫文章、創作書籍、甚至是組織編程課程等形式,以幫助其他人學習編程。通常情況下,單純的編程目的是為了使程序代碼能夠“起作用”,而您在準備教學的過程中,往往會學習研究那些與目標課程主題相關的所有內容。“教學相長”就是這個道理。

在此,我強烈建議您選擇一種最適合自己的教學方式。例如:在創建自己的網站--CodeJava.net(https://www.codejava.net/)和Java Youtube(https://www.youtube.com/codejava)頻道之前,我曾經持續為一些編程網站編寫了各種各樣的Java教程。而且,我還在Udemy上開設過一些Java課程。

至此,我已經和您討論了成為優秀程序員的十二項自我修養。當然,這些只是我的經驗之談,希望您也能分享自己的觀點。

原文標題:12 Practices That Make You a Good Programmer,作者:Nam Ha Minh

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

 

責任編輯:張燕妮 來源: 51CTO
相關推薦

2019-08-26 08:56:38

碼農總監技術

2022-05-05 11:50:58

網絡安全安全人才網絡安全崗位

2019-08-18 23:02:43

碼農程序員開發

2015-07-17 08:27:19

EMMBYOD

2015-07-20 09:11:19

企業移動管理EMMBYOD安全

2011-12-27 16:31:27

程序員

2023-03-03 14:39:50

數字化

2015-10-28 13:39:25

2021-07-29 10:37:13

漏洞管理自我修養漏洞

2013-06-26 10:34:56

工程師?谷歌

2014-12-04 10:02:55

2017-10-20 17:21:16

華為

2014-05-12 10:02:56

數據可視化

2020-04-17 10:58:12

UI設計師按鈕

2020-10-23 09:07:17

開源代碼開發

2023-03-07 07:05:29

生產數據庫運維

2022-11-30 14:57:39

產業互聯網

2022-12-20 16:39:09

智能駕駛智駕產品

2013-02-21 16:44:13

系統工程師的sed

2023-02-09 08:47:48

TCP協議FTP
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本二区| 高清人人天天夜夜曰狠狠狠狠 | 成在线人视频免费视频 | 久久精品亚洲精品 | 国产精品九九九 | 9191成人精品久久 | 国产成人精品在线播放 | 亚洲乱码一区二区三区在线观看 | 亚洲 精品 综合 精品 自拍 | 91精品国产综合久久福利软件 | 毛片一区二区三区 | 成人免费精品视频 | 97精品国产97久久久久久免费 | 日本午夜精品 | 视频在线一区二区 | 成人久久久 | 欧美日韩一区二区视频在线观看 | 欧美激情一区二区三区 | 日韩一区二区三区精品 | 蜜月va乱码一区二区三区 | 国产精品福利网站 | 日韩有码在线观看 | 狠狠影院 | 婷婷狠狠 | 国产精品一区久久久 | 国产一区二区三区视频 | 国产乡下妇女做爰 | 亚洲精品国产区 | 成人国产精品久久 | 日本三级线观看 视频 | 亚洲一区视频在线 | 欧美精品在线播放 | 国产精品免费小视频 | 国产精品久久久久久 | 国内久久精品 | 欧美一区二区三区在线看 | 欧美a区 | 亚洲精品在线观 | 国产一区久久 | 国产91久久久久久 | 精品久久久一区 |