我說說個人見解,我以爲目前國內所謂前端工程師仍是有好多分支的,有的前端在UED部門,有的在設計部門,有的在技術部門,因此首先要找好本身 的定位,在技術部門的你就狂鑽研javascript,死扣兼容性問題, 在UED部門你就能夠關注一些交互,提升本身的溝通技巧(由於我以爲產品和交互就是耍嘴皮子的),在設計部門你就扣css細節,像素級別的,關注各類佈局 和效果的技術實現,提升設計稿還原度和效率。
javascript
首先,前端工程師必須得掌握HTML、CSS和JavaScript。只懂其中一個或兩個還不行,你必須對這三門語言都很熟悉。也不是說必須對這三門語言都很是精通,但你至少要可以運用它們完成大多數任務,而無需頻繁地尋求別人的幫助。
優 秀的前端工程師應該具有快速學習能力。推進Web發展的技術並非靜止不動的,沒錯吧?我甚至能夠說這些技術幾乎天天都在變化,若是沒有快速學習能力,你 就跟不上Web發展的步伐。你必須不斷提高本身,不斷學習新技術、新模式;僅僅依靠今天的知識沒法適應將來。Web的明天與今天必將有天壤之別,而你的工 做就是要搞清楚如何經過本身的Web應用程序來體現這種翻天覆地的變化。
計算機科學這個大門類下面的許多分支在人們眼中實際上都不外乎科 學。可是,咱們所說的前端不是什麼科學,而是藝術。藝術家不只要掌握謀生的技術,還要懂得如何運用。對同一個問題的解決方案在這種狀況適用,在另外一種狀況 下可能就不適用。對Web應用程序的前端而言,解決同一問題的方案常常會有不少。沒有哪一個方案是錯的,但其中確實有一些是更合適的。優秀的前端工程師應該 知道在什麼狀況下使用哪一種方案更合適,而在什麼狀況下應該從新選擇。
優秀的前端工程師須要具有良好的溝通能力,由於你的工做與不少人的工做息息相關。在任何狀況下,前端工程師至少都要知足下列四類客戶的需求。
- 產品經理——這些是負責策劃應用程序的一羣人。他們可以想象出怎樣經過應用程序來知足用戶需求,以及怎樣經過他們設計的模式賺到錢(希望如此)。通常來講,這些人追求的是豐富的功能。
- UI設計師——這些人負責應用程序的視覺設計和交互模擬。他們關心的是用戶對什麼敏感、交互的一向性以及總體的好用性。他們熱衷於流暢靚麗但並不容易實現的用戶界面。
- 項目經理——這些人負責實際地運行和維護應用程序。項目管理的主要關注點,無外乎正常運行時間(uptime)——應用程序始終正常可用的時間、性能和截止日期。項目經理追求的目標每每是儘可能保持事情的簡單化,以及不在升級更新時引入新問題。
- 最終用戶——固然是應用程序的主要消費者。儘管咱們不會常常與最終用戶打交道,但他們的反饋意見相當重要;沒人想用的應用程序毫無價值。最終用戶要求最多的就是對我的有用的功能,以及競爭性產品所具有的功能。
那 麼,前端工程師應該最關注哪些人的意見呢?答案是全部這四類人。優秀的前端工程師必須知道如何平衡這四類人的需求和預期,而後在此基礎上拿出最佳解決方 案。因爲前端工程師處於與這四類人溝通的交匯點上,所以其溝通能力的重要性不言而喻。若是一個很是酷的新功能由於會影響前端性能,必須刪繁就簡,你怎麼跟 產品經理解釋?再好比,假設某個設計若是不改回原方案可能會給應用程序形成負面影響,你怎麼才能說服UI設計師?做爲前端工程師,你必須瞭解每一類人的想 法從何而來,必須能拿出全部各方都能接受的解決方案。從某種意義上說,優秀的前端工程師就像是一位大使,須要時刻抱着外交官的心態來應對每一天的工做。
我 告誡新來的前端工程師最多的一句話,就是不要在沒有做出評估以前就隨便接受某項任務。你必須始終記住,必定先搞清楚別人到底想讓你幹什麼,不能簡單地接受 「這個功能有問題」之類的大概其的說法。並且,你還要確切地知道這個功能或設計的真正意圖何在。「加一個按鈕」之類的任務並不總意味着你最後會加一個按 鈕。還可能意味着你會找產品經理,問一問這個按鈕有什麼用處,而後再找UI設計師一塊探討按鈕是否是最佳的交互手段。要成爲優秀的前端工程師,這種溝通至 關重要。
不管從哪一個方面講,我都以爲前端工程師是計算機科學職業領域中最複雜的一個工種。絕大多數傳統的編程思想已經不適用了,爲了在多 種平臺中使用,多種技術都借鑑了大量軟科學的知識和理念。成爲優秀前端工程師所要具有的專業技術,涉及到廣闊而複雜的領域,這些領域又會由於你最終必須服 務的各方的介入而變得更加複雜。專業技術可能會引領你進入成爲前端工程師的大門,但只有運用該技術創造的應用程序以及你跟他人並肩協同的能力,纔會真正讓 你變得優秀。
1. 多寫。不少問題都是積累得來的。寫了,遇到了,才能去真正理解解決方案,纔會隨着本身的不斷成長而有進步。別人問我爲何知道那麼多 CSS 兼容解決方案,爲何一看就出的時候,我只能告訴他,我寫了 20 幾個 Wordpress 主題。-,- 2. 看書。看 BLOG 或者一些網上的教程,都很難讓你全面理解一個東西的。堅持看書,至少前端相關的語言都看一本。CSS 的推薦 《精通CSS》,JS 推薦 《Javascript 高級程序設計》如今都是第 2 版了。 3. 讀 BLOG。最後你會發現,不少東西你們都會。但只有某些人才解決得了某些細節性的東西,這些人就是咱們所謂的高手。很大牛在 BLOG 不會寫一些簡單的 List, 而是針對某個問題深刻研究。這時看 BLOG 對於進階很是有幫助。 4. 去學一門後端語言。怎麼說呢,實際用到會不多。但會頗有利於一些問題的理解。好比 Ajax。還有 HTML5 中像 Web sockets、post message 之類的 API。 5. 去用不少產品,至少去愛一個產品。你不止是一個前端,你還應該是一個設計者,去用不少產品,你纔會發現技術爲何有用,去愛一個產品,你纔會把技術用得更好。 好吧,這是個人我的見解。一個法學院畢業自學前端的別人面前的專業前端攻城師的作法。