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 wocould 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 versions 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 using 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 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 particle solution and when to consider other alternatives.
A good front end engineer needs to be able to communicate your tively due to the parties involved with the job. At any given time, a front end engineer answers to at least four MERs:
- Product managers-These are the folks responsible for the direction of the application. they have a vision of what the application shocould 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 wocould 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 cocould mean pushing back on a design wowould 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 every 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.
[Editor's note] This article is translated from the blog of Nicolas zakas, a famous front-end engineer. Zakas is currently Yahoo! The company's chief front-end engineer, head of the Yahoo homepage, is also one of the authors of the Yui library. Of course, I believe everyone is more familiar with his masterpiece JavaScript advanced programming (Turing publishing ).
Yesterday, I took charge of Yahoo! During an interview organized by the company, I was deeply touched by the candidate's questions. I have to say that I am quite disappointed with most of the questions raised by the applicants. I want to hear some! Passionate work problems. In yesterday's candidate, only one person thought it was the best. That person asked me: How do you think you can become a good front-end engineer? I think it is necessary to discuss this question from the interview room.
First, front-end engineers must master HTML, CSS, and JavaScript. You can only understand one or two of them. You must be familiar with these three languages. It doesn't mean that you must be proficient in these three languages, but you must at least be able to use them to complete most tasks without frequently asking for help from others.
Excellent front-end engineers should be able to learn quickly. The technology that promotes web development is not static, right? I can even say that these technologies are changing almost every day. Without the ability to learn quickly, you will not be able to keep up with the pace of web development. You must constantly improve yourself and learn new technologies and models. You cannot adapt to the future by relying solely on today's knowledge. The future of the Web will be quite different from today, and your job is to figure out how to reflect this earth-shaking change through your web applications.
Many branches of computer science are actually nothing more than science. However, the front-end is not a science, but art. Artists must not only master the techniques for earning a living, but also know how to use them. The solution to the same problem applies in this case, and may not apply in another case. For the front-end of Web applications, there are often many solutions to the same problem. No solution is wrong, but some of them are more suitable. Good front-end engineers should know under what circumstances which solution is more appropriate, and under what circumstances should they reselect.
Excellent front-end engineers must have good communication skills, because your work is closely related to the work of many people. In any case, front-end engineers must meet the requirements of at least four types of customers.
Product ManagerThese are groups of people responsible for planning applications. They can imagine how to use applications to meet user needs and how to make money (hopefully) through their design model ). In general, these people are pursuing a wealth of features.
UI DesignerThese people are responsible for visual design and interactive simulation of the application. They care about what users are sensitive to, what interactions they have, and how they can be used as a whole. They are keen on FLUENT and beautiful user interfaces that are not easy to implement.
Project ManagerThese people are responsible for running and maintaining the application. The main focus of project management is the time, performance, and end date when the normal running time (uptime) application is always available. The goal of a project manager is to keep things as simple as possible and not introduce new problems when upgrading and updating.
End UserOf course, it is the main consumer of applications. Although we don't often deal with end users, their feedback is crucial; applications that no one wants to use are worthless. What end users require most is personal functions and the functions of competitive products.
So who should front-end engineers be most concerned about? The answer is all four groups of people. Good front-end engineers must know how to balance the needs and expectations of these four groups of people, and then come up with the best solution. As front-end engineers are at the intersection of the four groups of people, the importance of their communication capabilities is self-evident. If a really cool new feature affects front-end performance and must be simplified, how can you explain it to the product manager? For another example, if a design is not changed back to the original solution, it may have a negative impact on the application. How can you convince the UI Designer? As a front-end engineer, you must understand where each type of thinking comes from, and come up with solutions that all parties can accept. In a sense, a good front-end engineer is like an ambassador who needs to handle every day's work with the attitude of a diplomat.
I warn new front-end engineers not to accept a task before making an assessment. You must always remember that you must first understand what others want you to do, and cannot simply accept such statements about the problematic feature. And you need to know exactly what the purpose of this function or design is. Adding a button does not always mean that you will add a button at last. It may also mean that you will ask the product manager about the usefulness of the button, and then ask the UI Designer to see if it is the best interaction method. To become a good front-end engineer, such communication is crucial.
In any aspect, I think that front-end engineers are the most complicated job in the computer science field. The vast majority of traditional programming ideas are no longer applicable. In order to use them on multiple platforms, many technologies have borrowed a lot of soft science knowledge and ideas. The expertise required to become an excellent front-end engineer involves a broad and complex field, which will become more complex because of the involvement of all parties you must ultimately serve. Professional technology may lead you to become a front-end engineer, but only Applications created using this technology and the ability to work with others can truly make you excellent.