作者:党建凯
链接:https://www.zhihu.com/question/19554845/answer/13025360
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/19554845/answer/13025360
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
昨天,我负责了Yahoo!公司组织的一次面试活动,感触颇深的是其中的应聘者提问环节。我得说自己对应聘者们提出的大多数问题都相当失望。我希望听到一些对在Yahoo!工作充满激情的问题。在昨天的应聘者中,只有一个人的问题是我认为最好的,那个人问我:“你觉得怎么才能成为优秀的前端工程师?”我觉得很有必要把这个问题从面试房间里拿出来讨论一下。
首先,前端工程师必须得掌握HTML、CSS和JavaScript。只懂其中一个或两个还不行,你必须对这三门语言都很熟悉。也不是说必须对这三门语言都非常精通,但你至少要能够运用它们完成大多数任务,而无需频繁地寻求别人的帮助。
优秀的前端工程师应该具备快速学习能力。推动Web发展的技术并不是静止不动的,没错吧?我甚至可以说这些技术几乎每天都在变化,如果没有快速学习能力,你就跟不上Web发展的步伐。你必须不断提升自己,不断学习新技术、新模式;仅仅依靠今天的知识无法适应未来。Web的明天与今天必将有天壤之别,而你的工作就是要搞清楚如何通过自己的Web应用程序来体现这种翻天覆地的变化。
计算机科学这个大门类下面的许多分支在人们眼中实际上都不外乎科学。但是,我们所说的前端不是什么科学,而是艺术。艺术家不仅要掌握谋生的技术,还要懂得如何运用。对同一个问题的解决方案在这种情况适用,在另一种情况下可能就不适用。对Web应用程序的前端而言,解决同一问题的方案经常会有很多。没有哪个方案是错的,但其中确实有一些是更合适的。优秀的前端工程师应该知道在什么情况下使用哪种方案更合适,而在什么情况下应该重新选择。
优秀的前端工程师需要具备良好的沟通能力,因为你的工作与很多人的工作息息相关。在任何情况下,前端工程师至少都要满足下列四类客户的需求。
那么,前端工程师应该最关注哪些人的意见呢?答案是所有这四类人。优秀的前端工程师必须知道如何平衡这四类人的需求和预期,然后在此基础上拿出最佳解决方案。由于前端工程师处于与这四类人沟通的交汇点上,因此其沟通能力的重要性不言而喻。如果一个非常酷的新功能因为会影响前端性能,必须删繁就简,你怎么跟产品经理解释?再比如,假设某个设计如果不改回原方案可能会给应用程序造成负面影响,你怎么才能说服UI设计师?作为前端工程师,你必须了解每一类人的想法从何而来,必须能拿出所有各方都能接受的解决方案。从某种意义上说,优秀的前端工程师就像是一位大使,需要时刻抱着外交官的心态来应对每一天的工作。
我告诫新来的前端工程师最多的一句话,就是不要在没有作出评估之前就随便接受某项任务。你必须始终记住,一定先搞清楚别人到底想让你干什么,不能简单地接受“这个功能有问题”之类的大概其的说法。而且,你还要确切地知道这个功能或设计的真正意图何在。“加一个按钮”之类的任务并不总意味着你最后会加一个按钮。还可能意味着你会找产品经理,问一问这个按钮有什么用处,然后再找UI设计师一块探讨按钮是不是最佳的交互手段。要成为优秀的前端工程师,这种沟通至关重要。
无论从哪个方面讲,我都觉得前端工程师是计算机科学职业领域中最复杂的一个工种。绝大多数传统的编程思想已经不适用了,为了在多种平台中使用,多种技术都借鉴了大量软科学的知识和理念。成为优秀前端工程师所要具备的专业技术,涉及到广阔而复杂的领域,这些领域又会因为你最终必须服务的各方的介入而变得更加复杂。专业技术可能会引领你进入成为前端工程师的大门,但只有运用该技术创造的应用程序以及你跟他人并肩协同的能力,才会真正让你变得优秀。
首先,前端工程师必须得掌握HTML、CSS和JavaScript。只懂其中一个或两个还不行,你必须对这三门语言都很熟悉。也不是说必须对这三门语言都非常精通,但你至少要能够运用它们完成大多数任务,而无需频繁地寻求别人的帮助。
优秀的前端工程师应该具备快速学习能力。推动Web发展的技术并不是静止不动的,没错吧?我甚至可以说这些技术几乎每天都在变化,如果没有快速学习能力,你就跟不上Web发展的步伐。你必须不断提升自己,不断学习新技术、新模式;仅仅依靠今天的知识无法适应未来。Web的明天与今天必将有天壤之别,而你的工作就是要搞清楚如何通过自己的Web应用程序来体现这种翻天覆地的变化。
计算机科学这个大门类下面的许多分支在人们眼中实际上都不外乎科学。但是,我们所说的前端不是什么科学,而是艺术。艺术家不仅要掌握谋生的技术,还要懂得如何运用。对同一个问题的解决方案在这种情况适用,在另一种情况下可能就不适用。对Web应用程序的前端而言,解决同一问题的方案经常会有很多。没有哪个方案是错的,但其中确实有一些是更合适的。优秀的前端工程师应该知道在什么情况下使用哪种方案更合适,而在什么情况下应该重新选择。
优秀的前端工程师需要具备良好的沟通能力,因为你的工作与很多人的工作息息相关。在任何情况下,前端工程师至少都要满足下列四类客户的需求。
- 产品经理——这些是负责策划应用程序的一群人。他们能够想象出怎样通过应用程序来满足用户需求,以及怎样通过他们设计的模式赚到钱(但愿如此)。一般来说,这些人追求的是丰富的功能。
- UI设计师——这些人负责应用程序的视觉设计和交互模拟。他们关心的是用户对什么敏感、交互的一贯性以及整体的好用性。他们热衷于流畅靓丽但并不容易实现的用户界面。
- 项目经理——这些人负责实际地运行和维护应用程序。项目管理的主要关注点,无外乎正常运行时间(uptime)——应用程序始终正常可用的时间、性能和截止日期。项目经理追求的目标往往是尽量保持事情的简单化,以及不在升级更新时引入新问题。
- 最终用户——当然是应用程序的主要消费者。尽管我们不会经常与最终用户打交道,但他们的反馈意见至关重要;没人想用的应用程序毫无价值。最终用户要求最多的就是对个人有用的功能,以及竞争性产品所具备的功能。
那么,前端工程师应该最关注哪些人的意见呢?答案是所有这四类人。优秀的前端工程师必须知道如何平衡这四类人的需求和预期,然后在此基础上拿出最佳解决方案。由于前端工程师处于与这四类人沟通的交汇点上,因此其沟通能力的重要性不言而喻。如果一个非常酷的新功能因为会影响前端性能,必须删繁就简,你怎么跟产品经理解释?再比如,假设某个设计如果不改回原方案可能会给应用程序造成负面影响,你怎么才能说服UI设计师?作为前端工程师,你必须了解每一类人的想法从何而来,必须能拿出所有各方都能接受的解决方案。从某种意义上说,优秀的前端工程师就像是一位大使,需要时刻抱着外交官的心态来应对每一天的工作。
我告诫新来的前端工程师最多的一句话,就是不要在没有作出评估之前就随便接受某项任务。你必须始终记住,一定先搞清楚别人到底想让你干什么,不能简单地接受“这个功能有问题”之类的大概其的说法。而且,你还要确切地知道这个功能或设计的真正意图何在。“加一个按钮”之类的任务并不总意味着你最后会加一个按钮。还可能意味着你会找产品经理,问一问这个按钮有什么用处,然后再找UI设计师一块探讨按钮是不是最佳的交互手段。要成为优秀的前端工程师,这种沟通至关重要。
无论从哪个方面讲,我都觉得前端工程师是计算机科学职业领域中最复杂的一个工种。绝大多数传统的编程思想已经不适用了,为了在多种平台中使用,多种技术都借鉴了大量软科学的知识和理念。成为优秀前端工程师所要具备的专业技术,涉及到广阔而复杂的领域,这些领域又会因为你最终必须服务的各方的介入而变得更加复杂。专业技术可能会引领你进入成为前端工程师的大门,但只有运用该技术创造的应用程序以及你跟他人并肩协同的能力,才会真正让你变得优秀。
作者:sofish
链接:https://www.zhihu.com/question/19554845/answer/12223199
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/19554845/answer/12223199
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
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. 去用很多产品,至少去爱一个产品。你不止是一个前端,你还应该是一个设计者,去用很多产品,你才会发现技术为什么有用,去爱一个产品,你才会把技术用得更好。
好吧,这是我的个人看法。一个法学院毕业自学前端的别人面前的专业前端攻城师的做法。
2. 看书。看 BLOG 或者一些网上的教程,都很难让你全面理解一个东西的。坚持看书,至少前端相关的语言都看一本。CSS 的推荐 《精通CSS》,JS 推荐 《Javascript 高级程序设计》现在都是第 2 版了。
3. 读 BLOG。最后你会发现,很多东西大家都会。但只有某些人才解决得了某些细节性的东西,这些人就是我们所谓的高手。很大牛在 BLOG 不会写一些简单的 List, 而是针对某个问题深入研究。这时看 BLOG 对于进阶非常有帮助。
4. 去学一门后端语言。怎么说呢,实际用到会很少。但会很有利于一些问题的理解。比如 Ajax。还有 HTML5 中像 Web sockets、post message 之类的 API。
5. 去用很多产品,至少去爱一个产品。你不止是一个前端,你还应该是一个设计者,去用很多产品,你才会发现技术为什么有用,去爱一个产品,你才会把技术用得更好。
好吧,这是我的个人看法。一个法学院毕业自学前端的别人面前的专业前端攻城师的做法。
发布于 2011-08-10
8 条评论
感谢
收藏
•
没有帮助
•
举报
•
作者保留权利 收起
397
赞同
反对,不会显示你的姓名
1. 多写。很多问题都是积累得来的。写了,遇到了,才能去真正理解解决方案,才会随着自己的不断成长而有进步。别人问我为什么知道那么多 CSS 兼容解决方案,为什么一看就出的时候,我只能告诉他,我写了 20 几个 Wordpress 主题。-,-2. 看书。看 BLOG 或者…
显示全部
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. 去用很多产品,至少去爱一个产品。你不止是一个前端,你还应该是一个设计者,去用很多产品,你才会发现技术为什么有用,去爱一个产品,你才会把技术用得更好。
好吧,这是我的个人看法。一个法学院毕业自学前端的别人面前的专业前端攻城师的做法。
2. 看书。看 BLOG 或者一些网上的教程,都很难让你全面理解一个东西的。坚持看书,至少前端相关的语言都看一本。CSS 的推荐 《精通CSS》,JS 推荐 《Javascript 高级程序设计》现在都是第 2 版了。
3. 读 BLOG。最后你会发现,很多东西大家都会。但只有某些人才解决得了某些细节性的东西,这些人就是我们所谓的高手。很大牛在 BLOG 不会写一些简单的 List, 而是针对某个问题深入研究。这时看 BLOG 对于进阶非常有帮助。
4. 去学一门后端语言。怎么说呢,实际用到会很少。但会很有利于一些问题的理解。比如 Ajax。还有 HTML5 中像 Web sockets、post message 之类的 API。
5. 去用很多产品,至少去爱一个产品。你不止是一个前端,你还应该是一个设计者,去用很多产品,你才会发现技术为什么有用,去爱一个产品,你才会把技术用得更好。
好吧,这是我的个人看法。一个法学院毕业自学前端的别人面前的专业前端攻城师的做法。
77
赞同
反对,不会显示你的姓名
多写只是基本,在多写的基础上还要思考、总结和提炼。最重要的,我个人认为还是基础一定要打好,比如说基于CSS的布局技术,大家都很熟悉,很可能会脱口而出浮动和定位,那除此之外还有什么布局技术?这些布局技术的优劣势各是什么?每种布局技术各适合什么…
显示全部
多写只是基本,在多写的基础上还要思考、总结和提炼。最重要的,我个人认为还是基础一定要打好,比如说基于CSS的布局技术,大家都很熟悉,很可能会脱口而出浮动和定位,那除此之外还有什么布局技术?这些布局技术的优劣势各是什么?每种布局技术各适合什么场合不适合什么场合?
再比如浏览器,对浏览器渲染问题的总结到位不到位?能否说出已知的浏览器兼容性bug和对应的解决方案?以及在此基础上的为什么用某种方法就能解决这个问题,背后的原理是什么?
是的,细节一定要扣透,很多前端的同学只是停留在“我知道遇到这个问题应该怎么做”,但他们不知道为什么要这么做。最简单的例子就是都知道“overflow:hidden”可以清除浮动挽救高度塌陷,但是什么原理使得这个方法可以做到这一点呢?或者又是因为浏览器如何渲染才导致clear属性可以清除浮动呢?如果基础扣得细,这里会知道设置了clear属性的元素会通过自动填满(补足)其上外边距(margin-top)来实现视觉上的清除浮动,所以设置了clear属性来清除浮动的元素,如果对其设置margin-top会不起作用。
那再换个问法,什么情况下margin-top会不起作用呢?答案又能列出多少条?
基础是非常重要的,因为很多时候出现问题,都会发现是自己对基础知识了解不清。这不单单是指CSS元素,我发现80%以上的兼容性问题可以追溯到结构代码写的不规范不标准。错误和冗余的套嵌易导致很多意料外的问题。
再比如浏览器,对浏览器渲染问题的总结到位不到位?能否说出已知的浏览器兼容性bug和对应的解决方案?以及在此基础上的为什么用某种方法就能解决这个问题,背后的原理是什么?
是的,细节一定要扣透,很多前端的同学只是停留在“我知道遇到这个问题应该怎么做”,但他们不知道为什么要这么做。最简单的例子就是都知道“overflow:hidden”可以清除浮动挽救高度塌陷,但是什么原理使得这个方法可以做到这一点呢?或者又是因为浏览器如何渲染才导致clear属性可以清除浮动呢?如果基础扣得细,这里会知道设置了clear属性的元素会通过自动填满(补足)其上外边距(margin-top)来实现视觉上的清除浮动,所以设置了clear属性来清除浮动的元素,如果对其设置margin-top会不起作用。
那再换个问法,什么情况下margin-top会不起作用呢?答案又能列出多少条?
基础是非常重要的,因为很多时候出现问题,都会发现是自己对基础知识了解不清。这不单单是指CSS元素,我发现80%以上的兼容性问题可以追溯到结构代码写的不规范不标准。错误和冗余的套嵌易导致很多意料外的问题。
21
赞同
反对,不会显示你的姓名
讲下我比较认同的方法学:先从模仿开始,不要闭门造车,然后研究背后的实现,这其中加入自己的理解与思路,最后有整理出自己的一套实现方案
讲下我比较认同的方法学:先从模仿开始,不要闭门造车,然后研究背后的实现,这其中加入自己的理解与思路,最后有整理出自己的一套实现方案
20
赞同
反对,不会显示你的姓名
我说说我的看法,我觉得目前国内所谓前端工程师还是有好多分支的,有的前端在UED部门,有的在设计部门,有的在技术部门,所以首先要找好自己的定位,在技术部门的你就狂钻研javascript,死扣兼容性问题, 在UED部门你就可以关注一些交互,提高自己的沟通技…
显示全部
我说说我的看法,我觉得目前国内所谓前端工程师还是有好多分支的,有的前端在UED部门,有的在设计部门,有的在技术部门,所以首先要找好自己的定位,在技术部门的你就狂钻研javascript,死扣兼容性问题, 在UED部门你就可以关注一些交互,提高自己的沟通技巧(因为我觉得产品和交互就是耍嘴皮子的),在设计部门你就扣css细节,像素级别的,关注各种布局和效果的技术实现,提高设计稿还原度和效率。
你要求一个前端,即能高效准确的还原设计稿,又精通浏览器兼容性问题,同时精通javascript,各种跟后台的数据交互,又广泛涉猎产品和交互设计,能与交互设计是和产品唇枪舌战。你当前端工程师是神啊~
你要求一个前端,即能高效准确的还原设计稿,又精通浏览器兼容性问题,同时精通javascript,各种跟后台的数据交互,又广泛涉猎产品和交互设计,能与交互设计是和产品唇枪舌战。你当前端工程师是神啊~
首先,优秀的Web前端开发工程师要在知识体系上既要有广度和深度!做到这两点,其实很难。所以很多大公司即使出高薪也很难招聘到理想的前端开发工程师。技术非黑即白,只有对和错,而技巧则见仁见智。在以前,会一点Photoshop和Dreamweaver的操作,就可以制…
显示全部
首先,优秀的Web前端开发工程师要在知识体系上既要有广度和深度!做到这两点,其实很难。所以很多大公司即使出高薪也很难招聘到理想的前端开发工程师。技术非黑即白,只有对和错,而技巧则见仁见智。
在以前,会一点Photoshop和Dreamweaver的操作,就可以制作网页。
现在,只掌握这些已经远远不够了。无论是开发难度上,还是开发方式上,现在的网页制作都更接近传统的网站后台开发,所以现在不再叫网页制作,而是叫Web前端开发。
Web前端开发在产品开发环节中的作用变得越来越重要,而且需要专业的前端工程师才能做好。
Web前端开发是一项很特殊的工作,涵盖的知识面非常广,既有具体的技术,又有抽象的理念。简单地说,它的主要职能就是把网站的界面更好地呈现给用户。
其次,优秀的Web前端开发工程师应该具备快速学习能力。Web发展的很快,甚至可以说这些技术几乎每天都在变化!如果没有快速学习能力,就跟不上Web发展的步伐。前端工程师必须不断提升自己,不断学习新技术、新模式;仅仅依靠今天的知识无法适应未来。Web的明天与今天必将有天壤之别,而前端工程师的工作就是要搞清楚如何通过自己的Web应用程序来体现这种翻天覆地的变化。
说到这里,我想起了一个大师说过的一句话:对于新手来说,新技术就是新技术。
对于一个高手来说,新技术不过是就技术的延伸。
再者,优秀的前端工程师需要具备良好的沟通能力,因为前端工程师至少都要满足四类客户的需求。
1、 产品经理。这些是负责策划应用程序的一群人。他们会想出很多新鲜的、奇怪的、甚至是不可是实现的应用。一般来说,产品经理都追求丰富的功能。
2、 UI设计师。这些人负责应用程序的视觉设计和交互模拟。他们关心的是用户对什么敏感、交互的一贯性以及整体的好用性。一般来说,UI设计师于流畅靓丽、但并不容易实现的用户界面,而且他们经常不满前端工程师造成 1px 的误差。
3、 项目经理。这些人负责实际地运行和维护应用程序。项目管理的主要关注点,无外乎正常运行时间、应用程序始终正常可用的时间、性能和截止日期。项目经理追求的目标往往是尽量保持事情的简单化,以及不在升级更新时引入新问题。
4、 最终用户。指的是应用程序的主要消费者。尽管前端工程师不会经常与最终用户打交道,但他们的反馈意见至关重要。最终用户要求最多的就是对个人有用的功能,以及竞争性产品所具备的功能。
Yahoo 公司 ,YUI 的开发工程师 Nicholas C. Zakas 认为:
前端工程师是计算机科学职业领域中最复杂的一个工种。绝大多数传统的编程思想已经不适用了,为了在多种平台中使用,多种技术都借鉴了大量软科学的知识和理念。成为优秀前端工程师所要具备的专业技术,涉及到广阔而复杂的领域,这些领域又会因为你最终必须服务的各方的介入而变得更加复杂。专业技术可能会引领你进入成为前端工程师的大门,但只有运用该技术创造的应用程序以及你跟他人并肩协同的能力,才会真正让你变得优秀。
————————————
关于书籍:
HTML、CSS 类别书籍,都是大同小异,在当当网、卓越网搜索一下很多推荐。如果感觉学的差不多了,可以关注一下《CSS禅意花园》,这个很有影响力。
Javascript 的书籍 推荐看老外写的,国内很多 Javascript 书籍的作者对 Javascript 语言了解的都不是很透彻。
这里推荐几本 Javascript 书籍:
初级读物:
《JavaScript高级程序设计》:一本非常完整的经典入门书籍,被誉为JavaScript圣经之一,详解的非常详细,最新版第三版已经发布了,建议购买。
《JavaScript王者归来》百度的一个Web开发项目经理写的,作为初学者准备的入门级教程也不错。
中级读物:
《JavaScript权威指南》:另外一本JavaScript圣经,讲解的也非常详细,属于中级读物,建议购买。
《JavaScript.The.Good.Parts》:Yahoo大牛,JavaScript精神领袖Douglas Crockford的大作,虽然才100多页,但是字字珠玑啊!强烈建议阅读。
《高性能JavaScript》:《JavaScript高级程序设计》作者Nicholas C. Zakas的又一大作。
《Eloquent JavaScript》:这本书才200多页,非常短小,通过几个非常经典的例子(艾米丽姨妈的猫、悲惨的隐士、模拟生态圈、推箱子游戏等等)来介绍JavaScript方方面面的知识和应用方法。
高级读物:
《JavaScript Patterns 》:书中介绍到了各种经典的模式,如构造函数、单例、工厂等等,值得学习。
《Pro.JavaScript.Design.Patterns》:Apress出版社讲解JavaScript设计模式的书,非常不错。
《Developing JavaScript Web Applications》:构建富应用的好书,针对MVC模式有较为深入的讲解,同时也对一些流程的库进行了讲解。
《Developing Large Web Applications》:不仅有JavaScript方面的介绍,还有CSS、HTML方面的介绍,但是介绍的内容却都非常不错,真正考虑到了一个大型的Web程序下,如何进行JavaScript架构设计,值得一读。
要做优秀的前端工程师,还需要继续努力: 《高性能网站建设指南》、《Yahoo工程师的网站性能优化的建议》、“YSLOW”性能优化建议、《网站重构》、《Web开发敏捷之道》、“ jQuery 库”、“前端框架”、“HTML5”、“CSS3”。。。 这些都要深入研究!
万事开头难!如果你能到这个境界,剩下的路自己就可以走下去了。
人们常说:不想当裁缝的司机,不是个好厨师。
如果单纯只是学习前端编程语言、而不懂后端编程语言(PHP、 http://ASP.NET,JSP、Python),也不能算作是优秀的前端工程师。
在成为一个优秀的前端工程师的道路上,充满了汗水和辛劳。
在以前,会一点Photoshop和Dreamweaver的操作,就可以制作网页。
现在,只掌握这些已经远远不够了。无论是开发难度上,还是开发方式上,现在的网页制作都更接近传统的网站后台开发,所以现在不再叫网页制作,而是叫Web前端开发。
Web前端开发在产品开发环节中的作用变得越来越重要,而且需要专业的前端工程师才能做好。
Web前端开发是一项很特殊的工作,涵盖的知识面非常广,既有具体的技术,又有抽象的理念。简单地说,它的主要职能就是把网站的界面更好地呈现给用户。
其次,优秀的Web前端开发工程师应该具备快速学习能力。Web发展的很快,甚至可以说这些技术几乎每天都在变化!如果没有快速学习能力,就跟不上Web发展的步伐。前端工程师必须不断提升自己,不断学习新技术、新模式;仅仅依靠今天的知识无法适应未来。Web的明天与今天必将有天壤之别,而前端工程师的工作就是要搞清楚如何通过自己的Web应用程序来体现这种翻天覆地的变化。
说到这里,我想起了一个大师说过的一句话:对于新手来说,新技术就是新技术。
对于一个高手来说,新技术不过是就技术的延伸。
再者,优秀的前端工程师需要具备良好的沟通能力,因为前端工程师至少都要满足四类客户的需求。
1、 产品经理。这些是负责策划应用程序的一群人。他们会想出很多新鲜的、奇怪的、甚至是不可是实现的应用。一般来说,产品经理都追求丰富的功能。
2、 UI设计师。这些人负责应用程序的视觉设计和交互模拟。他们关心的是用户对什么敏感、交互的一贯性以及整体的好用性。一般来说,UI设计师于流畅靓丽、但并不容易实现的用户界面,而且他们经常不满前端工程师造成 1px 的误差。
3、 项目经理。这些人负责实际地运行和维护应用程序。项目管理的主要关注点,无外乎正常运行时间、应用程序始终正常可用的时间、性能和截止日期。项目经理追求的目标往往是尽量保持事情的简单化,以及不在升级更新时引入新问题。
4、 最终用户。指的是应用程序的主要消费者。尽管前端工程师不会经常与最终用户打交道,但他们的反馈意见至关重要。最终用户要求最多的就是对个人有用的功能,以及竞争性产品所具备的功能。
Yahoo 公司 ,YUI 的开发工程师 Nicholas C. Zakas 认为:
前端工程师是计算机科学职业领域中最复杂的一个工种。绝大多数传统的编程思想已经不适用了,为了在多种平台中使用,多种技术都借鉴了大量软科学的知识和理念。成为优秀前端工程师所要具备的专业技术,涉及到广阔而复杂的领域,这些领域又会因为你最终必须服务的各方的介入而变得更加复杂。专业技术可能会引领你进入成为前端工程师的大门,但只有运用该技术创造的应用程序以及你跟他人并肩协同的能力,才会真正让你变得优秀。
————————————
关于书籍:
HTML、CSS 类别书籍,都是大同小异,在当当网、卓越网搜索一下很多推荐。如果感觉学的差不多了,可以关注一下《CSS禅意花园》,这个很有影响力。
Javascript 的书籍 推荐看老外写的,国内很多 Javascript 书籍的作者对 Javascript 语言了解的都不是很透彻。
这里推荐几本 Javascript 书籍:
初级读物:
《JavaScript高级程序设计》:一本非常完整的经典入门书籍,被誉为JavaScript圣经之一,详解的非常详细,最新版第三版已经发布了,建议购买。
《JavaScript王者归来》百度的一个Web开发项目经理写的,作为初学者准备的入门级教程也不错。
中级读物:
《JavaScript权威指南》:另外一本JavaScript圣经,讲解的也非常详细,属于中级读物,建议购买。
《JavaScript.The.Good.Parts》:Yahoo大牛,JavaScript精神领袖Douglas Crockford的大作,虽然才100多页,但是字字珠玑啊!强烈建议阅读。
《高性能JavaScript》:《JavaScript高级程序设计》作者Nicholas C. Zakas的又一大作。
《Eloquent JavaScript》:这本书才200多页,非常短小,通过几个非常经典的例子(艾米丽姨妈的猫、悲惨的隐士、模拟生态圈、推箱子游戏等等)来介绍JavaScript方方面面的知识和应用方法。
高级读物:
《JavaScript Patterns 》:书中介绍到了各种经典的模式,如构造函数、单例、工厂等等,值得学习。
《Pro.JavaScript.Design.Patterns》:Apress出版社讲解JavaScript设计模式的书,非常不错。
《Developing JavaScript Web Applications》:构建富应用的好书,针对MVC模式有较为深入的讲解,同时也对一些流程的库进行了讲解。
《Developing Large Web Applications》:不仅有JavaScript方面的介绍,还有CSS、HTML方面的介绍,但是介绍的内容却都非常不错,真正考虑到了一个大型的Web程序下,如何进行JavaScript架构设计,值得一读。
要做优秀的前端工程师,还需要继续努力: 《高性能网站建设指南》、《Yahoo工程师的网站性能优化的建议》、“YSLOW”性能优化建议、《网站重构》、《Web开发敏捷之道》、“ jQuery 库”、“前端框架”、“HTML5”、“CSS3”。。。 这些都要深入研究!
万事开头难!如果你能到这个境界,剩下的路自己就可以走下去了。
人们常说:不想当裁缝的司机,不是个好厨师。
如果单纯只是学习前端编程语言、而不懂后端编程语言(PHP、 http://ASP.NET,JSP、Python),也不能算作是优秀的前端工程师。
在成为一个优秀的前端工程师的道路上,充满了汗水和辛劳。