您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    为什么未来是全栈工程师的世界?
    时间:2017-03-11 13:32 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    技术在过去的几十年里进步很快,也将在未来的几十年里发展得更快。今天技术的门槛下降得越来越快,原本需要一个团队做出来的Web应用,现在只需要一两个人就可以了。

    同时,由于公司组织结构的变迁,也决定了赋予每个人的职责将会越来越多。尽管我们看到工厂化生产带来的优势,但是我们也看到了精益思想带来的变革。正是这种变革让越来越多的专家走向全栈,让组织内部有更好的交流。

    你还将看到专家和全栈的两种不同的学习模式,以及全栈工程师的未来。

    技术的革新史

    从开始的CGI到MVC模式,再到前后端分离的架构模式,都在不断地降低技术的门槛。而这些门槛的降低,已经足以让一两个人来完成大部分的工作了。

    CGI

    二十年前的网站以静态的形式出现,这样的网站并不需要太多的人去维护、管理。接着,人们发明了CGI(通用网关接口,英语:Common Gateway Interface)来实现动态的网站。下图是一个早期网站的架构图:

    为什么未来是全栈工程师的世界?

    当时这种网站的URL类似于: https://www.phodal.com/cgi-bin/getblog

    (PS:这个链接是为了讲解而存在的,并没有真实存在。)

    用户访问上面的网页的时候就会访问,cgi-bin的路径下对应的getblog脚本。你可以用Shell返回这个网页:

    #!/bin/sh 

    echo Content-type: text/plain 

    echo hello,world 

    Blabla,各种代码混乱地夹杂在一起。不得不说一句:这样的代码在2012年,我也看了有一些。简单地来说,这个时代的代码结构就是这样的:

    为什么未来是全栈工程师的世界?

    这简直就是一场恶梦。不过,在今天好似那些PHP新手也是这样写代码的。

    好了,这时候我们就可以讨论讨论MVC模式了。

    MVC架构

    我有理由相信Martin Fowler的《企业应用架构模式》在当时一定非常受欢迎。代码从上面的耦合状态变成了:

    为什么未来是全栈工程师的世界?

    相似大家也已经对这样的架构很熟悉了,我们就不多解释了。如果你还不是非常了解的话,可以看看这本书后面的部分。

    后台服务化与前端一致化架构

    在今天看来,我们可以看到如下图所示的架构:

    为什么未来是全栈工程师的世界?

    后台在不知不觉中已经被服务化了,即只提供API接口和服务。前端在这时已经尽量地和APP端在结合,使得他们可以保持一致。

    软件开发的核心难题:沟通

    软件开发在过去的几十年里都是大公司的专利,小公司根本没有足够的能力去做这样的事。在计算机发明后的几十年里,开发软件是大公司才能做得起的。一 般的非技术公司无法定制自己的软件系统,只能去购买现有的软件。而随着技术成本的下降,到了今天一般的小公司也可以雇佣一两个人来做同样的事。这样的演进 过程还真是有意思:

    为什么未来是全栈工程师的世界?

    在这其中的每一个过程实质上都是为了解决沟通的问题。从瀑布到敏捷是为了解决组织内沟通的问题,从敏捷到精益不仅仅优化了组织内的沟通问题,还强化了与外部的关系。换句话说,精益结合了一部分的互联网思维。

    瀑布式

    在最开始的时候,我们预先设计好我们的功能,然后编码,在适当的时候发布我们的软件:

    为什么未来是全栈工程师的世界?

    然而这种开发方式很难应对市场的变化——当我们花费了几年的时间开发出了一个软件,而这个软件是几年前人们才需要的。同时,由于软件开发本身的复杂度的限制,复制的系统在后期需要大量的系统集成工作。这样的集成工作可能要花费上大量的时间——几星期、几个月。

    为什么未来是全栈工程师的世界?

    当人们意识到这个问题的时候,开始改进工作流程。出现了敏捷软件开发,这可以解释为什么产品经理会经常改需求。如果一个功能本身是没必要出现的话,那么为什么要花功夫去开发。但是如果一个功能在设计的初期就没有好好设计,那么改需求也是必然的。

    敏捷式

    现有的互联网公司的工作流程和敏捷软件开发在很多部分上是相似的,都有迭代、分析等等的过程:

    为什么未来是全栈工程师的世界?

    但是据我的所知:国内的多数互联网公司是不写测试的、没有Code Review等等。当然,这也不是一篇关于如何实践敏捷的文章。敏捷与瀑布式开发在很大的区别就是:沟通问题。传统的软件开发在调研完毕后就是分析、开发等等。而敏捷开发则会强调这个过程中的沟通问题:

    在整个过程中都不断地强调沟通问题,然而这时还存在一个问题:组织结构本身的问题。这样的组织结构,如下图所示:

    为什么未来是全栈工程师的世界?

    如果市场部门/产品经理没有与研发团队坐一起来分析问题,那么问题就多了。当一个需求在实现的过程中遇到问题,到底是哪个部门的问题?

    同样的如果我们的研发部门是这样子的结构:

    为什么未来是全栈工程师的世界?

    那么在研发、上线的过程中仍然会遇到各种的沟通问题。

    现在,让我们回过头来看看大公司的专家与小公司的全栈。

    大公司的专家与小公司的全栈

    如果你经常看一些关于全栈和专家的技术文章的时候,你就会发现不同的人在强调不同的方向。大公司的文章喜欢强调成为某个领域的专家,小公司喜欢小而美的团队——全栈工程师。

    (责任编辑:admin)