想要成為一名優秀的程序員,這些技巧你應該知道

私信我或關注微信號:猿來如此呀,回覆:學習,獲取免費學習資源包。

作為程序員你需要學習很多東西才能成為軟件開發人員,並且很多人不知道從哪裡開始起步。

這裡我會嘗試著具體說明那些在你追求成為軟件開發人員的路上將讓你受益的必要技術技能。

想要成為一名優秀的程序員,這些技巧你應該知道

1. 擁有紮實的基礎

專業技能


  1. 熟練的使用Java語言進行面向對象程序設計,有良好的編程習慣,熟悉常用的Java API,包括集合框架、多線程(併發編程)、I/O(NIO)、Socket、JDBC、XML、反射等。
  2. 熟悉基於JSP和Servlet的Java Web開發,對Servlet和JSP的工作原理和生命週期有深入瞭解,熟練的使用JSTL和EL編寫無腳本動態頁面,有使用監聽器、過濾器等Web組件以及MVC架構模式進行Java Web項目開發的經驗。
  3. 對Spring的IoC容器和AOP原理有深入瞭解,熟練的運用Spring框架管理各種Web組件及其依賴關係,熟練的使用Spring進行事務、日誌、安全性等的管理,有使用SpringMVC作為表示層技術以及使用Spring提供的持久化支持進行Web項目開發的經驗,熟悉Spring對其他框架的整合。
  4. 熟練的使用Hibernate、MyBatis等ORM框架,熟悉Hibernate和MyBatis的核心API,對Hibernate的關聯映射、繼承映射、組件映射、緩存機制、事務管理以及性能調優等有深入的理解。
  5. 熟練的使用HTML、CSS和JavaScript進行Web前端開發,熟悉jQuery和Bootstrap,對Ajax技術在Web項目中的應用有深入理解,有使用前端MVC框架(AngularJS)和JavaScript模板引擎(HandleBars)進行項目開發的經驗。
  6. 熟悉常用的關係型數據庫產品(MySQL、Oracle),熟練的使用SQL和PL/SQL進行數據庫編程。
  7. 熟悉面向對象的設計原則,對GoF設計模式和企業應用架構模式有深入的瞭解和實際開發的相關經驗,熟練的使用UML進行面向對象的分析和設計,有TDD(測試驅動開發)和DDD(領域驅動設計)的經驗。
  8. 熟悉Apache、NginX、Tomcat、WildFly、Weblogic等Web服務器和應用服務器的使用,熟悉多種服務器整合、集群和負載均衡的配置。
  9. 熟練的使用產品原型工具Axure,熟練的使用設計建模工具PowerDesigner和Enterprise Architect,熟練的使用Java開發環境Eclipse和IntelliJ,熟練的使用前端開發環境WebStorm,熟練的使用軟件版本控制工具SVN和Git,熟練的使用項目構建和管理工具Maven和Gradle。
想要成為一名優秀的程序員,這些技巧你應該知道


2. 掌握核心 API

如果你不知道語言結構和核心 API,那麼即使你在理論知識上再怎麼彪悍也是獨木難成林。在 Java 中,我們最好能對核心 API,如 java.lang.*、I/O、異常、集合、泛型、線程、JDBC 等有很強的實戰經驗。要是涉及到 Web 應用的開發,無論你使用的是對 Servlet 有多大關係的框架,JSP 都是必須的。

3. 不斷編碼

陸游曾說過,“紙上得來終覺淺,絕知此事要躬行”。從理論上想出一個解決方案很簡單,但是真到了實施的時候,才會意識到問題有多難。此時,你才會明白編碼過程中存在的語言限制,從而設計出最好的實踐方案。因此,請勿中斷編碼。

4. 訂閱社區論壇

我們並非踽踽獨行者。很多人都和我們一樣在研究著相同的技術。只是對某個框架概念做驗證是不難的,但是當你將這些概念應用到實際的項目中時,那麼各 種各樣的問題,各種在官方文檔上找不到解決方法的難題就會接踵而來。學習新技術首先要做的是訂閱相關的技術社區論壇。無論你遇到的是什麼問題,總會有人比 你先碰到過,而且搞不好已經找到了解決方法。Ps,還可以解答別人提出來的問題,而且這感覺不要太爽哦。你也可以通過郵件訂閱《快樂碼農》程序員期刊獲取 更多的編程知識,點擊訂閱。

5. 對Print行或字符串說不(Say no to Print lines and String Concatenations).

– 我知道為了調試方便,程序員喜歡到處用System.out.println ,然後對自己說過一會就刪掉。但我們常常忘記刪掉這些行或不願刪掉,我們用System.out.println 做測試,為什麼測完後還要去改代碼?這很可能導致誤刪一行我們需要的代碼。不要低估System.out.println 的危害,看下面代碼:

public class BadCode { 
public static void calculationWithPrint(){
double someValue = 0D;
for (int i = 0; i < 10000; i++) {
System.out.println(someValue = someValue + i);
}
}
public static void calculationWithOutPrint(){
double someValue = 0D;
for (int i = 0; i < 10000; i++) {
someValue = someValue + i;
}
}
public static void main(String [] n) {
BadCode.calculationWithPrint();
BadCode.calculationWithOutPrint();
}
}

