微信号:FrontDev

介绍:分享 Web 前端相关的技术文章、工具资源、精选课程、热点资讯

从汇丰到阿里,我是如何从纯后端自学转前端的

2017-07-11 20:27 前端大全
都说前端开发,从开始到放弃,5年前在国内,前端开发还不像现在这么吃香,在当时选择前端开发为奋斗目标的,几乎都是第一批吃螃蟹的人,他们历经曲折,有人中途放弃,有人坚持下来,并笑到最后,到底发生了什么事情,让他们不忘初心,坚定不移。


为了写文章,本文作者Nick Zheng特意贡献出当年在英国念书的毕业照~




我本科学的是通信工程,上了一所上海的二本院校,主要是偏向电路设计方向。大一的时候,学了C语言程序设计的课程,用的是谭浩翔的《C程序设计》这本书。而事实证明,谭老师的书丢到废纸篓里是唯一正确的选择😏😂。



就这样,大一的C语言程序设计,以刚好及格的成绩结束,后遗症是:谭浩翔和当时那门课的老师,把我学编程的兴趣全部抹杀了。


我敢说,要是C语言程序设计的课程,换成高中老师来教,平均分也会上90。很多大学老师挺敷衍的那时候,上课基本就是照读PPT。

幸好,大二的时候,遇见了一个刚毕业的好老师,也算是改变了我的人生,当时他教的是数据结构。这个老师的风格就是传说中的 “Talk is cheap , Show me the code”,每次上完课都,会给大家布置一道数据结构的题目,然后下课自己去实现,作为最终成绩的30%。


这下把我逼慌了,不能在混了,然后开始尝试自己去用C语言写代码实现一个队列 ,实现一个堆栈,实现一个链表等不同数据结构。我感觉其实人还是“逼”出来的,没想到自己在编程方面还是比较有潜力的,并且班级里除了我,基本没人能够完成老师布置的作业。



在大二数据结构老师的推荐下,自己学习的Java 开发,Java Web ,Struts2, Hibernate, Spring 等开发框架。


幸好互联网时代,人人都可以获取到最优质的教育资源,一句话忠告:找到适合自己的方式最重要!


从此,因为兴趣和鼓励,我走上了一条程序员的不归路。





其实证明,本科时候学的通信行业是夕阳产业,做程序员是对滴。


当时,我把大多数的时间都花在了学习Java这个后端语言上面,写过一点PHP ,Ruby on Rails , 基本没有做前端的工作。


因为喜欢编程的缘故,大四毕业以后,10年就去英国攻读 Computing and IT 的Mater 学位。当时的想法是留在英国工作,因为英国有PSW签证, 全名Post Study Work,也就是你硕士毕业以后可以申请,然后你可以在没有雇主担保的情况下在英国工作两年。


可偏偏赶去英国的第二年,这个签证取消了(心里一万头xxx)。也就是说找工作的话只能找雇主能担保的,可是在 UKBA 的官网上能雇主担保的IT公司毕竟少,而且当时毕业时,也错过了大公司的招聘期,当时处境相当窘迫。

突然有一天 LinkedIn 上,一个猎头公司的一位亚裔猎头找到了我。说现在 汇丰银行(HSBC) 正在找英国留学的中国毕业生,面试通过后,会派遣回HSBC广州工作。心想 HSBC 可是大公司,回国发展应该不错,于是买了火车票,准备去伦敦面试。


改变命运的火车票,老司机,快上车!


第一轮是猎头公司的内部筛选,主要考察你的软技能,沟通,团队配合能力。一起面试的有剑桥、牛津、UCL、帝国理工毕业的候选人,当时比较紧张,英语肯定没别人说的好。不过个人面试做的不错,和面试官讲了下自己软件开发的经历,成功忽悠通过猎头公司的内部筛选。



第二轮去了在东伦敦的伦敦金融城 Canary Wharf 的Canada Square,  HSBC Tower 的全球总部面试。 伦敦金融城可是充满高富帅的地方,这下子真的不能打哈哈混过去了,这次卯足了劲儿在做面试准备。



