前文回顾
昨天写了碎碎念-以终为始(四),提到可以利用以终为始的方式来提炼出对自己最重要的事情。但是,一般情况下提炼出来的都是一些大的概念,比如我自己提炼出来的一点就是
能够创造出一些有价值的产品,这个产品能够对其他人身边的帮助
但是,具体怎么做呢?真正有意思的事情一般都没有人告诉我们操作手册在哪里,因为操作手册只能我们自己寻找。因为自己还是以敲代码为生的,所以这个产品在我眼中,就是指互联网产品。所以,要做出一个互联网产品,我肯定得夯实下自己的专业基础。
专业知识
无论是我想要达到自己创造有价值的产品的目标还是之前为了面试的准备,我都要去准备自己的专业知识,每一块专业知识,每一块里面每一个点的专业知识。因为每一个知识点都会涉及到底层的实现原理,以及为什么要这样实现,实现的作用是什么。也就是说不仅仅是what,还有how,why。为了成为一个合格的工程师也太难了些。下面一一整理下要成为一个合格的Java程序员要掌握的知识。
基础: JavaSE:Java基本的语法,简单Java程序的运行,了解Java里面基本的概念(classpath,JDK...) 数据结构和算法:常见的数据结构,数组,链表,栈,队列,树,图;还有常见的算法,二分查找,快速排序,树,图的遍历 Java并发:JMM内存模型,常见的并发的数据结构,CurrentHashMap,Atom,... 操作系统:Linux
框架: Spring全家桶:SpringBoot,Spring Framework,SpringMvc,Spring Securiy...
存储: 关系型数据库:Mysql 缓存:memcache,redis... 搜索引擎:elasticsearch
消息中间件: kafka,rocketmq
分布式: spring cloud,dubbo,zookeeper
如果还想要知道大数据: hadoop,hive,spark
如果还要知道机器学习: 语言:python 算法:常用的机器学习的算法
光是我自己能够想到的大类,就看的我头疼。所以我整理了一个思维导图,如下。
不知道有没有人看着觉得有点少,首先要明白一点是这些只是大类,每个大类里面都有很多细节要学习,其实光是上面提到的数据结构和算法或者操作系统之类的都要学习个一年半载的才能达到一些功力把。更不要说要把这些内容串联起来,解决实际的问题。另外,我也还有很多提到的方面,比如软实力,如何进行团队协作啊之类的,所以真的是海量的知识。
曾经听过吴军老师提到过五级工程师的理论,也就是说把世界上所有的工程师包括各种大牛,什么Java之父啊,Python之父啊都包括进来,划分为五个等级。
第一个级别是在有其他更高级别的工程师的帮助下,能够使用专业知识开发项目中的某一个模块,就能成为第一级别的工程师,很多在大学好好学习的毕业生都可以认为是第一个级别的工程师。对应上面的知识是应该是JavaSE,框架浅浅的学一层应该就可以。
第二级别的工程师是能够独立开发一个项目,而且能够指导第一个级别的工程师。很多工作几年的工程师,开发过很多项目的,基本上都属于第二个级别的工程师。对应上面的知识应该是前5个知识点都能够覆盖到,前2个能够有一定的认识,深入了解过,后面的三个存储、消息中间件、分布式能够对其中某几个进行过深入的了解,基本上就可以认为是第2个级别的工程师了。
第三个级别的工程师是能够带领团队开发过一些优秀的产品,可以认为是第三级别的工程师。这个产品可以不是业界所熟悉的,但是也是能够影响一部分人的,估计很多公司的Leader都可以是这个级别。
第四个级别是能够带领团队开发过一款优秀的产品,而且这个产品能够影响到很大一部分人的,比如QQ,微信这种能够影响到几亿工作人的产品。
第五个级别必须是能够开创出划时代的产品的,不如Java之父,开发出了Java语言,导致Java影响了下一个十年的互联网行业。后面三个级别基本上都不是上面我提到的专业知识能够覆盖到的了。
关于碎碎念
以后这里每天都会写一篇文章,题材不限,内容不限,字数不限。尽量把自己每天的思考都放入其中。
又是一天周一。
我是shane。今天是2019年7月29日。百天写作计划的第五天,5/100。