什么是全栈工程师?

  原地址http://www.laurencegellert.com/2012/08/what-is-a-full-stack-developer/

What is a Full Stack developer?

Is it reasonable to expect mere mortals to have mastery over every facet of the development stack? Probably not, but Facebook can ask for it. I was told at OSCON by a Facebook employee that they only hire ‘Full Stack’ developers.  Well, what does that mean?

To me, a Full Stack Developer is someone with familiarity in each layer, if not mastery in many and a genuine interest in all software technology.

Good developers who are familiar with the entire stack know how to make life easier for those around them. This is why I’m so against silos in the work place. Sure, politics and communication challenges get in the way in large organizations. I think the point Facebook is going for with their hiring policy is, if smart people use their heads and their hearts, a better product gets built in less time.

layers of the full stack:

  1. Server, Network, and Hosting Environment.
    1. This involves understanding what can break and why, taking no resource for granted.
    2. Appropriate use of the file system, cloud storage, network resources, and an understanding of data redundancy and availability is necessary.
    3. How does the application scale given the hardware constraints?
    4. What about multi-threading and race conditions? Guess what, you won’t see those on your development machine, but they can and do happen in the real world.
    5. Full stack developers can work side by side with DevOps. The system should provide useful error messages and logging capabilities. DevOps will see the messages before you will, so make them count.
  2. Data Modeling
    1. If the data model is flawed, the business logic and higher layers start to need strange (ugly) code to compensate for corner cases the data model doesn’t cover.
    2. Full stack developers know how to create a reasonably normalized relational model, complete with foreign keys, indexes, views, lookup tables, etc.
    3. Full stack developers are familiar with the concept of non-relational data stores and understand where they shine over relational data stores.
  3. Business Logic
    1. The heart of the value the application provides.
    2. Solid object oriented skills are needed here.
    3. Frameworks might be needed here as well.
  4. API layer / Action Layer / MVC
    1. How the outside world operates against the business logic and data model.
    2. Frameworks at this level should be used heavily.
    3. Full stack developers have the ability to write clear, consistent, simple to use interfaces. The heights to which some APIs are convoluted repel me.
  5. User Interface
    1. Full stack developers: a) understand how to create a readable layout, or b) acknowledge they need help from artists and graphic designers. Either way, implementing a good visual design is key.
    2. Can include mastery of HTML5 / CSS.
    3. JavaScript is the up and coming language of the future and lots of exciting work is being done in the JavaScript world (node, backbone, knockout…)
  6. User Experience
    1. Full stack developers appreciate that users just want things to work.
    2. A good system doesn’t give its users carpal tunnel syndrome or sore eyes. A full stack developer can step back and look at a process that needs 8 clicks and 3 steps, and get it down to one click.
    3. Full stack developers write useful error messages. If something breaks, be apologetic about it. Sometimes programmers inadvertently write error messages that can make people feel stupid.
  7. Understanding what the customer and the business need.
    1. Now we are blurring into the line of architect, but that is too much of a hands off role.
    2. Full stack developers have a grasp of what is going on in the field when the customer uses the software. They also have a grasp of the business.

 

Other Pieces of the Puzzle:

  1. Ability to write quality unit tests. By the way, even JavaScript can have unit tests these days.
  2. Understanding of repeatable automated processes for building the application, testing it, documenting it, and deploying it at scale.
  3. An awareness of security concerns is important, as each layer presents its own possible vulnerabilities.

 

Closing Thoughts:

It is very bad practice to tightly couple code to a specific implementation (library, OS, hardware, etc). Just because a full stack developer understands the entire spectrum doesn’t mean they have license to take shortcuts. Well, actually they do if it is a build and throw away prototype.

Technology start-ups need full stack developers for their versatility!  However, as an organization matures, it needs more and more focused skills.

I’m not sure you can call yourself a full stack developer until you have worked in multiple languages, platforms, and even industries in your professional career. Full stack goes beyond a ‘senior engineer’, as it is along the same lines as a polyglot programmer but with a higher view of all the connecting pieces. Note that on my list, only items 3-5 involve writing code.

在我离开 Google快两年之后,我开始意识到职业环境正在发生的变化。传统的管理纪律正在渐渐瓦解。要想在职场上成功,需要的技能比以往更加多样而难以定义。如今,要想在职场上有所成就,你必须成为一个真正的博学者,成为一名全能全栈员工。

 

 

 

什么是全栈员工(full-stack employee)?

 

就像“全栈工程师(full-stack engineer)”和“全栈创业(full-stack startup)”一样,全栈员工(full-stack employee)拥有超强的综合技能,有着无法估量的价值。他们可以在快速演进、变革的技术浪潮中如鱼得水。他们可以在事实稀缺、观点横飞的过剩信息中凭直觉做决定。全栈员工能够熟练运用设计语言,明白使用卡通字体无异于犯罪行为,轻车熟路地嘲弄Keynote、Sketch抑或是Skitch。他们清楚用户界面(UI)和用户体验(UX)的区别。

 

