为什么学前端?尼古拉斯大神是这样说的!

I was doing an interview yesterday here at Yahoo! and we had come to the point where you typically allow the candidate to ask some questions. I have to say that most of the time I’m pretty disappointed with the questions I get. I like to hear questions that indicate a certain sense of passion about working for Yahoo!. Yesterday’s candidate I think asked me the best question I’ve heard yet: “What would you say makes a good front end engineer?” That’s a question that I think deserves some discussion outside of the confines of that interview room.
 
To begin, front end engineers need to know HTML, CSS, and JavaScript. You can’t be good in just one or two of these, you really need to know all three. That doesn’t mean that you need to be an expert in all of them, but it does mean you need to be able to complete most tasks using these languages without stopping to ask someone for help.
 
A good front end engineer needs to be able to pick things up quickly. The technologies powering the Web aren’t standing still, people. I’d go so far as to say things are changing on almost a daily basis and it’s up to you to keep up with these changes. There are always new techniques and paradigms to consider and digest as part of your discipline; you cannot just rest on what you know today. The Web of tomorrow will be drastically different from the Web of today and it’s your job to understand what that difference means to your web application.
 
There are many parts of computer science that are exactly as described: science. The front end is not a science, it’s an art. An artist knows not just the tools of the trade but also when to use them. The solution to a problem in one situation may not work in another. On the front end of web applications, there’s often many solutions to the same problem. None of them are wrong, but some are more appropriate than others. A good front end engineer knows when to use a particular solution and when to consider other alternatives.
 
A good front end engineer needs to be able to communicate effectively due to the parties involved with the job. At any given time, a front end engineer answers to at least four customers:
 
Product Managers – these are the folks responsible for the direction of the application. They have a vision of what the application should offer to users and (hopefully) how to make money off of that model. Oftentimes, they will be pushing for more features.
User Interface Designers – these are the people responsible for the visual design and interaction model of the application. Their concern is what will make sense to the user, consistency of interaction, and overall usability. They are most of asking for slicker user interfaces that can be challenging to create.
Engineering Management – the group that actually builds and maintains the application. In engineering, the primary concerns are uptime (keeping the application available), performance, and deadlines. The push from engineering is usually to try to keep things as simple as possible and not introduce failure points while making changes.
End Users – the primary consumer of the application. Though there’s often not direct interaction with end users, their feedback is crucial; an application is worthless without people who want to use it. End users typically ask for things that would help them personally as well as things that are available from competitors.
So who do front end engineers care the most about? The answer is all four. A good front end engineer needs to know how to balance the wants and desires of all four groups in order to come up with an optimal solution. Communication is important because front end engineers are at the vertex of communication from these four groups. This may mean that a cool new feature needs to be scaled down because it will affect front end performance or it could mean pushing back on a design would negatively impact the accessibility of the application. As a front end engineer, you need to understand where each group is coming from and be able to suggest solutions that are acceptable by all parties. A good front end engineer is an ambassador, of sorts, and needs to have that mentality on a day-to-day basis.
 
One of the most important things I tell new front end engineers is not to simply agree to do tasks without first reviewing them. You must always understand what is being asked of you, not just in the form of a bug saying “this isn’t working right,” but also understanding what the intention of the functionality or design really is. A task to “add a button” doesn’t always mean you end up adding a button. It may mean you go back to the product manager and ask what the button is for, and then maybe go to the user interface designer to determine if a button really is the right interaction approach. It’s this communication that is vital to being a good front end engineer.
 
In many ways, I think being a front end engineer is one of the most complicated jobs in computer science. Most traditional programming concepts don’t apply and there’s a lot of soft science being applied to numerous technologies for usage on numerous platforms. The technical expertise necessary to be a good front end engineer is a vast and complicated terrain made more complex due to the parties you’re ultimately responsible to serve. Technical expertise may get you in the door as a front end engineer, but it’s your application of that expertise and your ability to work with others that makes you good.
 

