Skip to main content
Make a Donation
FatWallet Coupons and Deals

作为一个文科转码农的“成功”案例(去年成功拿到了两家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

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...