1.编程能⼒
对⼯程师⽽⾔,编程是最基础的能⼒,必备技能。其本质是⼀个翻译能⼒,将业务需求翻译成机器能懂的语⾔。
常见的编程范围:

  1. 数据结构算法,⽐如: 经典排序:插⼊排序、冒泡排序、快排(分划交换排序)、直接选择排序、堆排序、合并排序等。
  2. ⾼级语⾔特性: JVM、类装载机制、多线程并发
  3. 设计模式:常见的单例、⼯⼚等。
  4. UML建模:详细设计必备。
  5. ⽹络与安全:⽹络协议、安全等。
  6. 开源系列:spring、maven、redis、memcached、activeMQ等

2.调试能⼒
本质上讲,通过不断调试可以持续强化其通过静态代码去预测运⾏状态的能⼒。
所以调试能⼒也是编程能⼒提升的关键⼿段。
3.编译部署能⼒
编译并在线上部署运⾏程序是系统上线的最后⼀个环节。
随着微服务架构的普及以及业务复杂度的增加,本地编译和运⾏并不能完全模拟系统在线运⾏。
为了快速验证所编写程序的正确性,编译并在线上部署就成了必要环节。所以编译部署能⼒是⼀个必备技能。
4.性能优化能⼒
随着使⽤量的增加和业务复杂度的增加,⼤部分系统最终都会碰到性能问题,性能优化能⼒是⼀个综合能⼒。
因为影响系统性能的因素众多,包括:数据结构、操作系统、虚拟机、CPU、存储、⽹络等。
性能调优集中在:JVM调优,线程池调优、SQL调优、索引优化、数据库垂直拆分等。
具体可以参考:

5.在线运维能⼒
如果说性能优化能⼒体现的是静态思考能⼒,在线运维能⼒考验的就是动态反应能⼒。
残酷的现实是,⽆论程序多么完美,Bug永远存在。
为了对线上故障进⾏快速处理,标准化的监控、上报、升级,以及基本应对机制当然很重要,通过所观察到的现象,快速定位、缓解以及解
决相关症状也相当关键。
在线运维本质上是⼀个强化学习的过程。
很多能⼒都可以通过看书、查资料来完成,但在线运维能⼒往往需要⼤量的实践来提升。
6.架构设计能⼒
具体请参考:
⾥⾯涵盖了⼏乎90%左右的架构设计:并发编程、缓存、消息队列、⼤数据等。

image.png