我昨天在雅虎做一个采访,我们来到了你通常允许候选人提出一些问题。 我不得不说,大多数时候我对我的问题很失望。 我喜欢听到一些问题,表明有一定的激情,为雅虎工作! 昨天的候选人我想问我最好的问题,我听说了:“你会说什么使一个好的前端工程师?”这是一个问题,我认为值得在面试室的界限以外的一些讨论。
首先,前端工程师需要知道HTML,CSS和JavaScript。你不能只是一两个好,你真的需要知道所有三个。这并不意味着你需要成为所有人的专家,但这意味着你需要能够使用这些语言完成大多数任务,而不停止向某人寻求帮助。
 
一个好的前端工程师需要能够快速拾取东西。网络上的技术不是静止不动,人们。我会说,事情几乎每天都在变化,这是由你来跟上这些变化。总是有新的技术和范例要考虑和消化作为你的学科的一部分;你不能仅仅依靠你今天所知道的。明天的网络将与今天的网络截然不同,你的工作是理解这种差异对你的网络应用的意义。
 
计算机科学的许多部分完全如所描述的:科学。前端不是一门科学,它是一门艺术。艺术家不仅知道贸易的工具,而且知道何时使用它们。在一种情况下解决问题可能在另一种情况下不起作用。在Web应用程序的前端,通常有同样问题的很多解决方案。他们都不是错的,但有些比其他人更合适。一个好的前端工程师知道什么时候使用特定的解决方案,什么时候考虑其他选择。
 
一个好的前端工程师需要能够有效地沟通,因为参与工作的各方。在任何给定的时间,前端工程师回答至少四个客户:
 
产品经理 - 这些是负责应用方向的人。他们有一个愿景应用程序应该提供给用户和(希望)如何赚钱的模型。通常,他们将推动更多的功能。
用户界面设计师 - 这些是负责应用程序的视觉设计和交互模型的人员。他们的关注是什么对用户有意义,交互的一致性和整体的可用性。他们大多数要求的slicker用户界面,可以是具有挑战性的创建。
工程管理 - 实际构建和维护应用程序的组。在工程中,主要关注的是正常运行时间(保持应用程序可用),性能和截止时间。工程的推动通常是尽量使事情尽可能简单,而不是在做出改变时引入失败点。
最终用户 - 应用程序的主要使用者。虽然通常不会与最终用户直接互动,但他们的反馈至关重要;一个应用程序是没有人谁想要使用它。最终用户通常会要求能够帮助他们的内容以及竞争对手可以获得的内容。
那么前端工程师最关心谁?答案是四个。一个好的前端工程师需要知道如何平衡所有四个组的想法和愿望,以便得出一个最佳解决方案。通信是重要的,因为前端工程师是这四个组的沟通的顶点。这可能意味着一个酷的新功能需要缩小,因为它会影响前端性能,或者它可能意味着推回设计会负面影响应用程序的可访问性。作为前端工程师,您需要了解每个组的来源,并能够提供所有方都可以接受的解决方案。一个好的前端工程师是一个大使,各种各样,需要有这种心态在日常基础上。
 
我告诉新的前端工程师的一个最重要的事情不是简单地同意做任务,而没有先审查它们。你必须永远理解你被问到的是什么,而不仅仅是以“这不正常”的错误的形式,而且还要理解功能或设计的目的是什么。任务“添加按钮”并不总是意味着你最终添加一个按钮。这可能意味着你回到产品经理,问什么按钮是,然后可能去用户界面设计器,以确定一个按钮是否是正确的交互方式。正是这种沟通对于成为一个好的前端工程师至关重要。
 
在许多方面,我认为作为前端工程师是计算机科学中最复杂的工作之一。大多数传统的编程概念不适用,并且有许多软科学被应用于许多技术以在许多平台上使用。作为一个良好的前端工程师所需的技术专长是一个巨大而复杂的地形,由于您最终负责服务的各方而变得更加复杂。技术专业知识可能使您成为一名前端工程师,但它是您的专业知识和您与其他人合作,使您的良好的能力的应用程序。
原文地址:https://www.cnblogs.com/dirkhe/p/6274246.html