一名出色軟體工程師的基本功力

鍾超發表於2012-05-16

一名出色軟體工程師的基本功力

  • Author:柳大·Poechant
  • Email:zhongchao.ustc#gmail.com(# -> @)

程式設計

首先至少精通一門高階語言,注意是精通。然後要熟悉額外的幾門語言。

舉例來說,如果你精通 C 語言,那麼除了其語言標準之外,還要精通 Linux 平臺的系統 API,以及一些常用的庫,還有單元測試工具。當然,如果你需要精通 C 語言的話,應該是需要你經常做與作業系統直接接觸的應用底層開發,或者編寫一些基礎庫。

如果你精通 C++ 語言,那麼除了 C++ 語言標準外,你應該還要精通 STL(雖然這已經納入 C++ 標準,但是我還是要提兩句),以及一些常用的庫,比如 Boost、ACE、POCO 等。

另外,精通 C/C++ 要求你必須要會用 GCC/G++、GDB、Makefile(整合 Makefile 的 CMake 等)/Scons 等等。

當然,精通的關鍵,還是針對語言核心來說的。第一,你要對這個語言的語法特性熟稔;第二,你要對這個語言的標準庫的每個 API 熟稔;第三,你要能夠熟練運用這門語言編寫各種設計模式;第四,你能夠運用你對這門語言的掌握,完成任意給定的程式設計任務。

那麼,其他額外要熟悉的語言,你要做到有的放矢,就是當你要進行某種開發的時候,你在這方面能夠熟練使用這門語言。比如你可以用 PHP 熟練地進行 Web 開發,你可以用 Perl 熟練地處理文字,你可以用 Bash 熟練地編寫指令碼小工具。

除了這些呢,設計模式、非同步 IO、程式與執行緒、網路程式設計也是你必須精通的。當然,你只要精通你所使用的語言的這些方面的就可以了。

工具

對於工具有三個層面。第一是熟練的使用一些工具,第二是能夠發現提高生產力的工具,第三是能夠在無可用工具時自己編寫工具。

都有哪些基本工具呢?

第一,是 IDE(Integrated Development Environment)。這是程式設計師的武器。如果你是 Windows 下的 C/C++ 開發者,建議你使用 Visual Studio,不要小看它,如果你能夠精通它,你也算是一個高手。如果你是 Mac 下的 C/C++/Objective-C 開發者,可以選擇 XCode、Eclipse,並配合 Vim/Emacs 使用。如果你是 Linux 下的開發者,可以使用 Vim/Emacs。

第二,是 VCS(Version Control System)。可以分為兩類,一類是 CVCS(Central VCS),另一類是 DVCS(Distributed VCS)。現在 CVCS 一般使用 SVN、CVS,DVCS 一般使用 Git、Mercurial(Hg)。至於 CVCS 和 DVCS 的區別,道地誰先進,我喜歡下面這段比喻:

Once you understand the conceptual differences between CVS/SVN and Git, and 
then subsequently start to use Git, you may find it very difficult to go back. 
You should really start to experiment only if you think you're going to migrate 
in the near future, because using Git is like watching TV in colour: once you've 
discovered it, it's really difficult to go back to black & white.

一旦你使用了 VCS,你就會接觸到 Google Code、Github、BitBucket 等等。它們其實可以算是一種線上工具。

第三,熟練地運用作業系統的 CLI。無論你是使用 Linux、Mac、Solaris、FreeBSD,甚至是 Windows,你都要熟練使用 CLI。

結語

還能想到什麼?由於現在夜深人靜,頭腦不夠清醒,只能想到這些。況且在這些方面,我也達不到“精通”,甚至想去甚遠。那姑且先這樣吧,如果哪位朋友有什麼想說的,可以在下面給我留言,我會補充到文中。

相關文章