一名出色軟體工程師的基本功力
一名出色軟體工程師的基本功力
- 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。
結語
還能想到什麼?由於現在夜深人靜,頭腦不夠清醒,只能想到這些。況且在這些方面,我也達不到“精通”,甚至想去甚遠。那姑且先這樣吧,如果哪位朋友有什麼想說的,可以在下面給我留言,我會補充到文中。
相關文章
- 【招聘】前端軟體工程師、高階前端軟體工程師前端軟體工程工程師
- 作為一名軟體測試工程師,需要具備哪些能力?工程師
- 成為一名合格的Java工程師,需要掌握哪些基本知識Java工程師
- 譯:軟體工程師的軟技能(一)軟體工程工程師
- 要做軟體工程師,而不是前端工程師軟體工程工程師前端
- 如何才能真正的提高自己,成為一名出色的架構師?架構
- 依賴——軟體工程師的痛軟體工程工程師
- 軟體工程師前景分析軟體工程工程師
- [ 招聘 | 上海 ] 軟體工程師 / 全棧工程師 / 晶片設計工程師軟體工程工程師全棧晶片
- 如何以軟體工程師的身份工作?軟體工程工程師
- 軟體測試工程師的技能樹工程師
- 軟體測試工程師的尷尬工程師
- 軟體測試工程師的職責工程師
- [上海&EDA]持續招聘晶片設計工程師 | 全棧工程師 | 軟體工程師 | 嵌入式軟體工程師 // 年薪30W+起晶片工程師全棧軟體工程
- 一名測試工程師的日常習慣工程師
- 做好一名linux運維工程師Linux運維工程師
- 如何才能成為一名軟體架構師?架構
- 工程師基本常識工程師
- 尋找卓越的(Android)軟體工程師(譯)Android軟體工程工程師
- iOS工程師Mac上的必備軟體iOS工程師Mac
- 軟體工程師必讀的13本書軟體工程工程師
- 從性格和能力出發,你是否適合做一名優秀軟體測試工程師?工程師
- 軟體設計師:軟體工程基礎知識軟體工程
- 瞭解這3點,你也能成為出色的Java工程師!Java工程師
- 如何從軟體工程師轉型到人工智慧工程師?軟體工程工程師人工智慧
- 軟體工程師課程輔導軟體工程工程師
- 幽默:程式設計師與軟體工程師的區別程式設計師軟體工程工程師
- 一名前端工程師的機器學習之旅前端工程師機器學習
- 一名【合格】前端工程師的自檢清單前端工程師
- 一名合格的運維工程師的歷練之路運維工程師
- 淺談軟體工程師的程式碼素養軟體工程工程師
- 吳軍博士眼中的五級軟體工程師軟體工程工程師
- 中級 Java 軟體工程師會遇到的事情Java軟體工程工程師
- 軟體測試工程師的待遇怎麼樣工程師
- 軟體測試工程師的職業規劃工程師
- 剛入行的軟體測試工程師如何自學軟體測試?工程師
- 如何成為 10 倍軟體工程師軟體工程工程師
- 軟體測試工程師如何提升自己工程師
- [上海 -- EDA]招聘晶片設計工程師 | 全棧工程師 | 軟體工程師 // 年薪30W+起晶片工程師全棧軟體工程