落笔之际,却发现标题之意并非全能表达我作为一个前端开发工程师的全部心意。
回顾踏入计算机IT行业,这一路行程,弥耳相伴,似是孤独的,却又感觉那么温暖。孤独的是只身奋斗在前端开发的前沿,辛酸苦寒寥寥问津;温暖的是一路走来,荆棘缠身,却问道有路。举步维艰之路,仍不忘举步前行。
搁笔沉思,望穿这几年程序人生,被动中求得生存,主动中求得进步。也算是发现:这是一个先易后难的过程。
作为一名前端开发工程师不仅要掌握基本的Web前端开发技术,网站性能优化、SEO和服务器端的基础知识,而且要学会运用各种工具进行辅助开发以及理论层面的知识,包括代码的可维护性、组件的易用性、分层语义模板和浏览器分级支持等等。【下图来源于网络】
前端开发工程师是一个很新的职业,也叫Web前端开发工程师。但是,Web前端开发是从美工演变而来的,名称上有很明显的时代特征标签。只因它是随着web发展,细分出来的行业。
在互联网的演化进程中:
- Web 1.0时代: 网站的主要内容都是静态的,用户使用网站的行为也以浏览为主。
- 2005年以后,互联网进入Web 2.0时代: 各种类似桌面软件的Web应用大量涌现,网站的前端由此发生了翻天覆地的变化网页不再只是承载单一的文字和图片,各种富媒体让网页的内容更加生动,网页上软件化的交互形式为用户提供了更好的使用体验;
这些都是基于前端技术实现的。
随着Web 2.0概念的普及和W3C组织的推广,网站重构的影响力正以惊人的速度增长。XHTML+CSS布局、DHTML和Ajax像一阵旋风,铺天盖地席卷而来,包括新浪、搜狐、网易、腾讯、淘宝等在内的各种规模的IT企业都对自己的网站进行了重构。
网站重构的目的不是为了让网页更符合Web标准,重构的本质是构建一个前端灵活的MVC框架,即HTML作为信息模型(Model),CSS控制样式(View),JavaScript负责调度数据和实现某种展现逻辑(Controller)。
同时,代码需要具有很好的复用性和可维护性。
这也是高效率、高质量开发以及协作开发的基础。
- DHTML可以让用户的操作更炫,更吸引眼球;
- Ajax可以实现无刷新的数据交换,让用户的操作更流畅。
对于普通用户来说,一个网站是否规范、功能是否强大,服务器端是用J2EE+Oracle的强大组合,还是用ASP+Access的简单组合,并没有太明显的区别。
但是,前端的用户体验却给了用户直观的印象。
随着人们对用户体验的要求越来越高,前端开发的技术难度越来越大,Web前端开发工程师这一职业也终于从设计和制作不分的局面中独立出来。
前端开发的入门门槛很低。
与服务器端语言先慢后快的学习曲线相比,前端开发的学习曲线是先快后慢。
也正因为如此,前端开发领域有很多自学成“才”的同行,但大多数人都停留在会用的阶段,因为后面的学习曲线越来越陡峭,每前进一步都很难。
几日前听了一个技术大咖的讲座:不想当裁缝的司机,不是个好厨师。
“ 如果单纯只是学习前端编程语言、而不懂后端编程语言(PHP、ASP.NET,JSP、Python),也不能算作是优秀的前端工程师。 ”
在成为一个优秀的前端工程师的道路上,充满了汗水和辛劳。
Web前端开发技术包括三个要素:HTML、CSS和JavaScript,但随着RIA的流行和普及,Flash/Flex、Silverlight、XML和服务器端语言也是前端开发工程师应该掌握的。
Web前端开发工程师既要与上游的 交互设计师
、视觉设计师
和产品经理
沟通,又要与下游的服务器端工程师
沟通,需要掌握的技能非常多。 这就从知识的广度上对Web前端开发工程师提出了要求。如果要精于前端开发这一行,也许要先精十行。
然而,全才总是少有的。所以,对于不太重要的知识,我们只需要“通”即可。但“通”到什么程度才算够用呢?
对于很多初级前端开发工程师来说,这个问题是非常令人迷惑的。
Web发展的很快,甚至可以说这些技术几乎每天都在变化!如果没有快速学习能力,就跟不上Web发展的步伐。前端工程师必须不断提升自己,不断学习新技术、新模式;仅仅依靠今天的知识无法适应未来。
Web的明天与今天必将有天壤之别
,而 前端工程师的工作就是要搞清楚如何通过自己的Web应用程序来体现这种翻天覆地的变化
另一方面,正如前面所说,前端开发是个非常新的职业,对一些规范和最佳实践的研究都处于探索阶段。总有新的灵感和技术不时闪现出来,例如:
- CSS sprite
- 悬浮定位
- 负边距布局
- 栅格布局等;
各种JavaScript框架
层出不穷,为整个前端开发领域注入了巨大的活力;
浏览器大战
也越来越白热化,跨浏览器兼容方案
依然是五花八门。
为了满足 “高可维护性”
的需要,需要 更深入、更系统地去掌握前端知识,这样才可能创建一个好的前端架构,保证代码的质量。
在一名合格的前端工程师的知识结构中:
(1) 在掌握基本的Web前端开发技术
比如:
- CSS
- HTML
- DOM
- javascript
- Ajax等等。
(2)掌握这些技术的同时,还要清楚地了解它们:
- 在不同浏览器上的兼容情况
- 渲染原理
- 以及可能存在的Bug
(3)除了这些,掌握一些别的重要的基础知识也是必须掌握的!
比如说:
- 网站性能优化
- SEO
- 服务器端的基础知识
(4)另外还要会运用各种工具进行辅助开发。
比如:
- 处理IE系列浏览器兼容性问题的IEtester
- FF排错用的Firebug、FlashFirebug、JavaScript Debugger等。
(5)除了要掌握技术层面的知识,还要掌握理论层面的知识,包括代码的可维护性、组件的易用性、分层语义模板和浏览器分级支持,等等。
可见,如果要把前端开发做得更好、更专业,真的是不简单。这就是前端开发的特点,也是让很多人困惑的原因。如此繁杂的知识体系让新手学习起来无从下手,对于老手来说,也时常不知道下一步该学什么。
建议在繁杂的体系中
有目的有方向
的学习和发展,最好是针对岗位
。
目前web前端工程师的年薪待遇平均在10万以上,高级HTML前端工程师年薪达30—50万,很多企业对于与web前端相关的技术职位更是求贤若渴。
而像我这种中级技术的咖奴,目前在这座城市也只能拿到6K+ ~ 7K+的薪水。却仍然拖着城市行业内平均水平(1W+)的后腿。(汗颜~)
一名好的前端开发人员,就要一专多能,一人多艺。也只有这样才符合顺应当下WEB互联网时代的业务需求。
高级WEB前端开发工程师
标配:
- 掌握各种修图软件,如PS\Fireworks\AI,不要求专业设计师水平,但要会用会改,今天是一专多能的时代,光会编程讨不好饭碗的;
- 精通JavaScript、jQuery、vue、 react、angular等页面效果框架,这是前端工程师的最核心技能,是专做页面效果的技术。其实精通了JavaScript,后端编程语言,如 .NET、PHP、Ruby都很容易掌握,因为其原理是一样的;
- 精通一二种模板语言,并能修改,如织梦或wordpress的模板;
- 掌握thinkphp与zend框架,能修改此类开源源码;
- 掌握html5与sencha,这是做手机等移动设备的页面前端技术;
- 掌握一二种后端编程语言,如PHP、.NET、JAVA,能读懂后端源码,实际上其原理跟JS差不多;
- 掌握node.js,熟悉各种自动化部署工具;
- 前端是重视用户体验的,不是靠美工给的页面 做出来就行了,那样不是一个合格的前端。
这么一看,自己距离技术大咖还是有蛮大的差距需要补齐的!
剩下的路,再难也要继续。
谨以此篇,总结铭志,指引我技术未来的求道之道。