首页 > 代码库 > 程序员们,让你的孩子当个网页工程师吧!
程序员们,让你的孩子当个网页工程师吧!
原文地址
截止到今天凌晨,互联网上已经有大概 6 亿 8 千万张网页,而且依然在迅速增加。今天就来严肃地展开一下网页工程师的话题吧,关于他们的工作,关于他们的职业;关于 HTML,关于 Python;关于浏览器,关于这个世界。
周围有一些朋友的孩子也快要诞生了,将来可以考虑做个网页工程师呢~
每天的我们,在(还算)安静的办公室里,面对着电脑屏幕,忍受着窗外的喧嚣,随手点开浏览器,输入一段 URL,敲下回车键。有没有这样的体验,网站瞬间被打开了,高质量的内容,干净的布局和优秀的设计让你过目难忘。感到吃惊是吧?这一切都归功于一类人,网页工程师,所谓的 Web Developers 们,他们不仅负责网站的搭建和网页的编码,还负责各种测试分析,以及一切和网站相关的维护。
如今网页的重要性毋庸置疑,在商业上,好的网站已经是企业保持竞争力的重要环节。伴随着网页开发技术的日新月异,优秀的网站层出不穷,网页工程师对于自己的工作已经不能有半点马虎,成为一个好的网页工程师也没有任何的捷径。
但问题就来了,正在频繁迭代产品的苦逼创业者们,应该寻找怎样的网页工程师呢?想成为网页工程师却只是刚刚试水 HTML 和 JavaScript 或者刚刚开始了解 Python 和 Ruby 的童鞋,又应该如何规划自己的技术之路呢?
登录过智联、前程、大街、猎聘、周伯通、拉勾等等网站,浏览过各类工程师在线课程,接触过网页工程师相关的招聘和应聘的,应该不难发现一个趋势,就是这群人被集中分成了三大类:
前端工程师,后端工程师,全栈工程师
一个一个来说吧~
前端工程师 Front-End Developer
和用户发生交互的那一部分叫做网页的前端,说白了它就是你在浏览网页时可以看到的所有东西,字体、颜色、导航栏、下拉菜单、滚动的图片,等等等等,这一切都是由 HTML + CSS + JavaScript 拼装而成,在浏览器的渲染下变得井井有条,很神奇的!
首先,了解一下相关技能和工具。
前端工程师主要负责网站面向用户部分的代码,以及用户体验相关的架构。一个前端工程师必须熟练地掌握三门基本的语言:HTML,CSS 和 JavaScript。除此之外,前端工程师还应该熟悉一些样式框架,比如 Bootstrap 和 Foundation,和逻辑框架。比如 Backbone,AngularJS 和 EmberJS,这些框架确保了网页在不同平台上的质量和稳定性。最后还应该能够熟练的使用一些基本的工具库,比如 jQuery 和 SASS/LESS,这些能让开发更加高效,代码更加优质。
另外,很多招聘文案中都会要求求职者有 Ajax 的开发经验。Ajax 技术使用 JavaScript 默默地和服务器通信来动态加载网页内容,以实现无缝的浏览体验。虽然这不是所有网站都必须的,但这也可以算是前端工程师的基本功之一,毕竟 Ajax 技术如今也越来越多地被应用到了网页中。
有了前面说的这些技能,前端工程师就可以很好的和设计师合作,和用户体验分析师合作,把草图和原型开发成成品。牛逼的前端工程师还能精确的发现用户体验相关的问题,给出建议和解决方案,用代码来增强设计。一个好的前端工程师还应该能够和业务人员流利的沟通,明白他们的目的,理解他们的需求,了解市场上的机会,并且顺利地执行。
总之在后端工程师造好屋子以后,前端工程师主要负责房屋的内饰。至于房屋的类型和品位,这就取决于房屋的主人了。相比于后端,前端工程师一般来说更加满足于自己的成果,毕竟这是一份技术和创意相结合的工作。经验丰富的前端工程师不仅是一个技术人员,不仅是一个 Geek,因为他不仅实现了用户可以看到一切和可以交互的一切,还致力于给用户留下过目不忘的印象,所以他也是一个视觉达人。
那我们看到的网页是怎么来的呢?
再补充一下这个很多人都关心的话题吧,在网页开发过程中,设计师绘制 Logo 和图像,摄影师拍摄照片,文案编写文字,最后由前端工程师把它们组装在一起,用网页向我们阐释所有内容,用网页向我们提供独一无二的体验,把我们在网站上看到的所有内容变成可能。
体验一下? 点击打开 http://wedfairy.com 向下滑动页面的过程中上面的 八音盒 导航栏慢慢出现,把鼠标移动到“八音盒故事”的某个案例上面或者用手指按住一个案例,标题就会出现,这些都是前端工程师的功劳。
后端工程师 Back-End Developer
新的问题来了,网页上的数据存在哪里?API 又是什么?
就像一间没有造好的屋子,光有室内装饰还是远远不够的。于是我们还需要后端工程师。网页的后端包括服务器,应用程序,以及数据库。这些组件相互作用,使用 API 和前端通信,确保了网页前端的存在。后端工程师的主要工作就是搭建和维护这些组件。
还是先来看看相关技能和工具。
相比于前端开发,后端开发的技术和工具比较多元。为了实现服务器、应用程序和数据库三者之间的通信,后端工程师通常使用 Python,Ruby,PHP,Java,.Net 等语言来编写应用程序,用 MySQL,Oracle,MongoDB 来查找、存储和修改数据,然后把它们部署到服务器上来为前端代码提供支持。在实际工作中,后端工程师至少需要掌握一个开发框架,比如 PHP 的 Zend 和 Symfony,或者 Python 的 Django;还需要能够熟练使用版本控制工具,比如 Git 和 SVN;以及了解 Linux 开发环境。这些看起来比前端开发枯燥多了!
后端工程师需要使用这些框架和工具来为网站编写优质的代码,有可读性,可移植性,有完备的文档。然而和前端工程师一样,在开始埋头编码以前,后端工程师需要和业务人员充分沟通来理解他们的感性目标,将其转换为技术需求,提出具有可行性的有效方案,来搭建技术架构。
优秀的后端工程师同样热爱自己的工作,沉浸在后端的他们从来不觉得无聊,反而乐在其中。他们喜欢玩弄数据,编写出有用的 API,按照不同的权限分配给网页前端、移动应用和其他系统,让前端工程师可以安心的沉浸在交互和布局中。通俗易懂的高质量的 API 受人尊敬,这就是后端工程师的价值所在。
我们怎样才能感受到后台的存在?
点击 http://qidlove.com 打开婚礼邀请函。此时 八音盒 的服务器会把信息发送到你的手机或电脑中,然后变成你所看到的内容。这就是后台工程师所做的事情。如果你向下滚动屏幕到最后,留下自己的姓名和祝福,点击发送,别人就可以看到你的留言,下一次你再打开这个网页,留言也不会消失,这些都多亏了后端工程师啊!
全栈工程师 Full-Stack Developer
说到这里,首先要明确一点,前端开发和后端开发并不是黑与白的区别,前端工程师和后端工程师之间也没有恐怖分子和反恐精英这样子的暧昧关系。在目前的经济形势下,在这个资源紧缺的市场环境中,前端工程师往往需要学习(至少了解)一些后端开发的技能,反之亦然。产品开发有很多通用的规则,跨越了前后端的界限,于是我们开始寻找一种通才。
它的由来?
全栈工程师自然很早就存在,但是“全栈工程师”的叫法诞生于 Facebook 的开发部门。四年前,有一类特别的人群被挖掘出来,他们的工作内容涉及到了技术架构(技术栈)中的每一个环节,包括前端和后端,他们可以和后端工程师一样在服务器端玩弄应用程序和数据,也可以使用前端语言控制页面内容和调节用户体验,他们能够提供一套完整的系统。
总之,全栈工程师是网页开发的全能战士。
感觉很酷是吧?成为一个全栈工程师,同时精通前端和后端开发,无形之中给自己的职业生涯创造了很多机会。不过也别高兴得太早,就和烹饪一样,有人更擅长热菜,有人更擅长甜点,精通两者需要时间和经验。妈妈的手艺可不是一日炼成的,更不是简简单单的按照食谱来做就行(事实上很多工程师依然在这样错误的做着)。一个好的全栈工程师和一个好的大厨一样,需要有自己的内涵,需要有所有的烹饪原料,需要掌握所有的方法,才能奉献上一顿完美的晚餐。
全栈工程师需要掌握的技能相对复杂,甚至有些主观,因为这不仅仅只是技能相关的需求,而且随着时间的推移,人们对于他们的要求也在一点点变化。除了要根据不同项目掌握前端和后端开发的相应技能外,全栈工程师还需要充分理解网页正常运行的每一个环节,不仅包括合理的服务器配置,规范的 API 结构,还要通晓 JavaScript 的哲学,以及 CSS 背后的设计情怀。
举个例子,现阶段一个典型全栈工程师的装备,HTML5/CSS3 + Scala + MongoDB + 云服务 + JavaScript
有了知识和技术,就还差经验了,这也是最后一道门槛,全栈工程师尤其需要能够在一个项目面前,快速地定义前端开发和后端开发的职责,分析各种解决方案的优势和劣势,最终选择最合理的执行方式。
老问题,作为用户如何感知网站背后的全栈工程师?
这个我真的说不出来了,自己去感受吧,页面加载需要多久,内容布局是否专业,交互体验是否自然,等等等等。
最后说一句:
不要迷恋全栈工程师,任何时间,任何场合,都有一个“大而全”和“小而精”的选择,好的网站从来都不是一个人的功劳,不要忽略了设计师、摄影师、文案、产品经理、客户经理、销售、客服、用户、以及其他所有直接参与和间接参与到网页制作中的人们。识别优秀的工程师也并不一定只是技术层面的事情,无论是前端、后端还是全栈,工程师的自我修养还需要包括对细节的关注,自主学习的速度,解决问题的效率以及良好的沟通能力。
如果你是个网页工程师,那么恭喜你,你现在最不需要担心的就是找到一份称心的工作……事实上接下来五到十年是网页工程师最好混的时期了,HTML5 终于定稿,五花八门的屏幕的出现,跨平台应用的需求越来越高,微信至少还火热着,加油啊!!!
程序员们,让你的孩子当个网页工程师吧!