误区

  1. 拜大牛为师
    • 大牛很忙,不太可能单独给你开小灶,更不可能每天都给你开 1 个小时的小灶
    • 因为第一个原因,所以一般要找大牛,都是带着问题去请教或者探讨
    • 大牛不多,不太可能每个团队都有技术大牛
    • 综合上述的几个原因,我认为对于大部分人来说,要想成为技术大牛,首先还是要明白“主要靠自己”这个道理
  2. 业务代码一样很牛逼
    • 所以我认为:业务代码都写不好的程序员肯定无法成为技术大牛,但只把业务代码写好的程序员也还不能成为技术大牛。
  3. 上班太忙没时间自己学习
    • 首先我们应该在工作中学习和提升,因为学以致用或者有实例参考,学习的效果是最好的;其次工作后学习不需要大段时间,而是要挤出时间,利用时间碎片来学习。

正确的做法

  1. 熟悉更多业务,不管是不是你负责的;熟悉更多代码,不管是不是你写的这样做有很多好处,举几个简单的例子:
    • 需求分析的时候更加准确,能够在需求阶段就识别风险、影响、难点
    • 问题处理的时候更加快速,因为相关的业务和代码都熟悉,能够快速的判断问题可能的原因并进行排查处理
    • 方案设计的时候考虑更加周全,由于有对全局业务的理解,能够设计出更好的方案
  2. 熟悉端到端
    系统性”、“全局性”、“综合性”这些字眼看起来比较虚,但其实都是技术大牛的必备的素质,要达到这样的境界,必 须去熟悉更多系统、业务、代码
  3. 自学

要知道这个世界上没有完美的东西,你负责的系统和业务,总有不合理和可以改进的地方,这些“不合理”和“可改进”的地 方,都是更高级别的怪物,打完后能够增加更多的经验值。

学习三步走

  1. learning
    这个是第一阶段,看书、google、看视频、看别人的博客都可以,但要注意一点是“系统化”,特别是一些基础性的东西,
  2. Trying
    自己动手丰衣足食
  3. Teaching
    能掌握 70% 左右,但要真正掌握,我觉得一定要做到能够跟别人讲清楚

职业发展

第一阶段:大学毕业 3 到 5 年

  • 基础的 Java 知识:你会开始看《Java 编程思想》、《Effective Java》
  • 高质量代码进阶知识:你会开始看《重构:改善既有代码的设计》、《代码大全》、《编程珠玑》
  • 常用的主流框架:
  • 系统设计与算法知识:《系统分析与设计方法》、《设计模式》、《需求分析与系统设计》、《面向对象分析与设计》、《UML 用户指南》、《算法导论》
  • 其他知识:比如数据库调优、缓存框架、NoSQL 数据库、日志框架等等

第二阶段:大学毕业 5 到 10 年

其实,年龄并不是问题的真正原因。真正的原因还是在于自身“竞争力”是否符合这个年龄所应该具备的

  • 能对所负责领域的业务特点、发展趋势、友商竞争分析
  • 服务于特定领域的客户,我们需要能了解我们的客户企业架构、业务知识。要了解清楚规划的产品、服务
  • 作为 TL, 是否有必要能将自己对于市场的洞察转换成业务规划,并能向自己的老板(或者投资人)说清楚、讲明白
  • 获得老板支持后,就需要开始带着兄弟们干活了
  • 做完业务设计后,开始要带着团队做技术方案设计、接口设计以及编码实现等。
  • 你还经历过什么有挑战的业务、技术、产品、平台等方面的成功与失败经验

什么是架构师

  • 组织业务, 业务领域的知识,构建自身看待业务的”世界观”。
  • 组织技术, 架构师需要选用合适的框架、中间件、编程语言、网络协议等技术工具, 形成一套软件系统方案
  • 组织人员, 确定人员的协作方式
  • 组织全局,对外输出, 架构师的首要目标是解决业务问题,推动业务增长

面试

面试要做的事

  • 问已经发生的事情
  • 问题解决思路
  • 少问多听

鉴别方式人员的方式

  • 更多的关心 What/How/Why
    招聘的人中有一种人是比较好的,他总能比较清楚的记住过往项目当中的重点
  • 细节!细节!细节!
    很多关键节点的细节很重要,比如网络库的优化。

推书

《程序员修炼之道 - 从小工到专家》
《设计模式之禅》
《从优秀到卓越》
《为什么精英都是时间控》
《创新者的窘境》
《魔鬼经济学》
《创造自然》
《浮生六记》

03-07 18:35