误区
- 拜大牛为师
- 大牛很忙,不太可能单独给你开小灶,更不可能每天都给你开 1 个小时的小灶
- 因为第一个原因,所以一般要找大牛,都是带着问题去请教或者探讨
- 大牛不多,不太可能每个团队都有技术大牛
- 综合上述的几个原因,我认为对于大部分人来说,要想成为技术大牛,首先还是要明白“主要靠自己”这个道理
- 业务代码一样很牛逼
- 所以我认为:业务代码都写不好的程序员肯定无法成为技术大牛,但只把业务代码写好的程序员也还不能成为技术大牛。
- 上班太忙没时间自己学习
- 首先我们应该在工作中学习和提升,因为学以致用或者有实例参考,学习的效果是最好的;其次工作后学习不需要大段时间,而是要挤出时间,利用时间碎片来学习。
正确的做法
Do more
做的更多,做的比你主管安排给你的任务更多
- 熟悉更多业务,不管是不是你负责的;熟悉更多代码,不管是不是你写的这样做有很多好处,举几个简单的例子:
- 需求分析的时候更加准确,能够在需求阶段就识别风险、影响、难点
- 问题处理的时候更加快速,因为相关的业务和代码都熟悉,能够快速的判断问题可能的原因并进行排查处理
- 方案设计的时候考虑更加周全,由于有对全局业务的理解,能够设计出更好的方案
- 熟悉端到端
系统性”、“全局性”、“综合性”这些字眼看起来比较虚,但其实都是技术大牛的必备的素质,要达到这样的境界,必 须去熟悉更多系统、业务、代码 - 自学
Do better
要知道这个世界上没有完美的东西,你负责的系统和业务,总有不合理和可以改进的地方,这些“不合理”和“可改进”的地 方,都是更高级别的怪物,打完后能够增加更多的经验值。
Do exercise
光看不用效果很差
学习三步走
- learning
这个是第一阶段,看书、google、看视频、看别人的博客都可以,但要注意一点是“系统化”,特别是一些基础性的东西, - Trying
自己动手丰衣足食 - Teaching
能掌握 70% 左右,但要真正掌握,我觉得一定要做到能够跟别人讲清楚
职业发展
第一阶段:大学毕业 3 到 5 年
- 基础的 Java 知识:你会开始看《Java 编程思想》、《Effective Java》
- 高质量代码进阶知识:你会开始看《重构:改善既有代码的设计》、《代码大全》、《编程珠玑》
- 常用的主流框架:
- 系统设计与算法知识:《系统分析与设计方法》、《设计模式》、《需求分析与系统设计》、《面向对象分析与设计》、《UML 用户指南》、《算法导论》
- 其他知识:比如数据库调优、缓存框架、NoSQL 数据库、日志框架等等
第二阶段:大学毕业 5 到 10 年
其实,年龄并不是问题的真正原因。真正的原因还是在于自身“竞争力”是否符合这个年龄所应该具备的
- 能对所负责领域的业务特点、发展趋势、友商竞争分析
- 服务于特定领域的客户,我们需要能了解我们的客户企业架构、业务知识。要了解清楚规划的产品、服务
- 作为 TL, 是否有必要能将自己对于市场的洞察转换成业务规划,并能向自己的老板(或者投资人)说清楚、讲明白
- 获得老板支持后,就需要开始带着兄弟们干活了
- 做完业务设计后,开始要带着团队做技术方案设计、接口设计以及编码实现等。
- 你还经历过什么有挑战的业务、技术、产品、平台等方面的成功与失败经验
什么是架构师
- 组织业务, 业务领域的知识,构建自身看待业务的”世界观”。
- 组织技术, 架构师需要选用合适的框架、中间件、编程语言、网络协议等技术工具, 形成一套软件系统方案
- 组织人员, 确定人员的协作方式
- 组织全局,对外输出, 架构师的首要目标是解决业务问题,推动业务增长
面试
面试要做的事
- 问已经发生的事情
- 问题解决思路
- 少问多听
鉴别方式人员的方式
- 更多的关心 What/How/Why
招聘的人中有一种人是比较好的,他总能比较清楚的记住过往项目当中的重点 - 细节!细节!细节!
很多关键节点的细节很重要,比如网络库的优化。
推书
《程序员修炼之道 - 从小工到专家》
《设计模式之禅》
《从优秀到卓越》
《为什么精英都是时间控》
《创新者的窘境》
《魔鬼经济学》
《创造自然》
《浮生六记》