一名出色軟體工程師的基本功力
一名出色軟體工程師的基本功力
- 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。
結語
還能想到什麼?由於現在夜深人靜,頭腦不夠清醒,只能想到這些。況且在這些方面,我也達不到“精通”,甚至想去甚遠。那姑且先這樣吧,如果哪位朋友有什麼想說的,可以在下面給我留言,我會補充到文中。
相關文章
- 如何才能真正的提高自己,成為一名出色的架構師?架構
- 如何成為一名優秀的軟體工程師軟體工程工程師
- 一名軟體工程師實習生的創業公司體驗軟體工程工程師創業
- Glassdoor:招一名軟體工程師平均需要35天軟體工程工程師
- 做一名合格的軟體工程師應具備的職業素質軟體工程工程師
- 如何從一名軟體工程師轉行做人工智慧?軟體工程工程師人工智慧
- 關於《如何塑造自己成為一名合格的軟體工程師》的討論軟體工程工程師
- 通過艱難的六步讓你成長為一名出色的程式設計師程式設計師
- 論PS的功力,英偉達的AI這次誰也不服AI
- 前端架構師的 git 功力,你有幾成火候?前端架構Git
- 成為一名合格的Java工程師,需要掌握哪些基本知識Java工程師
- 技術出色的BitTorrent是如何倒掉的?
- 出色的 JavaScript API 設計祕訣JavaScriptAPI
- 出色的技術分享是如何煉成的?
- 軟體工程師的困境軟體工程工程師
- 如何成為一個出色的敏捷開發者?敏捷
- 10個出色的HTML5畫布示例HTML
- Ghost for Linux 出色的硬碟對拷工具(轉)Linux硬碟
- 5個出色的任務管理工具 - simon
- GIT好習慣助你成為更出色的開發者Git
- 編寫出色CSS程式碼的13個建議CSS
- 【企業管理】怎樣培養出色的團隊
- 【招聘】前端軟體工程師、高階前端軟體工程師前端軟體工程工程師
- 依賴——軟體工程師的痛軟體工程工程師
- 軟體工程師的職業生涯軟體工程工程師
- 軟體工程師的鄙視鏈軟體工程工程師
- 找一個有緣人,希望將我30年的功力傳授給你
- 非常出色的面向初學者的Node.js開發指南Node.js
- 【招聘】誠聘JAVA軟體工程師∕高階軟體工程師Java軟體工程工程師
- Sp軟體工程師軟體工程工程師
- Pages模板Templates for Pages DesiGN讓您的工作更出色
- 設計出色API的最佳實踐與原則 - JamesAPI
- 設計出色響應式網站的十個技巧網站
- 極其出色程式設計師的各種跡象程式設計師
- 榮耀7i拍照功力深度解析 翻轉鏡頭看世界
- 如何以軟體工程師的身份工作?軟體工程工程師
- 譯:軟體工程師的軟技能(一)軟體工程工程師
- 軟體工程師忽略的隱形成本軟體工程工程師