下面表格可以看出,calculationWithOutPrint() 方法執行時間是0.001204 s. 作為對比,calculationWithPrint() 方法居然需要令人難以置信的10.52 s來執行!

想要成為一名優秀的程序員,這些技巧你應該知道

(若你想知道怎麼做一個這樣的表,請閱讀另一篇文章”Java Profiling with WSAD” Java Profiling with WSAD )

為了避免CPU浪費,最好的辦法是引入一個包裝的方法,如下:

public class BadCode { 
public static final int DEBUG_MODE = 1;
public static final int PRODUCTION_MODE = 2;
public static void calculationWithPrint(int logMode){
double someValue = 0D;
for (int i = 0; i < 10000; i++) {
someValue = someValue + i;
myPrintMethod(logMode, someValue);
}
}
public static void myPrintMethod(int logMode, double value) {
if (logMode > BadCode.DEBUG_MODE) { return; }
System.out.println(value);
}
public static void main(String [] n) {
BadCode.calculationWithPrint(BadCode.PRODUCTION_MODE);
}
}

字符串(String)連接是另一種CPU浪費方式,看下面的例子:

public static void concatenateStrings(String startingString) { 
for (int i = 0; i < 20; i++) {
startingString = startingString + startingString;
}
}
public static void concatenateStringsUsingStringBuffer(
String startingString) {
StringBuffer sb = new StringBuffer();
sb.append(startingString);
for (int i = 0; i < 20; i++) {
sb.append(sb.toString());
}
}

從下面表格可以看出使用 StringBuffer只要花 0.01 s 而使用String 連接需要0.08 s,選擇哪種應該很明顯了。

想要成為一名優秀的程序員,這些技巧你應該知道


6. 閱讀開源框架的源代碼

好的開發人員總是知道如何使用框架。但是如果你想成為一個優秀的開發人員,那麼你需要研究各種成功和流行的框架源代碼,去了解它的內部工作機制和最佳實踐形式。這是一種高效的使用框架的方法。

7. 瞭解相關技術的發展趨勢

在開源環境中,軟件開發技術總是在不斷髮展變化。現在所謂的新框架,可能到時候會過時。當前框架上解決不了的問題,可能在新框架上就不再是問題。所以要時刻注意著新事物的誕生和舊事物的消亡。

8. 手頭準備好常用的代碼片段/實用程序

有時候我們可能需要一遍又一遍地複製粘貼/編寫相同的代碼片段/配置。所以,保存一些配置片段如 log4.properties、jdbc 配置,以及實用程序如 StringUtils、ReflectionUtils、DBUtils 大有好處。這些東西本身可能並不能讓你與眾不同,但是你想想看,要是你的合作開發人員希望你幫他從對象集合中獲取屬性值的列表,而你只需要用 ReflectionUtil 就可以在幾分鐘內解決,是不是一下子脫穎而出了呢。

9. 瞭解不同的開發方法

熟悉不同的開發方法,例如 Agile、SCRUM、XP、Waterfall 等等。現在,選擇哪種開發方法是由客戶說了算的。有的客戶偏好 Agile,而有的則更喜歡 Waterfall 模型。所以對各種方法都能有所涉獵絕對讓人刮目相看。

10. 將自己對技術的看法記錄到文檔/博客上

在我們每天的工作中,我們或許會學到新的東西,新的做事方法、實踐形式和架構理念。可以將這些想法記錄到文檔或者博客中,分享給大家。因為你現在解決問題的方法可能正是世界上另一個角落另一個開發人員“尋尋覓覓上下求索”的難題,你的分享將完全不亞於一場久旱的甘霖。

記住:質量,而非數量(Remember – quality, not quantity). - 不要待的太晚(除非有必要)。我知道有時因為產品問題,截止期限或其他突發事件,不能按時下班。但經理不會因為你為一般問題待的太晚而感激或獎勵你;他們會為有質量的工作而感激你。如果你遵循上面的列的原則,你就會寫更健壯的、少bug的程序。這才是你最應該做的。

想要成為一名優秀的程序員,這些技巧你應該知道

要成為一個厲害的程序員,首先當然是要有一個好的身體。此外需要培養一個編程之外的愛好,這樣可以讓你活的像一個正常人(而不是傳統的工科書呆子)。程序員是一個需要不斷學習,不斷充實的職業,在學習的過程中,英文能力可以幫助你學的更快,更有效,另外正確的應對學習過程中必然會犯的錯誤,並將每次錯誤都當成學習的機會。

開發只是軟件開發流程中的一環,程序員需要拓展自己的視野,和其他角色一起配合才能保證產品的交付。在日常的開發中,程序員還需要快速、準確的將自己的想法和創意表達出來。最後,更快速的完成手頭的工作可以讓你有更多的時間來思考,來改進那些低效的工作方式。


分享到:


相關文章: