Make a Donation
作为一个文科转码农的“成功”案例(去年成功拿到了两家StartUp 的Fullstack Developer 的offer), 我觉得除了楼上这些基本功之外,一些行业标准的技能也有必要趁早GET。以下是从web development的角度分享一些必备技能:
Front End:
- HTML 比较简单,但是在开发过程当中活用HTML模板的技能是需要锻炼的。前端的伙伴们可以研究一下Handlbars.js , Underscore.js 或者直接研习React 的components;
- CSS 入门也比较简单,但是现在业内很少让开发人员去hardcode (干写?硬写?真不知道该怎么翻译这个单词)CSS 代码了。一般都会用SASS或者LESS 来写,然后编译出高质量,高可扩展的CSS代码;
- JavaScript: 这里面就说头太多了,本人在此有班门弄斧之处,还请各路英雄海涵:
- 首先区别一个概念,JavaScript 和 jQuery 不是一回事儿。jQuery是基于javascript的一个库,所以最基本的JavaScript 一定要熟练。能不用jQuery的地方就尽量不用(performance bottleneck)。同时,了解如何写出OO(面向对象)的JS 代码(这个在ES6里面比较容易,ES5里面可以说是 pain in the ass) 也是一大难点.
- 其次就是jQuery, 熟悉了基本的JS之后,就需要熟悉一下jQuery这一远近闻名的库,它的存在却是让web开发,尤其是AJAX 的调用简单了不少。同时,jQuery自带动画(animation),如果对于UI/UX 不是很讲究的话也可以顺手用用。
- 接下来就是掌握一个框架。JS 社区的高度活跃使得选择开发框架变的很overwhelming, Angular, Backbone, React, Ember, Knockout 等等。足可列出一个词汇表来。本人比较熟悉Backbone,总的感觉下来使用框架就是为了提高开发效率,提升代码质量,除去框架自带的API之外,项目最核心的部分归根结底还是需要自己来写, 所以如果跟Team,就选一个大家都比较欢喜的(或至少不那么反感的)框架;如果是个人的业余项目,就看看自己的偶像公司用什么;如果实在不知道该用什么,就从Backbone开始吧(不小心安利了。。。。);
- 除了写代码之外,开发人员很重要的一个职责就是测试自己的代码。那么我们怎样测试自己的代码呢?答案很简单:写更多的代码。。。Anyway,回归正题,会写Unit Test也是当今大小公司找人很看重的一个方面。市面上也有很多测试框架,在此就不赘述。但是抛开框架不谈,自己哪怕只是写一些简单的函数,然后传入不同的参数来确保自己写的代码可以通过不同的use case,那么就可以算是最简单的“habit of testing code"了。
- 忘了补充的是UI的框架,行业内最火的好像还是twitter的bootstrap,比较好学好用,熟练运用的话可以大大提升开发速度。
- 最后,很多平时自己做项目的同学不太会用到的就是Build tools,比如Gulp 或者 Grunt。 它们的作用是可以automate很多task,比如:image compression,script minification, testing, open up development server 等等。因为是基于Node,还有很多OS相关的API可以用来进行Asynchronous的I/O操作。还蛮酷的。个人感觉Gulp比较好学,可能是我比较懒,没耐性把Grunt的doc读完。。。
Backend
Backend 可能比Front End要更加复杂,毕竟前端再怎么发展,到头来都还是HTML, CSS, Javascript你方唱罢我登场。而那只”看不见的手“ —— 后端开发就不是这么回事儿了:Java, Python, Ruby, C# 以及有 “最好的编程语言” “美誉” 的PHP 百家争鸣;更别提那一个个的框架,在这里我就不给大家wiki了,比较常见的有:(Java on Spring, Python on Django, Ruby on Rails, C# on .Net, PHP on Zend,还有前端爱好者的福音:JavaScript on Express) && Java on ... <无休止符>。
总之,后端多姿多彩,该从什么入手也是参考项目需求,个人未来发展的需求,实在没有这各方面需求的,就从Python 入手吧。不是安利,论语法,Python是这里面最简单易懂的;论速度,Python不是这里面最慢的;论开发者社区,Python也是很活跃的开源编程语言;论发展方向,除了开发web service还能做做科学计算,数据分析。
而从fullstack开发的角度,不管什么语言,最重要的就是写出高可扩展,安全稳定的后端服务器应用,熟悉REST API的设计和实现,同时熟悉一个关系型数据库(PostgreSQL 或者MySQL),最好能再了解一个非关系型(传说中的NoSQL)数据库,比如MongoDB。
其他
不管开发前端还是后端,有一点都是必不可少——version control。据我了解,很多new grad这方面都很欠缺。所以建议大家自己做小项目的时候也尽量使用Git 或者SVN来进行版本控制。熟悉commit,push, pull 的工作流程。
对于培训资源,由于我转行的背景,确实接触了不少,以下是一些简单的总结,希望对于还在学习成为码农的伙伴们有个参考:
- Udemy: 资源很多,高质量的资源也有非常实惠的;最大的缺点就是选项太多,而且缺乏及时的师生互动;
- Code School: 课程资源的结构比较好,每个课程都像是打游戏,学起来很有意思;但是个人感觉这种游戏的模式反而不利于长期记忆,也许是个人不习惯这种模式的缘故吧。感觉还是在自己机器上面开发、调试比较带感;
- Coursera: 课程相对比较正式,周期比较长,灵活度比较低。个人感觉课程也多数比较旧 ;
- Udacity: 这是我用下来最好也是最贵的。亮点在于每次提交的作业都会得到助教的code review,很详细,基本上是一行一行地读过来然后在有问题的地方留评论。这一点对于没有多少编程经验的同学尤其关键,因为代码写的专不专业有时候一看整体code style就知道,而这一点是其他机构包括学校都不会特别强调的;虽然不会纠结算法,但是如果代码中存在非常低级的算法,或者重复性的代码,助教也会挺身而出以身试法,非常认真负责。价格基本是$200刀一个月,个人感觉略贵,所以如果狠下心来报名的同学一定抓紧利用所有的资源,在最短时间内收到最大的成效。
作为一个文科转码农的“成功”案例(去年成功拿到了两家StartUp 的Fullstack Developer 的offer), 我觉得除了楼上这些基本功之外,一些行业标准的技能也有必要趁早GET。以下是从web development的角度分享一些必备技能:
Front End:
- HTML 比较简单,但是在开发过程当中活用HTML模板的技能是需要锻炼的。前端的伙伴们可以研究一下Handlbars.js , Underscore.js 或者直接研习React 的components;
- CSS 入门也比较简单,但是现在业内很少让开发人员去hardcode (干写?硬写?真不知道该怎么翻译这个单词)CSS 代码了。一般都会用SASS或者LESS 来写,然后编译出高质量,高可扩展的CSS代码;
- JavaScript: 这里面就说头太多了,本人在此有班门弄斧之处,还请各路英雄海涵:
- 首先区别一个概念,JavaScript 和 jQuery 不是一回事儿。jQuery是基于javascript的一个库,所以最基本的JavaScript 一定要熟练。能不用jQuery的地方就尽量不用(performance bottleneck)。同时,了解如何写出OO(面向对象)的JS 代码(这个在ES6里面比较容易,ES5里面可以说是 pain in the ass) 也是一大难点.
- 其次就是jQuery, 熟悉了基本的JS之后,就需要熟悉一下jQuery这一远近闻名的库,它的存在却是让web开发,尤其是AJAX 的调用简单了不少。同时,jQuery自带动画(animation),如果对于UI/UX 不是很讲究的话也可以顺手用用。
- 接下来就是掌握一个框架。JS 社区的高度活跃使得选择开发框架变的很overwhelming, Angular, Backbone, React, Ember, Knockout 等等。足可列出一个词汇表来。本人比较熟悉Backbone,总的感觉下来使用框架就是为了提高开发效率,提升代码质量,除去框架自带的API之外,项目最核心的部分归根结底还是需要自己来写, 所以如果跟Team,就选一个大家都比较欢喜的(或至少不那么反感的)框架;如果是个人的业余项目,就看看自己的偶像公司用什么;如果实在不知道该用什么,就从Backbone开始吧(不小心安利了。。。。);
- 除了写代码之外,开发人员很重要的一个职责就是测试自己的代码。那么我们怎样测试自己的代码呢?答案很简单:写更多的代码。。。Anyway,回归正题,会写Unit Test也是当今大小公司找人很看重的一个方面。市面上也有很多测试框架,在此就不赘述。但是抛开框架不谈,自己哪怕只是写一些简单的函数,然后传入不同的参数来确保自己写的代码可以通过不同的use case,那么就可以算是最简单的“habit of testing code"了。
- 忘了补充的是UI的框架,行业内最火的好像还是twitter的bootstrap,比较好学好用,熟练运用的话可以大大提升开发速度。
- 最后,很多平时自己做项目的同学不太会用到的就是Build tools,比如Gulp 或者 Grunt。 它们的作用是可以automate很多task,比如:image compression,script minification, testing, open up development server 等等。因为是基于Node,还有很多OS相关的API可以用来进行Asynchronous的I/O操作。还蛮酷的。个人感觉Gulp比较好学,可能是我比较懒,没耐性把Grunt的doc读完。。。
Backend
Backend 可能比Front End要更加复杂,毕竟前端再怎么发展,到头来都还是HTML, CSS, Javascript你方唱罢我登场。而那只”看不见的手“ —— 后端开发就不是这么回事儿了:Java, Python, Ruby, C# 以及有 “最好的编程语言” “美誉” 的PHP 百家争鸣;更别提那一个个的框架,在这里我就不给大家wiki了,比较常见的有:(Java on Spring, Python on Django, Ruby on Rails, C# on .Net, PHP on Zend,还有前端爱好者的福音:JavaScript on Express) && Java on ... <无休止符>。
总之,后端多姿多彩,该从什么入手也是参考项目需求,个人未来发展的需求,实在没有这各方面需求的,就从Python 入手吧。不是安利,论语法,Python是这里面最简单易懂的;论速度,Python不是这里面最慢的;论开发者社区,Python也是很活跃的开源编程语言;论发展方向,除了开发web service还能做做科学计算,数据分析。
而从fullstack开发的角度,不管什么语言,最重要的就是写出高可扩展,安全稳定的后端服务器应用,熟悉REST API的设计和实现,同时熟悉一个关系型数据库(PostgreSQL 或者MySQL),最好能再了解一个非关系型(传说中的NoSQL)数据库,比如MongoDB。
其他
不管开发前端还是后端,有一点都是必不可少——version control。据我了解,很多new grad这方面都很欠缺。所以建议大家自己做小项目的时候也尽量使用Git 或者SVN来进行版本控制。熟悉commit,push, pull 的工作流程。
对于培训资源,由于我转行的背景,确实接触了不少,以下是一些简单的总结,希望对于还在学习成为码农的伙伴们有个参考:
- Udemy: 资源很多,高质量的资源也有非常实惠的;最大的缺点就是选项太多,而且缺乏及时的师生互动;
- Code School: 课程资源的结构比较好,每个课程都像是打游戏,学起来很有意思;但是个人感觉这种游戏的模式反而不利于长期记忆,也许是个人不习惯这种模式的缘故吧。感觉还是在自己机器上面开发、调试比较带感;
- Coursera: 课程相对比较正式,周期比较长,灵活度比较低。个人感觉课程也多数比较旧 ;
- Udacity: 这是我用下来最好也是最贵的。亮点在于每次提交的作业都会得到助教的code review,很详细,基本上是一行一行地读过来然后在有问题的地方留评论。这一点对于没有多少编程经验的同学尤其关键,因为代码写的专不专业有时候一看整体code style就知道,而这一点是其他机构包括学校都不会特别强调的;虽然不会纠结算法,但是如果代码中存在非常低级的算法,或者重复性的代码,助教也会挺身而出以身试法,非常认真负责。价格基本是$200刀一个月,个人感觉略贵,所以如果狠下心来报名的同学一定抓紧利用所有的资源,在最短时间内收到最大的成效。
Comments
Post a Comment
https://gengwg.blogspot.com/