|

一、全栈概述
近几年在IT行业中“全栈”一词,属于一个热门话题。最早来源于Facebook的工程师CalosBueno在2010年底时写的一篇文章《TheFullStack》。作者认为全栈是一个通才,能够自己创建不平凡的应用程序。他也指出,没人能够熟悉所有方方面面,但作为一个全栈,能够看清每个栈的上下之间是如何运作的。简而言之,掌握多种技能,并能利用多种技能独立完成产品的程序员。总结上述全栈的概念,下图能更好的说明一个全栈程序员/工程师应该具备哪些能力。
二、全栈分述
1、人:可能这个词语太过于笼统,其实想要阐述一个问题就是IT行业人员工作中所要面对的人,其中包含两类人群:其一是软件产品使用者,其二是工作中的同事及leader。在工作中与这两类人扯上关系,其最终目的就是能更好的把握终端使用者业务上的问题是什么、我们应该怎么分析这些问题、我们编写的程序应如何解决这些业务上的问题,简而言之,就是终端使用者的需求定位与需求分析。
然而谈到“需求”一词时,可能很多程序员“避而远之”,需求这种活就应该是需求分析师或产品经理来实现,与我有何关系。这个问题我们换第二类人群来看,如果在工作中团队leader交代一个小的业务模块给你,如在某时某刻需要搜集客户某种类型的业务数据进行不同维度的数据展示,那这类工作你能说与我无关吗,就只要实现展示数据的编码就可以了,其他我没兴趣了解,或者你的同事和你沟通需要实现某个接口,你会说你告诉我参数是哪些,数据展示是哪些,如果一旦有这种内心独白的程序员,我觉得不是一个合格的工程师或者还是一个刚入门的初级IT行业人员。因为上诉的这种案例又何尝不是一种间接的需求分析。如果这类问题处理不好,“全栈”二字还是离你太遥远。
2、设计:其实这个概念是以第一点为基础,不管是做产品研发还是软件外包,在软件这个行业中一切都是围绕着“需求”为导向,市场的需求是什么、客户的需求是什么。有了“需求”精准的定位与分析后,才能知道制造的软件应该做哪些事情,正是有了这些条件后,才能对软件做出优秀的设计。设计又包含了三个主要方面的内容:UI设计、编码设计、软件运行时环境的设计。每个种类的设计也是对各岗位的IT行业人员能力的考核。
3、编码:可能大多数程序员感兴趣或认为这就是我该干的活,可是你在编码的时候是否注重过自己的编码质量、代码的复用性、命名与格式的规范性、异常处理及保护机制等,这些共性的问题也是大多数IT行业人员需要面对的问题。程序员编写的代码既要有书写规范的外在美又要有高效稳定的质量。
4、能力:沟通能力与自学能能力,“沉默寡言”可能是对大多数程序员特点描述之一,有很多程序员抱怨我内心有很多的话或者内心有很多的独白,关键是你没说出口。在工作中适当的时间适当的场景说出你适当的内心独白,我觉得这就是你的能力,也是你沟通的能力。在软件这个行业中,技能的提升尤为重要,学习来源有多种,与同事交流、参与技术沙龙、查阅官方资料等这些都需要程序员需要具备强大的自学能力,善于发现问题、分析问题、总结问题。
总结上诉四点是从比较宏观的角度来看待“全栈”一词,而有些人的观点认为全栈工程师是什么都会,什么都能做。对这句话及“全栈”一词我的理解是既要有行业知识面的宽度,又要有自身专业技能垂直方向的深度。 |
|