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