文章目录

全栈工程师这个说法,出自 Facebook,最初强调的是工程师既能开发程序,也能做部署、运维。比如说现在很多大型网站的开发和运维是分开的。但有了全栈工程师,网站的开发、部署、运维全由全栈工程师自己干了。开发强调的是精通,运维强调的是综合。这两者的结合,要求工程师在深度和广度上都要牛。

通俗理解,全栈工程师可以说是啥都能干的工程师,小到卡网线头儿,大到做大型网站的架构设计。不过,这样的定义太宽泛了,估计也没有多少人能做到。我们还是将全栈工程师限定在软件领域比较合适。

窃以为,称职的全栈工程师,Linux、SQL、HTML/CSS、C/C++、PHP/Python/Perl 是必须要达到精通或者熟练地步的。具体来讲:

  • Linux。不管是前端开发为主,还是后端开发为主,Linux 系统的日常使用、常用软件(Apache、MySQL 等的)编译、安装、基本配置等都是要掌握的。
  • SQL。不懂关系数据库,难称得上是合格的软件工程师。现今,SQL 不仅仅用于服务器端, 也用于智能设备的开发,比如 Android 里边的 SQLite。通过将杂乱的数据变成结构化存储的记录,且能高效查询,是软件工程师的必备素质。数据库记录的存储设计,有时候对应用或软件的性能有着决定性的作用。
  • HTML/CSS。HTML或者 XML、CSS,甚至 JavaScript 是互联网工程师必须要掌握的东西。HTML/XML/CSS 虽然不能称为编程语言,但其设计思想,尤其是 CSS 还是非常值得称道的。全栈工程师必须可以使用 HTML/XML/CSS 来编写网页,哪怕只是静态的。
  • C/C++。这个不用说了,这两样都不懂,那基本上没可能成为全栈工程师,因为你肯定不懂 POSIX 是个啥,一个应用是怎么运行起来的,更不用说解决问题了。
  • PHP/Python/Perl/JavaScript 中的某一种。作为全栈工程师,必须熟练掌握某种脚本语言。如果实际工作中,需要通过编写个小程序来完成特定的工作,那脚本语言是不二之选。要是所有程序都用 C/C++ 写,那估计要累死哦。
    计算机领域技术层出不穷,但其他的,不需要精通,但要求能在较短时间内掌握并做出东西,或者能够快速定位问题并解决问题。毕竟这个年代处于技术爆发阶段,要求一个人掌握所有的新鲜技术或者玩意儿,这是不切实际的。

总之,全栈工程师其实主要强调的是解决问题的能力。但要练就好的解决问题的能力,知识面不广是不可能的。

再说要付出多大的努力才能成为全栈工程师。这个的确很难,没有五年的编程实践和实际项目的锻炼,是没可能的,大部分人需要十年的时间,还要有比较宽广和深厚的理论知识做基础。就中国现状,许多码农过了三十五岁就不愿继续编码,所以,基本上大概只有 1% 的工程师有机会成为全栈工程师。

随着时代的发展,科技的进步,全民编程时代就要来临。当比你小十几岁、几十岁的小孩都能编程序的时候,你唯一比他们强的地方,应该是懂得多,学的快,做得好。否则,你怎么做榜样?

最后一句话:

一个将自己的兴趣或者工作范畴定义在单个平台、单个编程语言上的工程师,是没有前途的!

转自:http://www.fullstackengineer.net/zh/blog/weiyongming/61f369f624f52a24e20e5729a2834b21

文章目录