怎樣才能成爲優秀的前端工程師

學識都 人氣:2.46W

昨天,我負責公司組織的一次面試活動,感觸頗深的是其中的應聘者提問環節。我得說自己對應聘者們提出的大多數問題都相當失望。我希望聽到一些對工作充滿激情的問題。在昨天的應聘者中,只有一個人的問題是我認爲最好的,那個人問我:你覺得怎麼才能成爲優秀的前端工程師?我覺得很有必要把這個問題從面試房間裏拿出來討論一下。

怎樣才能成爲優秀的前端工程師

首先,前端工程師必須得掌握HTML、CSS和JavaScript.只懂其中一個或兩個還不行,你必須對這三門語言都很熟悉。也不是說必須對這三門語言都非常精通,但你至少要能夠運用它們完成大多數任務,而無需地頻繁地尋求別人的幫助。

優秀的前端工程師應該具備快速學習能力。推動Web發展的技術並不是靜止不動的,沒錯吧?我甚至可以說這些技術幾乎每天都在變化,如果沒有快速學習能力,你就跟不上Web發展的步伐。你必須不斷提升自己,不斷學習新技術、新模式;僅僅依靠今天的知識無法適應未來。Web的明天與今天必將有天壤之別,而你的工作就是要搞清楚如何通過自己的Web應用程序來體現這種翻天覆地的變化。

計算機科學這個大門類下面的許多分支在人們眼中實際上都不外乎科學。但是,我們所說的前端不是什麼科學,而是藝術。藝術家不僅要掌握謀生的技術,還要懂得如何運用。對同一個問題的解決方案在這種情況適用,在另一種情況下可能就不適用。對Web應用程序的前端而言,解決同一問題的方案經常會有很多。沒有哪個方案是錯的,但其中確實有一些是更合適的。優秀的前端工程師應該知道在什麼情況下使用哪種方案更合適,而在什麼情況下應該重新選擇。

優秀的'前端工程師需要具備良好的溝通能力,因爲你的工作與很多人的工作息息相關。在任何情況下,前端工程師至少都要滿足下列四類客戶的需求。

產品經理這些是負責策劃應用程序的一羣人。他們能夠想象出怎樣通過應用程序來滿足用戶需求,以及怎樣通過他們設計的模式賺到錢(但願如此)。一般來說,這些人追求的是豐富的功能。

UI設計師這些人負責應用程序的視覺設計和交互模擬。他們關心的是用戶對什麼敏感、交互的一貫性以及整體的好用性。他們熱衷於流暢靚麗但並不容易實現的用戶界面。

項目經理這些人負責實際地運行和維護應用程序。項目管理的主要關注點,無外乎正常運行時間(uptime)應用程序始終正常可用的時間、性能和截止日期。項目經理追求的目標往往是儘量保持事情的簡單化,以及不在升級更新時引入新問題。

最終用戶當然是應用程序的主要消費者。儘管我們不會經常與最終用戶打交道,但他們的反饋意見至關重要;沒人想用的應用程序毫無價值。最終用戶要求最多的就是對個人有用的功能,以及競爭性產品所具備的功能。

那麼,前端工程師應該最關注哪些人的意見呢?答案是所有這四類人。優秀的前端工程師必須知道如何平衡這四類人的需求和預期,然後在此基礎上拿出最佳解決方案。由於前端工程師處於與這四類人溝通的交匯點上,因此其溝通能力的重要性不言而喻。如果一個非常酷的新功能因爲會影響前端性能,必須刪繁就簡,你怎麼跟產品經理解釋?再比如,假設某個設計如果不改回原方案可能會給應用程序造成負面影響,你怎麼才能說服UI設計師?作爲前端工程師,你必須瞭解每一類人的想法從何而來,必須能拿出所有各方都能接受的解決方案。從某種意義上說,優秀的前端工程師就像是一位大使,需要時刻抱着外交官的心態來應對每一天的工作。

我告誡新來的前端工程師最多的一句話,就是不要在沒有作出評估之前就隨便接受某項任務。你必須始終記住,一定先搞清楚別人到底想讓你幹什麼,不能簡單地接受這個功能有問題之類的大概其的說法。而且,你還要確切地知道這個功能或設計的真正意圖何在。加一個按鈕之類的任務並不總意味着你最後會加一個按鈕。還可能意味着你會找產品經理,問一問這個按鈕有什麼用處,然後再找UI設計師一塊探討按鈕是不是最佳的交互手段。要成爲優秀的前端工程師,這種溝通至關重要。

無論從哪個方面講,我都覺得前端工程師是計算機科學職業領域中最複雜的一個工種。絕大多數傳統的編程思想已經不適用了,爲了在多種平臺中使用,多種技術都借鑑了大量軟科學的知識和理念。成爲優秀前端工程師所要具備的專業技術,涉及到廣闊而複雜的領域,這些領域又會因爲你最終必須服務的各方的介入而變得更加複雜。專業技術可能會引領你進入成爲前端工程師的大門,但只有運用該技術創造的應用程序以及你跟他人並肩協同的能力,纔會真正讓你變得優秀。