他们可以和人讨论工程问题,能搞清楚算法、编程,也能理解前端的等级和后端的等级根本不是一回事。虽然他们可能并不亲自编程,但他们知道GitHub、StackOverflow都是做什么的。如果必要,他们会暴力破解一段“复制粘贴”的脚本,在CSV文件中进行基础分析。

 

他们是最新锐的社交应用的用户,深谙自我推广 之道。他们既可以在听众面前循循善诱地耐心讲故事,也可以在看了3分钟kickstarter视频后就能指出:亮明要点的时间不能长于一段Instagram、Vine短视频。注意力就是这个时代的硬通货。

 

全栈员工对新的想法、最棒的实现路径、提升生产力和与愉悦度的事情有着“贪得无厌”的胃口。他们对世界及其运转规则充满好奇心,想知道如何留下自己的印记。正是这一点使他们与过去时代的人们区分开来。开始一份工作时,全栈员工不会戴上“眼罩”埋头苦干,而是始终与行业的发展保持同步,因为他们清楚:变革往往出现在边缘地带,不能只盯着脚下的一亩三分地。

 

 

 

一名全栈员工是什么样子的?

 

有了24小时在线的移动设备,工作和非工作之间的界限正在模糊,既然工作正在变得碎片化,全栈员工要清楚地意识到自己的生活方式也要随之变化,比如使用整体式单色衣柜、功能明确的厨具。

 

成为全栈员工意味着要在两极之间来回切换。他们既要适应单兵作战,自给自足(比如自己安排时间,使用自己的设备工作),也要能和团队高效协作。过去,在大型团队中,往往需要有一名 IT经理来决定使用何种技术。如今,随着人们越来越多地使用个人设备工作,员工需要自己来搞定跨设备、跨平台沟通等问题。就拿企业协作工具来说。Slack可以整合所有东西,而微软却只对自己平台上的工具开放特权。如果你不能接入其他人的 API,你已经落后于时代了。全栈员工也是如此——他们至少应该熟知所有最新的应用,这样才不会落伍出局。

 

全栈员工必须要在自己的领域有深刻的洞见,同时也要机动地应对优先事项的转换,胜任不同的安排。组织的扁平化已经不是新现象,变革的动力可能来自顶层,也可能来自底层,有时候需要个体来决定事情的优先级。现场服务工程师(FSE,Field Service Engineer)应该遍布组织内部,却又不能分布的过于稀疏。即使不用监控每一位员工,他们也应该知道每一个人在做什么,保证他们在不熟悉的事情上不会手足无措。

 

要成为一名全栈员工不是一件容易的事,回报却也很丰厚。首先,他们可以更自由地按照自己的方式、在自己喜欢的地方(Teleport等服务可以帮助他们找到价廉的工作地点)、喜欢的时间工作。他们可以使用最新的工具,自给自足,自我管理。由于他们的工作涉及多领域、多学科之间的协作,会带来更宽广的视野,更丰富多彩的经历。在组织内部,他们的影响力也会不断上升,对组织的成败也将担负起更大的责任,团队的成功与否更加休戚相关。

 

 

 

这对雇主和管理者意味着什么?

 

对于企业和管理者来说,在人力市场上争夺全栈员工意味着很多准备工作。首先,你们做好准备来吸引、留住这些人才了吗?其次,你们团队的工作风格是否明确,你们对远程办公的支持如何?再次,你们允许的工作时间,支持员工自主安排工作计划吗?最后,你们会给他们留出健身、养生、陪伴家人的时间吗?

 

Google虽然充分考虑到了员工的健康、精神需求,但反过来也要求员工高度负责。 Google的员工可以以任何方式在任何时间、任何地点工作,只要能最大程度发挥创造力。但它同时希望员工能够随时参加一场临时安排的快速议事会。你的团队准备好了吗?

如果你还没有尝试过,不妨一试,来感受下”全栈员工“的工作环境是什么样子的。不同背景的人们在一个公共空间内彼此协作。他们一直在线,通过Slack等协作对话平台交流。大多数全员协作空间都是临时搭建,多种实体、虚拟的工具混合使用(白板、投影仪、会议室、视频会议设备等)。

 

对于职员和管理者来说,最需要培养的是”同理心“——员工和管理者都要对彼此有一种“同情的理解”,在彼此沟通、协作、要求时能够提出具体的需求。因为未来的工作需要高度的灵活性和自主性,但这并不意味着每个人给自己下达工作命令、工作指标。管理者的角色依然是必要的。

 

 

 

未来的工作是什么样子的?

 

说未来的职场将由全栈员工引领,无疑有些夸张,但这是一个显而易见的趋势。毫无疑问,工作的定义正在发生变化,员工的最大价值是应对不确定性,能够从海量的信息中提炼出有效的战略、战术。

 

而且,在工作机器人大规模“入侵”之前,我们只有10年的时间。他们正在取代体育新闻、驾驶、快递等重复性工作,人们要重新思考适合自己的角色。感知和综合的能力将是第一位的,而语言、辨析力和同感力在进行复杂、敏感的任务是都是必备技能。全栈员工将帮助我们向未来过渡,将成为新的混合经济中的关键角色。

posted on 2016-03-13 00:11 枫颜风予 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/civipush/p/5271025.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值