软件开发技能树

写给 ee:如果不是你的一再要求,我可能就会继续拖延下去。

正文,始。

~~~

总有一些同学找我聊天,说自己很迷茫,在软件开发的这条路上越走越没有了方向,不知道学习什么,不知道学到什么地步,在努力,却感觉一直在原地踏步,甚至会走下坡路。其实这里有一个非常重要的点需要认真考虑,那就是:不是不知道要学习什么,而是根本不知道有什么。当我们在课堂上学习C、C++、Java 的时候,我们究竟在学习什么?而当你听说有人想做 Android 开发有人写网站很厉害有人在搞大数据的时候,你觉得他们又在做什么?而实际上他们又在做什么?我们仿佛进入了一个路径复杂同时漆黑一片的迷宫,踌躇满志却又茫然无措,愿此篇文能够充当一只手电筒的角色,能够祝君看清前路,指引方向,慢慢摸索,找到真正属于自己的那条路。

语言篇

C:我们很多人接触的第一门语言应该是 C,并且学习数据结构和算法,以及在笔试面试的时候,会经常有一些用 C 语言解答的问题,然而,C 语言究竟能够给我们带来什么?个人认为,C 语言最大的好处就是培养严谨的编程思维。基本语法自然不用说,常量变量定义、数据类型、类型转换、表达式、运算符、语句结构、数组、函数等,这些基本上都要懂,高级的当然就是指针、结构体、文件处理、内存管理、Linux-C 编程等等,特别是指针,要用心理解。当然,学习数据结构和算法最好就是用 C 去写一遍,做 ACM 的同学自己都懂,所以我并不想多说。

CPP :我自己并没有学习和使用过 C++,知之甚少。Cpp 的面向对象思想还是需要多多理解,而我记得 G0F的《设计模式》就是用 CPP 来讨论常用设计模式的。

Java :Java 的基础语法当然需要懂。而 Java 最需要注意的点就是面向对象的特性。类,对象,成员变量,方法,继承,接口,抽象类,匿名内部类,访问权限控制,重写和重载,构造函数,多态,封装,Object 类,String 类,装箱,拆箱,数组,工具类,集合框架,流,文件处理,异常,GUI 编程,GWT,Swing,多线程,锁,同步,线程安全和线程不安全,泛型,反射,Socket 编程,系统操作,Java 代码优化。以上,可参照对比。学好Java 很有用哇,上可以研究大数据玩玩云计算,下可以写写网站做企业级服务端开发,还可以迅速入门 Android,一本万利。

PHP :PHP 的基本语法与 C 类似,主要是做 web 后台开发。基本语法和面向对象的点要了解,同时需要学会基本的数据库操作,推荐使用 MySQL,然后就是早点学会一个框架就行(后面会介绍)

Golang :怎么说呢,新兴语言,前途光明。基本语法不说,单说并发特性,goroutine 和channel 是Go 的王牌,同时 interface 也是一个很有艺术感的设计。go 基本上可以做 C 做的任何事情吧,同时也会支持 web 编程。

Python :正在学,还不了解。但是,人生苦短,我用 python。

JavaScript :和 Java 并木有什么关系。基本上你在网页上看到的任何动态效果都是 js 实现的(当然有一些是与CSS配合的)。闭包要好好学习。作用域问题会很坑。DOM。对浏览器的控制相关API要会。做好兼容。

HTML5 与 CSS3:与 JS 配合起来写网页。动画,画布,兼容性。Local Storage 和 Web Socket 。响应式设计。会使用 F12。

R:数据分析和处理的语言。

应用篇

JavaEE :Servlet、JavaBean、JSP、JDBC、Spring 、Spring MVC、Struts 2、Hibernate、Mybitis、 Velocity。

大数据:Hadoop、HDFS、MapReduce、HBase、Hive、YARN、Zookeeper、Pig、Mahout、Sqoop、Flume

搜索:Lucene 、Nutch、Solr

PHP :ThinkPHP、CodeIgniter、Laravel、WordPress、Typecho

Golang :Beego、Docker、Kubernetes

JS : jQuery、Bootstrap、AngularJS 、ExtJS、DWR、AJAX,XML 解析,JSON。

web server :Apache、Tomcat、Nginx

存储:MySQL、MongoDB、Redis、Memcached 、DDBS

Tools :Maven、SVN、Git、Ant、Eclipse、Sublime Text、WampServer、

平台:SAE、阿里云ECS、西部数码虚拟主机、Coding 、GitCafe、七牛云存储、又拍云存储

Android :四大组件,生命周期,性能优化

iOS :基本API,内存管理(不是非常懂)

理论篇

HTTP 协议 :报文、方法、连接、代理、缓存、安全、Cookie、认证机制、字符编码、状态码、负载均衡、重定向

TCP/IP 协议:连接、断开、选路、广播、DNS、FTP、远程登陆、SMTP、性能优化

数据结构和算法:栈、队列、串、树、二叉树、平衡树、哈弗曼树、红黑树、查找、排序、图

设计模式:工厂、单例、观察者、代理

概念篇

MVC、ORM、NoSQL、RPC

(未完待续,随时更新)

刘凯宁
20151018

Share

软件开发技能树》上有 1 条评论

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>