在 HSBC tower 1楼等了10分钟,一个广州过来的同事下来了,在电梯里和他聊了下来了英国去了哪里玩。然后我们来到27楼,总共有两个面试官,他和她老板都是广州派过来面试的,一开始自我介绍,尽量表现出对编程的兴趣和激情。记得面试问了一道斐波那契数列的实现,还有平时用什么编程语言,怎么去处理异常等.....


面试感觉非常不错,在走出 HSBC Tower 的时候心情非常好, 然后坐火车回Newcattle。



回 Newcatle 的第二天, 和朋友中午在中国城吃饭,接到了猎头公司的电话和邮件,被告知通过了面试,当时感觉自己的努力终于有结果,很开心。



2013年10月从英国被派遣 HSBC GLTC 广州工作。


当时,我们的项目名字叫做 Evolve。HSBC 之前外汇(FX)交易系统都是用的 Flash/Flex 作为UI 界面的,但是苹果不支持flash, 所以HSBC 想把前端技术栈从 Flash/Flex 迁徙到 HTML 5 ,所以取名为 Evolve , 进化的意思。


其实这个 Team 可以有两个方向, 一个是纯前端方向,还有一个是后端方向。因为我之前对前端不太敢兴趣,所以和老大说,我希望做后端,但是老大说每个人都要参加一个全栈的培训,每个人都要学习前端, 为期两个月。



当时我的感受是10万匹草尼玛奔腾,一开始我对做前端是抗拒的,自己之前一直玩的是 Java, Ruby, PHP 这些后端语言。2013 年,其实在 IT 行业基本都没存前端这个工作,当时前端这个职位,界面的实现是靠美工来做的,主要就是切图, 写CSS,少量的 Javascript 去验证表单什么的。


当时也没有 React JS, Vue JS,虽然前端有 Angular JS  , Backbone JS , 可以说,当时国内公司基本没有人会熟练掌握这些技术,大多也就用用 JQuery 的样子。


在很不情愿的情况下去学习了前端,理想是我对做前端非常不屑,现实是其实前端还是非常好玩。由于这个项目是欧洲伦敦的项目, 相对HSBC国内的项目,国外的项目用的技术会比较 edge,也比较舍得投入钱,技术栈 HSBC 采用了当时比较新的Google 的 Angular JS ,由于 HSBC 第一次玩这个技术,整个 HSBC 基本没人玩过 Angular JS,所以HSBC 找了欧洲一家顶级的咨询公司做支持,咨询公司派了6个高级顾问来了广州 (貌似一个人一天的工时费用是1000英镑一天)。


没想到,前端开发给我的感觉还是很cool的, 相比陈旧的Java 体系,前端还是非常先进的, 说下2013年HSBC的技术架构:


  • 前端框架 Angular JS

  • 前端模块化 Require JS

  • 测试库 Jasmine

  • Test runner Karma

  • 前端工程化 Grunt,concat ,uglify


在一个优秀的团队,并且有一个良好的学习环境,时间也很充裕,我开始强迫自己看英文资料和书籍。这个时间段夯实了我的前端基础知识。



在HSBC 做了一年半之后,我回到了上海,加入了一家 O2O 互联网公司,这个团队基本清一色的 90后,作为一个 88 年的算是老人了(不小心暴露年龄了)。


虽然都是 90 后,可是工作经验却一点都不短,基本都是大学的时候就开始努力,自己去创业公司打拼。


当时用的技术栈也比较激进,在2015年的时候开始搞 facebook 的 React JS,并且用 ES6 的语法去开发,通过 babel 编译成 ES5 在浏览器里面跑,并且用 Instagram 的 Webpack 在做 module bundler. 


2015年6月,可能大多创业公司的技术栈还在用JQuery, 比较新的可能玩 Angular , 用 React 加上 ES6 这种方案的不要说国内, 就是美国硅谷来说也算是比较新的。



