所有全栈开发人员都是一样的吗?
Certainly not.
In this guide, 我们将揭示不同类型的全栈程序员以及成为他们中的一员意味着什么.
我们将帮助你决定什么时候应该雇佣一个全栈开发人员,以及当你这样做的时候应该寻找什么. At the end, 我们将为您提供如何解决在整个过程中可能面临的挑战的建议.
完整的开发类型
In a broad sense, 全栈软件开发人员是能够创建和维护运行web应用程序所需的所有组件的专家. 这包括前端和后端层以及所有DevOps活动. 他们是能够洞察全局并制定解决方案的人. Quite often, 这些类型的专业人员帮助整合和协调由更专业的开发人员交付的部件.
重要的是要理解没有两个全栈开发人员是相同的. 开发人员将在两个主要方面有所不同:对特定技术堆栈的知识和对该堆栈的特定层的掌握. 广泛流行的网络栈的例子有LAMP、MEAN、ROR和ASP.NET technologies.
您需要记住,全栈开发人员并不是所有方面的专家. 他们更愿意拥有所有所需技术的一般实用知识. 他们一定能够完成所要求的工作, 你只需要知道,他们会为某些方面的事情查找文档,或者时不时地做一些额外的研究, 也许比专家更经常.
通常情况下,全栈开发人员拥有比其他开发人员更强的特定技能集. 有些专业人士可能对前端工作更有经验, 而其他人则会更有效地与后端工作.
你不应该因此而气馁. It’s a natural thing. 请放心,有才华的全栈开发人员总是可以提高他们的技能并学习新东西.
Full-stack Layers
当涉及到web应用程序堆栈时, 我们可以区分三个主要组件:前端和后端层以及DevOps. 这三者对于大多数web解决方案都是至关重要的.
尽管如此,有些项目并不需要前端,因为它们只提供一个API来使用. 另一些则不需要后端,因为它们是单页应用程序(spa)或静态页面. 考虑到所有托管主机解决方案,甚至也不总是需要DevOps支持.
优秀的全栈开发人员会指导您完成需求,并为您提供所需的组件,而跳过不必要的组件.
The Front-end
前端层与你能看到的所有元素相关. In general, 它使用三种基本技术来创建丰富的体验:HTML结构, CSS for style, 和JavaScript的逻辑.
当你寻找一个有良好前端技能的人, 你需要在他们以前的作品中寻找好看、快速、时髦的网站.
你需要记住,视觉设计并不是故事的结局. 你雇佣的专业人员需要知道如何让事物的视觉方面不仅看起来很好,而且运行得很快, without any glitches. 用户倾向于抛弃运行缓慢或不一致的网站和应用程序.
如果您正在构建spa风格, 前端将从结构层面与后端分离. In such cases, 如果你已经有了一个后端API, 这样就可以只使用前端技术创建整个应用程序.
这是堆栈中最容易由非技术人员验证的部分, 因为他们只需要以终端用户相同的方式处理它.
The Back-end
这一层指的是在服务器上工作的所有组件. 它们通常对最终用户是不可见的,但是任何高级应用程序都离不开它们.
有时后端可以有效地归结为一个API服务, 从前端为每个查询提供文本响应. In other cases, 后端进行“服务器端呈现”——将动态数据预先集成到前端HTML中, 而不是仅仅发送原始数据给前端JavaScript添加到页面本身.
Either way, 后端部分通常承担业务逻辑的全部责任, 还可以在数据库中存储对象并提供缓存.
堆栈的这一部分更难验证,因为它通常更具有技术性. 在评估后端技能时,您需要寻找的是适当的API设计和文档, 正确的端点的行为, 以及相应的数据存储和数据库设计方案. 如果您缺乏所需的专业知识,您可能需要一些帮助来验证所有这些.
DevOps
Last but not least, 我们有DevOps活动:获取和管理服务器所需的所有操作, 部署和更新应用程序, 扩大或向外扩展系统的能力.
处理这一层的专业人员还负责创建和管理数据库, caches, cloud storage, 和专有云api. In a broad sense, 可以通过查看个人管理服务器的经验来评估DevOps技能, 管理云托管提供商, and scaling systems.
您可以检查他们以前是否处理过系统的自动伸缩, 自动监视多个服务器, 集群自动部署, etc. 一般来说,这些类型的经验是在为大企业工作时最容易获得的. 它们处理的流量大得多,运营预算也大得多, 每个月在服务器上花费数百万美元.
Full-stack vs. 专业开发人员选择
您可能想知道是否应该雇佣全栈开发人员,还是雇佣一些专家单独处理每一层. 有些公司甚至声称完全栈开发人员根本不存在! 他们说这需要大量的知识,没有一个人能够获得它. 他们声称,最多只有天才才能真正成为全栈开发人员.
Is that claim true? 不完全是:根据 a StackOverflow survey28%的开发者认为自己是全栈web开发者.
的确,他们对堆栈的所有层都有广泛的知识,在某些部分有更多的专业知识. 他们通常是“万事通,一无所长”的类型. 它让他们看到解决方案的大局,并协调解决方案的各个部分.
那些声称不存在全栈开发人员的公司之所以这么做,主要是因为他们自己也出售技术服务. 当你可以为每一层雇佣多个专家时,他们不希望你雇佣一个完整的栈开发人员, 即使这对您的项目上下文不合适. 这样,他们就能赚更多的钱. 他们对你不诚实,你应该像避开瘟疫一样避开他们.
让我们分析一下什么时候应该雇佣全栈开发人员,什么时候最好雇佣某些领域的专家.
何时雇佣全栈开发人员
1. 当你刚刚开始的时候
与一个全栈开发人员一起启动一个新的web项目是最好的做法. 他们可以从头开始创建解决方案,并在需要的地方布置所有应用程序组件, 创建基本的软件体系结构.
只有在这个基础上,你才能开始壮大你的团队, 让更多可能专攻某一领域的开发人员加入董事会.
尽管如此,您应该始终有一个全栈开发人员负责整个项目的开发,并协调所有领域的工作进度.
2. 当你需要技术领导时
如果您的开发团队没有技术领导,那么雇佣全栈开发人员是个好主意. Software development is like a ship; without a captain, it will go into random, undesirable places. 明智的做法是让一个人负责协调所有的任务,把所有的要素放在一起.
你需要一个对你的堆栈的所有层和子层都有广泛(即使是肤浅)知识的人. 这样他们就可以确保所有的东西都能正常工作,你的团队成员不会在不必要的工作上浪费时间.
3. 当你被成本限制时
如果你的预算有限, 然后为了获得最大的价值, 找一个全栈开发人员. Truth be told, 当你有一个专注于某些部分的技术人员团队时,开发的速度就不会那么快. 尽管如此,它仍将稳步前进. 您还将节省一些开发人员之间的通信开销,因为您将减少开发人员的数量.
4. 当你需要一个首席技术官或联合创始人
创业和创造最小可行性产品(MVP)通常是同时发生的. 如果你是一个软件公司的非技术人员,那么你没有选择,真的. 你需要找一个技术联合创始人或首席技术官(CTO).)
因为他们将负责监督所有的技术操作, 他们最好对该领域有广泛的了解. 全堆栈开发人员为您提供了这样的特性,因此我们在这种情况下推荐使用它们.
何时雇佣专业开发人员
1. 当你需要优化速度或负载
一旦你有了一个稳定的web应用程序, 您可能想要专注于优化速度或能够处理更高的流量. 在这种情况下,最好雇用对某些技术非常精通的人.
你需要一个在特定技术层有多年经验的人. 这些专家最了解所有的小怪癖, problems, 以及他们擅长的技术瓶颈. 通常,他们拥有的知识远远超过所有可用的文档. 在这种情况下,通用的全栈开发人员不是一个好的选择.
2. 当你已经拥有一个庞大的开发团队时
一旦您的应用程序达到了一定的规模,并且只有很少的人在开发它, 你应该开始雇佣更多专攻某方面的人. 这再次归结于速度和负载的改进.
在特定的阶段,您需要更多的人能够很好地处理解决方案的小部分. 这将防止它们相互干扰,并帮助你显著提高最终产品的质量.
3. 当工作只需要单层的知识
有时候,你需要完成的工作只需要某一层的知识. For instance, 如果您只需要创建一个API服务, 那么最好雇佣一个后端开发人员.
If, on the other hand, 你需要创建一个静态网站或一个没有后端的SPA, 那么与前端开发人员联系更合适. 当你知道他们的技能能满足你所有的需求时,选择更专业的专业人士是明智的.
需要什么样的经验
一旦你知道你想要雇佣全栈开发人员, 你需要开始联系潜在的候选人,开始收集他们的简历. 您应该对希望使用的技术堆栈类型有一个大致的了解.
如果你还什么都没有,那么你可以接受多种不同的选择. 您可以与您信任的技术人员或潜在的候选人讨论这些问题.
从那里您可以选择最适合您的需求的堆栈. 我们建议您选择标准的. 这将使寻找最合适的候选人的过程更加容易.
一旦你知道你将使用哪些技术, 您需要筛选全栈开发人员的简历. 您需要寻找与所需技术相匹配的经验. 如果您需要使用Node创建web应用程序,那么雇用一个经验丰富的PHP全栈开发人员是没有意义的.js.
当看候选人的经验时, 你尤其需要了解他们以前参与过的项目. 访问他们作品集中的网站链接. 选择有相关经验的专业人士,以及你可以验证的出色过往工作.
如何面试候选人
在筛选简历后,只选择那些具有匹配的技术和惊人的工作经历, 你应该开始面试候选人了. 全栈开发人员的面试问题应该是什么样的?
在你开始之前, 实际上,更重要的是检查候选人是否有适当的沟通技巧. 这是至关重要的,因为您希望他们清楚地了解您的目标,并确保您能够在没有不必要的开销的情况下轻松地转移需求.
另一件需要检查的重要事情是与工作相关的文化契合度(或灵活性). 如果你雇佣的人来自你不习惯的文化背景, 确保你们能在一起舒服地工作, 没有不必要的文化紧张对项目产生负面影响.
要做到这一点,就要明确时间、沟通频率和风格方面的期望. 这可能需要一些额外的思考来阐明通常被认为是理所当然的和未被说明的期望.
从技术角度来看, 全栈面试问题应该涵盖他们过去处理与你类似项目的经验. 询问他们在这个项目中采取的方法. 检查他们的想法是否与你的想法一致. 对他们计划如何实现你的目标达成共识是很重要的.
最后但并非最不重要的是,请他们提交一些他们以前做过的示例源代码. 它可以是一个副业项目或开源贡献. 您需要请技术人员检查它,并决定代码质量是否足够好.
如果您可以选择向候选人发送一个测试项目来实现和检查他们以前的工作, 你应该选择第二种.
最好是回顾他们之前花了很长一段时间做的事情,以及他们关心的事情. 这也表明你尊重他们和他们的时间. 对于测试项目,人们通常不愿意在其中投入大量的时间和精力. 他们通常有另一份工作, 他们忙于他们的家庭, 或者他们只是从其他公司收到了五个其他的测试项目,他们根本无法将他们最好的技能投入到这个过程中.
一旦你选择了最合适的候选人, 你所要做的就是签一份合同, set a start date, 看着你的新应用程序被创建——希望能以闪电般的速度——并在这个过程中带来可观的收入.
招聘开发人员的最大挑战
雇佣高技能的专业人士并不是一件容易的事. 你可以屈服于许多障碍和陷阱. 学习如何雇佣全栈开发人员的最好方法就是通过实践, but until you have that, here’s our advice.
Don’t Limit Your Search
过去,我们不得不依赖住在公司附近的人才. 我们的员工必须从那里到办公室工作. 这一切都随着互联网的发明和我们今天拥有的所有了不起的交流和协作工具而改变了.
如今,你几乎没有理由把搜索范围局限在某个地方. 你能接触到世界上最优秀的人才, 通常价格都很诱人, just a few clicks away. 如果你得不到最好的人的帮助, 那么你的竞争对手, 你可不想让自己陷入这种境地.
使用专业技术人才招聘
在招聘软件人才时,从值得信赖的技术专家那里获得意见是很重要的. 他们将能够正确评估候选人的技能,并发现你在面试过程中可能听到的所有夸张之处.
没有专家的支持, 你可能会雇佣一些不适合你的开发人员,他们提供的解决方案不一定是你问题的最佳答案.
允许开发人员学习新事物
您需要记住,全堆栈开发人员对所有堆栈元素都有广泛的了解. 他们不专攻所有的东西. 虽然了解一些核心技术很重要, 寻找一个对你可能选择使用的每一个小图书馆都有知识的人几乎是毫无意义的.
软件开发世界的变化非常快,程序员需要不断地学习. Without exaggeration, we can say that, for example, JavaScript开发人员需要在几周的假期后学习所有的新趋势.
所以,当一个求职者不知道一些事情的时候,不要担心. 很有可能他们会很容易地在路上捡到它们.
In any case, 最好是找一个聪明且对你的事业充满热情的人, 但对一些技术一无所知, 而不是一个对你的目标毫无热情的人, 但知道你需要的一切. 对学习和成就伟大事业的渴望会产生巨大的影响.
Go Get Them!
现在您知道了何时以及如何雇佣全栈开发人员, 你所要做的就是找到最适合你的项目的人. 但在此之前,让我们快速回顾一下:
-
全栈开发人员可以专攻不同的技术.
-
他们通常是“万事通,一无所长”的类型.
在以下情况下,你当然需要:
-
你才刚刚开始
-
你的项目需要技术领导,
-
成本是一个重要因素
-
是时候找一个首席技术官或联合创始人了.
也许在以下情况下你不应该雇佣一个:
-
你在优化速度或性能,
-
你的团队已经很大了,或者
-
专家可以完成所有需要的工作.
一旦你拿到了几份简历,你应该:
-
寻找一个有良好沟通能力和文化契合度的人
-
检查他们的技术能力.
记住这点也很好:
-
有很多有才华的人愿意远程为你工作.
-
最好使用技术专家的帮助来验证候选人.
-
开发人员可以随时学习新的库.
有了这些知识,我们相信在选择下一个全栈开发人员时,您将做出正确的选择. Good luck!