r#66 @
andyL 说心里话,针对类似的我这样,半路出家的开发人员,意识到跟科班牛人之间的差距是很重要的,
但同时也不要感到自卑,因为你跟人家压根不在一个层面上,
牛人玩 Java C++ 玩的是 大数据 机器学习 模式识别 图形图像之类
(没点数学底子,这些还真玩不转),
搞工程的门槛并没那么高,当然 工程做得好,也是大有可为之处的
你既然选了 Java ,又是半路出家
几乎开发方向锁定在 web 后端 或者 Android 应用层 这两个目前市场比较大的行业,当然 Java 也有些小众的开发市场
选 web 后端 还是 Android 首先要考虑清楚,然后就是一步步规划去学习了,单纯的 Java 语言 并不能干什么用,
在日常中,绝大部分应用开发都是基于框架以及一整套开发知识体系
拿后端来讲 你就需要学习
网络(了解基本的网络知识,仅应用层就需要了解 HTTP 协议,复杂一点的还需要了解 TCP UDP 基于以上还需要了解下 各种 IO 模型, Tomcat 跟 Jetty 的底层实现就不一样,虽然两个都是 Servlet 规范的实现)
Linux (这个无解,你要用开源世界的东西, unix 那套 肯定是要会一点的,
同时最好学一门脚本语言 个人推荐 python 大法)
数据库( SQL 无解,必须要熟练,以后工作 SQL 编出花来 是经常的事情,同时还得了解下底层的存储机制,你说你学过数据结构, B+树 二叉树 有概念吧,这玩意对你理解数据库 优化查询索引有大帮助,另外还需要学习 事务管理 并发查询 等知识)
做 web 的 肯定有用框架 ORM 消息队列 ....等等
多线程
掌握面向对象的设计的基本知识与原则,
根据业务多变,提前进行设计 并运用设计模式 来 封装变化
数据结构 算法 这两门几乎涵盖了绝大部分底层实现的原理,低层次应用开发 像定制自己的 DSL ,这个门槛就有点高,得会编译原理里面很多算法,像有限状态自动机 DFS BFS 等算法
等等等,这些东西,我自学的时候 踩过不少坑,
举个例子,我一直以为 AOP 切面的逻辑是运行在另外一个线程,在后来我学习使用反射技术的时候 才发现
切面的逻辑 跟 业务主逻辑是在同一个线程中
还有事务控制,我刚开始没搞清楚,后来上网查了不少资料,也没见几篇文章能介绍的十分清楚
我上面说的,有些东西培训班肯定是不会教,培训班只会教 大家在开发中常用的,能让你快速融入开发团队
执行简单的搬砖任务的东西,这并不能怪培训班,因为只有 4 个月,
4 个月 不可能把 算法 网络 Linux 多线程 IO 模型 等等一堆东西给你讲得十分清楚
培训班针对转行的人,算是挑重点把你带进门的最好方式
-----------------------
ps: 我一年前选择自学的时候,其实基础比你们完全门外汉要好很多
高中以前 我就做过很多年的 web 狗(挂马 手工 sql 注入 等等),写过 c 语言代码
倒腾过几天单片机 Linux 大概从高二就开始在用了,日常是没问题的,脚步主要写 python
就我这样的水平,在我选择自学 Java web 后端 方向的时候,依旧是踩了不少坑,填这些坑
都是要花大量时间的,更何况是完全的门外汉