`
Poechant
  • 浏览: 227583 次
博客专栏
Bebe66e7-3a30-3fc9-aeea-cfa3b474b591
Nginx高性能Web服务...
浏览量:24243
5738817b-23a1-3a32-86de-632d7da73b1e
Cumulus实时媒体服务...
浏览量:22051
社区版块
存档分类
最新评论

一名出色软件工程师的基本功力

 
阅读更多

一名出色软件工程师的基本功力

  • 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。

结语

还能想到什么?由于现在夜深人静,头脑不够清醒,只能想到这些。况且在这些方面,我也达不到“精通”,甚至想去甚远。那姑且先这样吧,如果哪位朋友有什么想说的,可以在下面给我留言,我会补充到文中。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics