成为全栈工程师或许只是梦想,但你值得为此奋斗
文章版权属于原网站/原作者。我依旧只是个搬运工+不称职的翻译。
Web开发者是由多种职位构成的。你可以是前端开发者,用户体验设计师,软件工程师,或者是后端开发者。如果这样说太笼统了,你也可以自称为JavaScript 专家,Bootstrap 开发者甚至是Node 明星。 在Web开发中包含着无止境(甚至是奇怪)的职位名称。那么,为何会有这么多职位的存在?它们的存在是由于在建设Web时某个职位只能做很少的事情。过去在前端和后端开发者之间有着一条明显的分界线。同样这些种类也有自己的分支。前端开发者专长于CSS或者工作在基于UI设计的JavaScript,然而后端开发者专注Ruby或者其他语言。这样在Web开发者中产生了很多争论。如果你想在领域中取得成绩,你应该专注于那些方面?需要专注所有方面吗?需要成为在前端和后端环境都突出的全栈开发者,还是杰出于在某个方面?
雇主的要求
我认为真正的问题在于单一类型的开发者是否更容易雇佣。基于这种想法,有意义的回顾一下以及试图找出当前雇主的要求。
随着Web发展,雇主希望熟悉于更多技术和框架的开发者。这是由于站点变的越来越变幻莫测,并且在原生应用以及浏览器应用的程序之间的分界逐渐模糊。正如我工作的公司,越来越多的用户要求网站胜任现代的Web应用,而不仅仅是单传的静态站点。
那些主要以静态为主的网站,其在持续减少对Web开发者的需要。事实上,其中几个公司的产品能符合建立静态站点商城的需求,使客户能够创建自己的网站,而自己无需编写一行代码。WordPress.com、Squarespace,和Wix,这些都能降低成本,每个平台都有简单的学习曲线和普通的UI。不要求编程能力。
然而我不认为这些站点能在商业上使用,我很确定它们降低了HTML,CSS和JavaScript 能力的价值,同样我认为雇主开始意识到这个问题。他们开始寻找懂得整个架构的更全面和更有经验的开发者,从下拉菜单样式到部署服务器。
然而,我不认为真正的全栈开发者是实际存在的,我相信了解整个架构的开发者更容易被雇佣。而这并不意味着你需要知道Web开发的方方面面。取而代之的是,我认为应该有清单能让每个开发者开发的去学习,并且随着时间逐渐提高。
清单
Javascript Jabber 最近放出的播客就是专注于这个话题。他们列出了大量的技术要求Web开发者应该知道的。我总结了一下最重要的技能列表如下。
- HTML, CSS, Javascript
- 一门后端语言
- 版本控制
- 命令行使用
- Node/Ruby 工具
- 客户端MVC框架
- 流行的工具和框架,例如Angular,Laravel,Rails等
- 数据库知识
- 服务器知识
- 站点部署策略
- 搭建和使用REST API
- 响应式Web开发
- 易用性
- 代码测试
这有另外一张Louis Lazaris的清单。虽然有一些年份了,但其中很多技术现在依然很常用。
不要害怕
看到表中列的技术,你应该开始意识到,最基本的,应该听过它们之间的绝大多数。 此外,没有人能精通每个Web开发工具或者技术。反而,我们应该开放的去学习Web开发,尽可能的知道更多的技术和工具。
还有记住普遍水平的了解技术就已经很好了。比如开发者能熟练运用复杂的CSS布局,同样也能通过JavaScript 增加一个新的功能。一些公司或者机构由一个开发者写前端代码,另一个写后端。如团队基础的工作流就很好,这能让开发者大致了解其他部分的工作。
总结
以某些具体的工具或者技术为中心的思想会产生不良影响以至于组织技术的提高。随着Web技术的发展,要求Web开发者需要更多的懂得整个架构。我们依然有在特定领域做的更好的自由,但是正如排版变得越发容易以及交互性的更大的需求,基本的前端技能以及应用开发会受到更多的追捧。听到雇主雇佣全栈而不是专业的开发者可能会令人不安,但Andy Shora的结论揭示了这样的状况。
的确,没有人能指望你能从前端到后端,开始到结束只靠一个人完成。同样你也不应该为提这样需求的人工作。如果你熟练五到十种技术/工具,同样也有意愿去了解其他100多种你不熟悉的,那么你就是高价值的商品了。