最近,有一个想法在我脑海中挥之不去(主要来自 这个小组讨论),那就是前端开发者需要具备的“意识”。 一般来说,前端开发者处于许多其他工作岗位的中间位置。 网站团队中的每个人最终都会与前端开发者交谈。 这很有道理。 前端开发者创建了人们实际交互的“东西”。 一切都与前端开发者结合在一起。 也许这就是为什么这是一份如此有趣的工作!
因为前端开发者是这个中心枢纽职位,并且与许多从事不同工作的人打交道,所以如果他们有“意识”,那么这项工作可以做得更好。 了解使网站正常运行的所有其他因素。
一位前端开发者了解设计。 即使他们自己不是设计师,他们也知道设计的重要性。 他们对设计有良好的品味。 他们了解相关的工具。 他们知道设计角色在整个流程中的位置。
一位前端开发者了解后端。 即使他们自己不是后端程序员,他们也知道后端的重要性。 他们知道后端能够提供什么,以及它不能提供什么。 他们了解后端开发人员的职责。 他们了解相关的语言。 他们知道如何要求他们在前端需要的东西。
一位前端开发者了解网络。 他们知道网站是通过互联网(网络)交付的,并且该网络是一个狂野而有时不可预测的地方。 他们知道网络可以连接或断开连接,速度快或慢,可靠或不可靠。
一位前端开发者了解性能。 即使他们自己不是完全专注于性能,他们也知道性能对于网站的成功至关重要。 他们知道性能本身就是一个复杂的世界。 他们知道有一些快速获胜和长期斗争。 他们知道,只要后端速度很快,网站加载的其余 80% 的时间都是前端的关注点。
一位前端开发者了解内容策略。 即使他们自己不是内容策略师,他们也知道网站的兴衰取决于网站上的内容。 他们知道缺乏内容计划会导致可能无法通过开发解决的问题。 他们知道使用网站的人至关重要,而这些人需要找到他们需要的东西,并期望其状态良好。
一位前端开发者了解数据库。 内容存储在那里。 内容必须处于良好状态。 前端开发者只能使用从这些数据库中获取的内容。 前端开发者需要将从这些数据库中获取的内容与模板结合起来才能使网站正常运行。
一位前端开发者了解测试。 很多种! 集成测试。 回归测试。 用户测试!
一位前端开发者了解系统。 他们可能负责实施设计系统、图标系统或编码风格指南。 他们可能需要自己创建这些系统。 他们可能需要记录这些系统。
一位前端开发者了解 DevOps。 他们与项目中的其他所有程序员一起编写和提交代码,因此他们需要遵守与每个人相同的设置。 即使他们自己没有编写构建系统,他们也知道它是什么,它做什么,以及它能够做什么。 即使他们自己没有设置部署,他们也知道如何使用它。
一位前端开发者了解服务器。 没有它们,就没有网站。
一位前端开发者了解可访问性。 即使他们自己没有精通构建可访问性,他们也知道它很重要。 他们知道如何进行测试。 他们知道与谁谈论它。 他们知道关于它有一些快速获胜和长期斗争。
一位前端开发者了解设备环境。 他们知道如今网络无处不在,一个好的网站需要在这些地方满足用户。 大屏幕、小屏幕、触摸屏、远距离屏幕、黑白屏幕。 前端开发者了解未知因素。
这些只是一些伟大的前端开发者应该了解的东西。 了解得越多越好。
当然,所有这一切都在他们自己的直接工作之上。 HTML、CSS、JavaScript、响应式设计、库和框架、沟通…… 这个列表本身就令人恐惧!
我完全同意。 我认为每个前端都应该学习 Photoshop、Axure 中的 UX 设计基础知识,以及后端和数据建模/构建一个简单的数据库,只是为了更好地理解。
哇,Chris。 我一次又一次地想过,前端开发者是如何了解一家公司的内部运作的。 通常情况下,我们也会了解业务方面的情况。 这是因为公司的面貌是对公司运作方式的观察,包括其方向、产品和领导者。
在我参与过的一些公司中,我得以偷窥即将到来的变化和开发,而其他人却对此一无所知,仅仅是因为我是主要的前端开发人员。
谢谢你的分享。 有趣的视角,写作很棒。
我认为你应该和 Jens 聊一聊,加入 http://coderesponsibly.org/ :)
像往常一样,很棒的文章,Chris! 毫无疑问,前端开发者确实是您业务的展现!
我永远无法用言语表达,因为我们参与了太多事情,但你抓住了要点。
非常正确。 我认为前端开发者也承担了大部分的戏剧性。 然而,他们每小时支付给我们的工资比后端类型少 15 美元。 哎。
这些要点中的大多数也适用于其他所有开发者。
或者公司内的其他大多数职位。 每个人都需要了解其他人。
Chris,我完全同意。 阅读本文,不难看出,从某种意义上说,前端开发者是新一代的全栈开发者。
试试“工程师”,而不是开发者。 我认为开发者更像是“贯彻执行”类型,而不是像工程师那样善于沟通。
“一位前端开发者了解系统”这一段不完整。 似乎你遇到了一个小“剪切粘贴”问题。
哇,Chris,说得太对了!
我一直想知道为什么(作为前端开发者)我最终会成为所有其他团队之间的调解者。 这个列表解释了原因。 你也可以添加“谈判者”,因为这项工作中很大一部分是谈判,因为没有多少人了解所有系统,并且可以在团队之间做出妥协。
很棒。 在我看来,一旦前端开发者在这些领域掌握了意识,他们就毕业成为 Web 架构师——能够为万维网负责任地进行架构的人。
我们谈论性能时会考虑加载速度。 我们所有人都是这样做的。 但是,如果你看看性能的定义,我认为它更多地与给定任务是否完成有关。 换句话说,Web 性能与稳定性密切相关。 例如,网站是否在旧浏览器中仍然有效,或者 JavaScript 是否出现故障。 因此,我认为性能、稳定性、可访问性和优化之间存在关联。
我来自敏捷方法的背景,我们称这个有意识的人为通用专家或 T 型人才。 这个人是一位工匠,并且精通自己的工作。 他们也对每天与之合作的周围支持角色非常感兴趣。
在设计和营销领域,您的许多读者可能都属于这个领域,这种类型的人对于创建高绩效团队尤其重要。 这不仅限于前端开发者。 所有团队成员都需要了解自己的专长,但也需要对团队成员的专长有所了解。
我鼓励所有团队成员专注于自己的专业领域,但同时也要了解周围的专业领域。 设计师应该接受一些开发方面的培训。 开发者应该学习设计课程。 这让每个人都更容易协作,因为你可以说一些相同的语言,并预测团队中其他人的需求。 伟大的团队充满了 T 型人才,遍布所有学科。 他们创造了惊人的东西,并从彼此的合作中获得了巨大的乐趣。
Jonathan Hyatt
读完之后,我第一次开始思考是什么让我在开发方面如此成功。尤其是在过去一两年里,人们越来越重视“编码能力”,我认为这主要是因为有大量有抱负的爱好者涌现。很容易偏离其他有益的性格特征。从克里斯提到的内容来看
强迫症:我一直都是那种无法将某件事视为“完成”的人,除非它刚刚好(例如,一个替代的特色产品图像似乎比平板电脑的父容器略短!帐户页面上调用了一个样式表,除了嘲笑我之外没有其他作用,好像在说,“看着我占用访客查看过去订单时多出 0.2546 秒的时间”)。除了完美之外,任何其他东西都意味着完成,这将是无法理解的。
情绪感知:我知道这听起来很奇怪,但我一直都很擅长识别事物如何反映在个人的举止上。前端任务更容易,毕竟它的唯一目的是为访客服务。我会弥补可能出现的各种设计或销售团队潜在问题,而无需真正考虑(例如,结账时付款方式的位置并不立即显而易见。很有可能销售代表会从我们的客户那里得到一大堆不满,这不仅会让他们的工作更不愉快,而且最终会传回我这里)。
无所畏惧:我喜欢在自愿“冒险进入未知领域”时感受到的冲动……无论是在首页创建新功能还是想出新的方法来改进 CDN 的使用方式(例如,给定用户/管理员/客户/作者/联盟看到给定页面的方式以及该页面是否必须通过 SSL 加载)。
求知欲:我最近发现自己爱上了巧克力芯片奇威棒,但我也在谈论另一种饥饿:学习任何事物的渴望!我最近(过去一年)在 Jet.com 和 Amazon 的各种市场 API 上投入了时间:特别是寻找以无忧无虑的方式动态更新和添加我公司库存的方法(任何熟悉 Jet.com 的人都会证明,对于任何缺乏至少中等经验的人来说,卖家流程几乎是不可能的)。对给定界面的熟悉程度越高,将来就越有可能改进/调整它。
统计狂热者:我对任何形式的统计数据都着迷。能够根据从其他访客收集的数据趋势预测人类行为的想法让我惊叹不已。我一直都很喜欢任何形式的数学(高中,大学),从谷歌分析获取的信息中创造意义几乎不需要任何努力。
我相信我可以继续说下去,但我觉得你已经涵盖了要点,所以我到此为止。许多人纯粹出于经济原因而投入到程序员/网页开发者的道路上(如今,优质大学教育的成本太高了!)。虽然我对这些人没有意见,但我还是感到自己有优势。能够每天上班,感觉自己像个走进糖果店的儿童一样,真是太棒了!感谢你的见解,克里斯。
我认为前端开发人员与全栈开发人员没有什么区别。他们只是被分配执行特定的一组任务。如果你是一位优秀的工程师,你将会做得很好。最后,归根结底是你对产品的关心程度以及你与他人合作的程度。戴上消费者的帽子,我相信一位优秀的全栈开发人员也能做得很好。
我不同意这种观点。一个优秀的 前端开发人员不可能在没有对设计规则的充分理解的情况下生存下来。这和其他许多属于前端开发人员的独特责任,对很多人来说并不容易。另一方面,大多数程序员会设计吗……或者他们甚至可以被指望签署现代 UI 吗?我不这么认为,坦率地说,期望前端开发人员必须处于他们自己的顶尖水平以及其他人的顶尖水平,这感觉很虚伪。一个 Java/Python/C# 开发人员不必在前端达到相同的水平,那么为什么反过来却行不通呢?我同意事情已经改变,现在前端人员需要具备更深层的编程能力。但随着计算机科学的要求加上特定于前端的技能和才能加起来远远超过大多数其他领域,前端开发人员的真正价值需要在平衡中进行确定。
我认为自己属于全栈开发人员。从一年前开始,自从全世界都认为自己有能力运营成功的电子商务企业后,我一直都在做前端工作。我永远不会将自己的职业生涯奉献给前端,但我乐意在它持续存在的时候,通过它赚取丰厚的副业收入。因此我同意,作为一名拥有大量后端技能的人来说,表面上并没有区别。
关于设计,我从来没有投入太多时间,更多地依赖分析,这从来没有让我失望过……也许将来当每个给定市场的网站数不胜数的时候。
题外话,但让我疯狂的是,仍然有如此多的招聘人员/招聘信息要求开发人员基本上要运营一家企业(构建网站,维护网站,偶尔做 SEO 等),而工资只有每小时 12 美元。这对我来说是不可置信的。
@ jimmy 我想说你所处的市场与我描述的市场不同。在我所见过的任何地方,公司都没有期望以每小时 12 美元的工资找到企业级人才。如果你说的是在线自由职业网站和外包,我理解你的观点。这些客户对设计方面并不那么挑剔。但在我知道的市场(我相信这篇文章也提到了这一点——记住这个网站叫 CSS 技巧!),特定于前端的技能和人才非常重要。我看到的症结在于,硅谷等大城市市场的前端开发人员最近一直在提高他们对前端开发人员的标准,使其与其他工程师相同……尽管他们必须具备其他工程师群体所没有的广泛技能。顺便说一下,我也认为自己属于全栈开发人员……而且我已经做了很长时间了。
@unleashit 我觉得有必要回复我的上一条评论……我完全了解这个网站和它所针对的市场,因为我从一开始就在这里。我也必须承认,我很好奇你所在的公司,前端开发人员需要像你上面提到的那样熟悉设计。
“硅谷等大城市市场的前端开发人员最近一直在提高他们对前端开发人员的标准”这是一个有趣的观点,但我认为主要问题是缺乏任何系统来衡量潜在员工的技能/能力/等等。除了用 C++ 在白板上做题或从头到尾构建网站之外,现在真的没有简单的方法找到合适的人。考虑到你关于设计重要性的评论,我认为你与规模较小的公司合作,对吧?在较大的组织中,我还没有看到前端开发人员对特定项目的设计负责……这就是设计师存在的原因,对吧?
所以你认为要求前端开发人员在白板上解决 C++ 难题是评估他们技能的好方法吗?这正是我的意思。这是来自具有 CS 背景的招聘经理的思维方式,他们负责创建公司的专有算法。他们通常对前端了解不够,甚至无法想到评估候选人的合适方法。另一个问题是,每个种姓制度都有受益者。这就是种姓制度存在的意义!说真的,谁不希望影响别人眼中的堆栈呢,如果他们目前处于堆栈的顶端(拥有企业的关注)?
最终,我认为一旦“只做全栈”型团队的统计数据得到适当的衡量并开始出现,公司将扭转这种趋势,并认识到将人安排到他们擅长的岗位上,比试图让所有人都适应一种模式,能够带来更高的生产力。当然,拥有设计背景有助于前端开发人员。他们并不总是需要“设计”(虽然设计能力当然可以帮助获得许多类型的任务),可以这么说。但除非简单引导原型是设置的标准,否则你需要对设计有敏锐的眼光,才能正确地实现你的组件/原型。如果你没有,你的公司将花费比他们应该花费更多的时间在 QA 往返上。设计绝不是唯一的特定于前端的宝贵技能,正如这篇文章中提到的。你有没有浏览过这个网站以及 CodePen 等地方,看看前端开发人员在做什么?太棒了,对吧?不仅是炫酷的东西,还有很多在日常生产工作中苦苦钻研并使用的实用 CSS 技巧。我怀疑我不是唯一一个意识到从深入的特定于前端的专注中可以获得很多价值的人。最后我查看了一下,C++(听起来很固执)拒绝在浏览器中运行 ;-) 检查 C++(或 Java 无论什么)知识只有一件事:剔除那些没有 CS 学位的自学成才者。即使他们是优秀的 JavaScript 程序员。同意这是一件好事,只有在你 a)对前端开发的真实需求一无所知,或者 b)喜欢维持现状的情况下才有效。
无论如何,我已经尽力了……这里有一篇适合你的好文章。我认为这篇文章比我做得更好,它试图解释招聘流程的脱节以及前端开发人员/工程师的实际工作内容……
完全说得通。毕竟前端是公司展示的窗口(而且通常是唯一的窗口)——因此它必须尽可能好地、广泛地反映公司。
这个清单绝对可以继续下去。我个人要补充的是,要了解分析并深入理解数据。
很棒的文章。你的意思是我们需要成为通才,并且至少精通其中一项技能。我认为这适用于大多数职业,因为我们在生态系统中工作。我们做出的决定会影响周围做出的其他决定。意识到这一点可以让您更好地传达机会和痛点。
很棒的描述。
前端开发者很棒!
谢谢 :-)
让我感到不安的是,大多数开发人员只是意识到无障碍性;在英国,使网站无障碍是法律要求(2010 年平等法案),但仍然很少能找到这样的开发者。
同意菲利普!在倡导无障碍性时,甚至不得不提法律法规也让人不安,因为从根本上来说,无障碍性应该是一个设计问题,而不是法律问题。
这个描述似乎更像是全栈工程师……我是一个前端开发人员,我几乎不知道我开发的应用程序的后端是如何工作的,而且我对服务器是如何配置的一无所知。别问我关于数据库的事情,因为我只知道我们使用哪种技术,仅此而已。
即便如此,我认为为了成为一名优秀的前端开发人员,我专注于自己的专业领域,并且一切都能正常运作。
我会反过来说。
说出我们不应该了解的主题吧。
开发不仅仅是关于功能实现,它是一项整合性的工作。了解所有事情是不可能的,因此您必须维护自己的“意识组合”。这可能比任何技术技能更能定义您的个人资料。恕我直言,“帮助我们理解的人”比“编码人员”更有价值,也更令人满意。
没错。我从系统管理员做起,然后是后端开发人员,现在是前端开发人员。我利用过去的所有经验来开发良好的应用程序。没错,前端开发人员必须意识到这一点。
非常好的列表,阅读起来很享受。干得好!
说得好。这些是我很长时间以来一直萦绕在脑海中的想法。
(我希望我能把下一条评论用非常小的文字写出来,但 Markdown 似乎没有办法做到这一点;“onto itself” 应该是 “unto itself”。)
+100 打印出来贴在办公室的墙上。
喜欢这篇文章。每一点都非常好,并且作为前端开发人员,我从中获得了启发。
谢谢!就是这样。