how to be a good FE

这是一篇翻译,我将开始我的翻译工作。哈哈。英语提高指日可待啊。

http://www.nczonline.net/blog/2007/08/15/what-makes-a-good-front-end-engineer/

昨天在雅虎,我正在做一场面试,已经到了可以允许面试者问一些问题的时刻了。我不得不说在这个时间段里,我对绝大多数得到的问题都不满意。我喜欢听到的问题是能表明对在雅虎工作的明确的激情。在昨天的面试这中,我得到了有始以来我听到的最好的一个问题:"您认为怎么才能成为一个好的前端工程师?"这是一个值得在比面试更大的范围来讨论的问题。

作为开始,前端攻城狮需要精通HTML、CSS和JAVASCRIPT。你只有精通全部三样才能做一个好的前端攻城狮。那并不意味着你需要成为精通三样的专家,但你必须能够在不寻求帮助的情况下完成大多数需要这三门语言的工作。

一名好的前端攻城狮能够快速学习新鲜事物。技术正在不断驱动网络快速发展。就目前而言,事物改变速度正在以日为单位。而你决定是否跟随那些改变。那里总是有新的技术和范列去考虑和消化作为训练的一部分;你不能仅仅寄托于你今天所知道的。明天的网络将会与今天的彻底不同。并且这也是你的工作去明白这些不同对于你的网络应用的影响。

大部分电脑技术被尽可能描述为科学。前端不是一门技术,是一门艺术。艺术家不仅知道行业的工具还知道何时去使用它们。在一个情形下解决问题的方法不大可能解决另一个。在网络应用的前端里,对于一个问题有很多解决方法。都没有错,但一些方法会优于其他的。一个优秀的前端攻城狮知道何时用一个特有的解决方法和何时去考虑其他的解决方法。

一名优秀的前端需要能够和与这个工作有关的伙伴有效的沟通交流。任何时候,一名前端能够回答至少四个家伙的问题:

1.产品经理——这些人对 应用的方向进行负责。他们有一个应该提供给用户是什么样子的应用的版本和希望通过那个模板去赚钱。时常地,他们也将推出一些新特色。

2.用户界面设计师——这些人负责视觉设计和应用的交互模型。他们关心用户喜欢的东西,交互的一致性,全体的可用性。他们绝大时候被要求去挑战性地创造一些用户界面。

3.工程管理——真正建设和管理应用的一组人。在工程里,基本的关心点是正常运行时间,性能和截止日期。工程的推进通常是努力使事情保持的越简单越好,当做出一些改变时也不引起失败的点的产生。

4.最终用户——应用的基本用户。虽然通常没有与使用者的直接交互,但他们的反馈是决定性的。没有人想要使用的应用是没有价值的。使用者代表性地要求一些事情将帮助他们自己,来自于竞争者的事物也是有利的。

那么前端攻城狮最应该关心什么呢?答案是上面的全部。一名优秀的前端攻城狮需要知道怎么平衡需求和上面四组人的希望。为了到达一个最佳的解决办法。交流是重要的因为前端攻城狮是上面四组人沟通交流的顶点。这可能意味着一个很酷的新特点需要被取消因为会影响前端性能或者可能意味着推回一个设计因为会影响应用的通用性。作为一名前端攻城狮,你需要明白每组的问题来自于哪里,而且能够给出一个被所有人接受的建议。一名优秀的前端攻城狮是一名代表,需要在日常中保持这样一种心态。

我告诉前端工程师最重要事情之一就是不要简单的在没有一次审查代码的情况下同意去完成任务。你必须总能够明白是什么正在要求你,不仅仅在这种形式下的bug就说:这运行的不正常。也要明白这个功能或者设计真正的目的是什么。

在很多方面,我觉得作为一个前端工程师是计算机科学中最复杂的工作之一。大多数传统的编程概念并不适用,有很多软科学被应用到多种技术的使用在多种平台。必要的技术专长,是一个很好的前端工程师变得更加复杂一个庞大而复杂的地形,由于你是最终负责服务于各方。技术专长可以让你在门口的一个前端工程师,但它是你的应用程序的专业知识和你与其他人共同工作的能力让你变得更好。

 

下面原文:

What makes a good front end engineer?

Tags: , , , ,

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.
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.