其实在阿里,前端技术没有创业公司那么激进,在前后端分离的解决方案,也不像创业公司那么纯粹,前端只用 HTTP web service,通过 JSON 数据可以和Java 端来进行数据交流,组件化、工程化不需要依赖后端去实现。页面的渲染还是由后端去做,只是后端渲染页面的代码用Node JS。



之前阿里主要以后端 MVC 的模式进行开发,类似 Struct 2 ,这种模式严重阻碍了前端开发效率,也让后端不能专注于业务开发。解决方案是让前端能控制 Controller 层,但是在现有技术体系下很难做到,因为不可能让所有前端都学 java,所以解决方法就是用 Node JS 去实现 Controller层。


阿里的内部 NodeJS, 框架叫做 EggJS,,目前已经开源(https://eggjs.org/ ),EggJS 是 其实是基于 Koa 进行开发的(http://koajs.com/ Koa),是一个非常优秀的框架,然而对于企业级应用来说,它还比较基础。 而 Egg 选择了 Koa 作为其基础框架,在它的模型基础上,进一步对它进行了一些增强。

十年前,一个美工对一个程序员说:“对不起,我不会喜欢你的,你不要再坚持了,我们是两个世界的人,就好比前端和后端是两个世界,你让服务器跑JS代码,可能伐?”


程序员听后默默走开,十年后,在一次 node.js发布会上,Ryan Dahl 给我讲述了这个故事。




老生常谈,只要你够优秀,不怕没有好工作,问题在于,你可能还是需要继续锻炼一段时间。由于前端工程师的入门门槛比较低,其实 JS、CSS、HTML并不是很难入门掌握的语言,但是如果要深入了解,其实还是很难的。


web 开发已经有20多年的历史,很多人存在误区,认为前端开发和 web 开发类似,其实前端一个新领域。


传统 Web 开发都是后端去渲染HTML页面。数据层个展现层的东西,都是由服务器端返回的,导致要得到当前也得新数据就要刷新整个页面,用户体验非常差。


感谢 Google 在 Gmail上 引入了 Ajax 技术 。在 Ajax 之前,用户需要点击一个链接或者网页上的按钮,等待页面重新加载才能看到结果。使用 Ajax 之后,程序员可以控制页面的一部分,而不必全盘加载。如此一来用户就能看到最新动态,不必点击,也不必等待。

JavaScript 当时只用在小型、实验性的网站上,发展多年还未流行于大网站。Gmail 不是第一个 Ajax 的网页,但却是第一个证明可以大规模应用的网页。


2015年创业潮流来临,市场上有同类型的很多产品竞争,这是一个看脸的年代,消费者用不用你的产品看的是你的界面漂不漂亮,你的用户体验到底好不好,导致了对前端程序员的需求非常大,(俗话说创业公司前期靠前端,前期靠的是用户体验,后期靠后端,因为后期用户上来了,服务器端并发是一个很重要的问题)。


只要你有这个学习觉悟,有对市场的把握,我相信你的未来会更好~






Google x GitHub 官方联合打造前端开发认证项目

本期仅限300人,197人已抢先预订


由硅谷技术学习平台 Udacity 与 GoogleGitHub 的网页开发专家及招聘经理共同设计的认证项目,帮助学习者系统掌握前端开发技能,达到行业领导者认可的硅谷水平,获得 Google 官方认证,通过工作内推加入世界领先科技企业。



项目将于 7月13日 正式开放报名,全国仅限300名额,回复关键词“FEND, 加入 Google x Github 前端开发工程师认证项目交流群:

  • 免费获得来自硅谷的前端终极技能清单;

  • 限时免费体验课程;

  • 抢先预订本期席位!

 
前端大全 更多文章 CSS进阶:试试酷炫的 3D 视角 趣图:这是我最见过的最牛叉的代码 CSS 函数的 8 个妙用 九个Console命令,让 JS 调试更简单 怎么找工作,怎么找到工作,怎么找到满意工作
猜您喜欢 【第3章第317回】为什么原型继承很重要[上] 标准GNU命令行的格式 这是网络安全的基石:密码学2016大盘点 避免让持续集成服务器成为一个安全隐患! 美团·大众点评2016春季实习生招聘指南