爲何學前端?尼古拉斯大神是這樣說的!

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用戶界面,能夠是具備挑戰性的建立。
工程管理 - 實際構建和維護應用程序的組。在工程中,主要關注的是正常運行時間(保持應用程序可用),性能和截止時間。工程的推進一般是儘可能使事情儘量簡單,而不是在作出改變時引入失敗點。
最終用戶 - 應用程序的主要使用者。雖然一般不會與最終用戶直接互動,但他們的反饋相當重要;一個應用程序是沒有人誰想要使用它。最終用戶一般會要求可以幫助他們的內容以及競爭對手能夠得到的內容。
那麼前端工程師最關心誰?答案是四個。一個好的前端工程師須要知道如何平衡全部四個組的想法和願望,以便得出一個最佳解決方案。通訊是重要的,由於前端工程師是這四個組的溝通的頂點。這可能意味着一個酷的新功能須要縮小,由於它會影響前端性能,或者它可能意味着推回設計會負面影響應用程序的可訪問性。做爲前端工程師,您須要瞭解每一個組的來源,並可以提供全部方均可以接受的解決方案。一個好的前端工程師是一個大使,各類各樣,須要有這種心態在平常基礎上。
 
我告訴新的前端工程師的一個最重要的事情不是簡單地贊成作任務,而沒有先審查它們。你必須永遠理解你被問到的是什麼,而不只僅是以「這不正常」的錯誤的形式,並且還要理解功能或設計的目的是什麼。任務「添加按鈕」並不老是意味着你最終添加一個按鈕。這可能意味着你回到產品經理,問什麼按鈕是,而後可能去用戶界面設計器,以肯定一個按鈕是不是正確的交互方式。正是這種溝通對於成爲一個好的前端工程師相當重要。
 
在許多方面,我認爲做爲前端工程師是計算機科學中最複雜的工做之一。大多數傳統的編程概念不適用,而且有許多軟科學被應用於許多技術以在許多平臺上使用。做爲一個良好的前端工程師所需的技術專長是一個巨大而複雜的地形,因爲您最終負責服務的各方而變得更加複雜。技術專業知識可能使您成爲一名前端工程師,但它是您的專業知識和您與其餘人合做,使您的良好的能力的應用程序。
相關文章
相關標籤/搜索