最近正好跟团队的同学one one,在聊之前,仔细想了一下针对他们所处的阶段应该给予什么样的指导,当然这些指导意见都是从我自己的经验和阅读的资料出发的,可能不是最好的,但相信还是有一定的指导作用。
这次one one的主要对象是去年毕业加入的应届生,他们普遍反映的情况是:“在经历了刚进公司时候技术快速成长期之后,目前的成长速度有些缓慢,自己也不大了解该往哪些方向努力,有些迷茫。”
幸好我提前准备了一下=0=
以我的经验总结出的Java技术人员的成长路径(主要是0-5年)
1. 技术深度
技术当然是首当其冲的,技术深度主要是指Java的深度,这主要又包含两个方面:
-- 技术细节了解程度
-- 技术设计能力
分开来说
技术细节了解程度主要是指一些写代码时候要注意的细节,比方说ExcutorService怎么用,String拼接要用StringBuilder之类的一些小细节。因为是细节,所以最好的学习路径是: 写代码。看别人的文章总结这些东西真的用处不大。如果你写的代码,能有个有经验的同学帮忙review,会提高的更快。
技术设计能力我能想到的是这么几个方面: 模块划分的能力,设计模式的应用能力,系统结构的规划能力。
要锻炼这些能力,要做好两个:1. 学好设计模式,最好是从阅读开源框架的代码方向去做。2. 不停的写业务代码,在写代码的过程中想模式如何应用进去;重构自己之前写的代码也是一个很好的方法。
2. 技术广度
这个就是除了Java之外的能力,至于为啥要学这些能力,我的原因是: 1. 可以为项目找到更合适的解决方案;2. 可以更好的跟对应的同学配合,例如DBA,例如前端
这些能力就很广泛了,html/css, android, ios, db, 运维 等等知识,学习这些内容的时候,要尽可能的去掌握对应语言的思维方式,而不是简单的学一些语法
然后广度还有一个就是视野,这个方面,我一直关注 InfoQ,看了很多大公司的框架设计实践,受益匪浅
3. 执行力
执行力这个比较虚,概括的说可能是“解决问题的能力”
我觉得对于技术人员来说,执行力中的第一个关键点:“计划执行”是必须要掌握的技能
简单来说就是解决如下场景的问题:
老板:“张三啊,这个项目你来做,看看需要多长时间,需要几个人”
张三:“需要3个人,3个月时间”
老板:“为什么需要这么多人?这么久啊?”
张三要回答这个问题就要有计划执行的能力!
这个能力有很多书可以读,但关键点不在读书,而在应用,我这几年下来觉得最行之有效的方法就是把每个项目都做WBS,工作量评估,人员安排的甘特图画出来,这样反复不断的练习,才能真正拥有这个能力。我实实在在的看到过有的同学拿到一个1-2人月的项目不知道从哪里下手,不知道一步一步怎么做的情况。
所以呢,综合以上三点,我给针对one one的同学的实际情况,给了他们这样的一些建议:
1. 工作0-1年
-- 不断的开发功能,这样公司框架里面常用的功能就可以用熟练
2. 工作1-3年
-- 所有的项目都要做计划
-- 深入学习使用的框架,把框架里面不常用的功能也搞清楚
-- review和重构自己过去写过的代码,提高技术细节能力
-- 在业务需求中尽量应用设计模式(如果没学就要学起来)
-- 学习html/css, js, android, ios 等技术,做到可以做demo和实现简单功能
-- 定期读InfoQ的文章
3. 工作3-5年
-- 在看过spring, struts等开源框架代码之后,自己写一些框架里面的核心逻辑,写跟看有本质区别
-- 要把设计能力提升到系统规划能力,一个系统该如何搭建?一个需求该用哪些技术?这些技能要靠经验+视野(InfoQ)
-- 我觉得这个阶段基本上算是“出师”了,有了自己的想法,可以按照自己的想法去学习某些领域的知识,技术或者非技术~
然后扯点大且空的东西,可能对于很多人并没有什么卵用: 人最重要的能力是独立思考的能力,以上这一坨文字是我以我的经验写出的我的思考,只是抛砖引玉,不一定最好,也不可能适合所有人,我最期待的是每个我带过的人,都可以形成自己独立思考的能力,找到适合自己的发展方向并为之努力~