简明现代魔法 -> 互联网时代 -> Nicholas C. Zakas 谈怎样才能成为优秀的前端工程师

Nicholas C. Zakas 谈怎样才能成为优秀的前端工程师


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:


  1. 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.
  2. 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.
  3. 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.
  4. 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.
  1. 产品经理——这些是负责策划应用程序的一群人。他们能够想象出怎样通过应用程序来满足用户需求,以及怎样通过他们设计的模式赚到钱(但愿如此)。一般来说,这些人追求的是丰富的功能。
  2. UI设计师——这些人负责应用程序的视觉设计和交互模拟。他们关心的是用户对什么敏感、交互的一贯性以及整体的好用性。他们热衷于流畅靓丽但并不容易实现的用户界面。
  3. 项目经理——这些人负责实际地运行和维护应用程序。项目管理的主要关注点,无外乎正常运行时间(uptime)——应用程序始终正常可用的时间、性能和截止日期。项目经理追求的目标往往是尽量保持事情的简单化,以及不在升级更新时引入新问题。
  4. 最终用户——当然是应用程序的主要消费者。尽管我们不会经常与最终用户打交道,但他们的反馈意见至关重要;没人想用的应用程序毫无价值。最终用户要求最多的就是对个人有用的功能,以及竞争性产品所具备的功能。

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.


Disclaimer: Any viewpoints and opinions expressed in this article are those of Nicholas C. Zakas and do not, in any way, reflect those of Yahoo!, Wrox Publishing, O'Reilly Publishing, or anyone else. I speak only for myself, not for them.

Both comments and pings are currently closed.





copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们