一个程序员在考虑增值时无法回避的一个根本问题是到底是做技术还是做管理(架构师除外)。这种基本方向上的选择对后续很多细节上的取舍有关键影响,所以在考虑其他之前,最好先回答一下这个问题。这就和修炼时要选择少林、武当、华山还是魔教一样,一旦选择,基本上是回不了头。
当然选择管理不意味着不需要掌握编程技能,毕竟当下大多公司还是信奉“宰相拔于州郡,将军起于行伍”的。但当技术达到一定水平后,管理还是技术这种方向性的选择将对下一步做什么有比较大的影响。在考虑那个方向前,则要先弄清楚管理和技术的关键差异。
技术与管理的关键差异
到了30几岁后,转为管理人员的程序员经常会调侃自己的技术能力:当年解决这种有时出、有时不出的Bug时,我常常在其前后都加几条调试输出,这招很管用很可能立刻就把它搞定了。结果多年后维护这代码的人困惑了,还来问我,这句为啥不能去掉,看着也没用啊,其实我也不知道,只能说运气和人品在程序里也是很有影响力的。
这是管理人员的一种真实写照,大家都知道,一旦走上管理岗位,那就和ppt越走越近,和代码越走越远了。虽然他仍然要跟踪最新技术的动向,但他很可能已经无法深究很多技术细节了。
据说微软这样的公司推崇一个人要想走上管理岗位,那要先把自己的代码用远少于别人的时间写好,省下来的时间才用来做管理工作。这很好,也不是完全不可能,但大多时候很难,需要很强大的天分,大多数人是做不到的。
要原因是管理和技术所要处理的问题有根本上的差异。
管理者往往需要处理许多与人相关的事情,这导致要处理的事情是碎片化的,如果坚持编码,那么每天的打断往往会大幅降低写代码的效能,大家都知道编码是需要专注的。
管理工作总是需要面对大量的琐碎工作的,比如:老板对项目不满要赶紧去说明,免得发酵成大问题;人力缺了要赶紧协调,一是要能要到人,关键还得能要到合适的人;工具缺了,要赶紧购买;兄弟们有情绪了,要赶紧安抚;PPQA了有抱怨了,要赶紧改正。如果工作进一步泛化,还要涉及到预算、评估、职业路径规划等。
我们很难让这些事情按照自己的节奏发生,如果管理人员做编程,最终这些都会变成一种对编程工作的随机性干扰。所以一般来讲很难把它们很好的与编码结合在一起。想象一下,一个管理人员负责某个项目中影响关键路径的某个模块,接下来上面所列的意外发生了,那这个管理者怎么办
也许可以说管理也是一种技术,但管理和设计编码这种技术的Key不一样。做技术需要面对的是程序,程序是讲道理的,StackOverflow时它一定会崩溃;而做管理时需要考虑技术因素,但更需要面对的是各种人,人则只在一定程度上讲道理,所以管理不只是一种技术。因此基本上可以认为管理和技术时完全不同的两个方向。
如果大家细心观察周围,就会发现,做技术(编码)的往往可以转去做管理,但做管理的再转回做技术(编码)就难了。这意味着技术背景对做管理往是很有帮助的,而管理背景对做技术则几乎没用。
了解到这种差异后,要做什么选择就要看自己的职业规划了,是继续在技术专家的道路上一条路走到底还是转管理岗位,都是自己的选择。不管走那条路,自己的提升与成长肯定是不能落下的。
这里免费分享一份GitHub 上标星 120k的Java中高级进阶知识全面解析。主要包括 Java 基础、Java 容器、Java 并发、Java 虚拟机和 Java IO。另外还附带网络、linux、数据结构与算法、数据库、系统设计、必会工具、面试指南等内容,非常全面。
看这里!看这里!完整版PDF文档只需要点击这里,就能免费领取了!
(整理资料不易,大家耐心看完~)
核心知识点
这部分可以说是非常关键且基础的,涉及JVM,Mysql,并发,Spring,Mybatis,Redis,MQ,Zookeeper,Netty,Dubbo,Spring Boot,Spring Cloud,数据结构与算法,设计模式,网络与操作系统等相关技术领域的知识点。
1.Java并发编程(涉及Java多线程的工作原理及应用、Java线程池的工作原理及应用,以及锁、进程调度算法等内容)
2.分布式缓存的原理及应用 (涉及分布式缓存介绍、Ehcache原理及应用、Redis原理及应用、分布式缓存设计的核心问题等内容)
3.ZooKeeper原理及应用(涉及ZooKeeper选举机制、ZooKeeper数据模型和ZooKeeper应用场景等内容)
4.Netty网络编程原理及应用
5.Kafka原理及应用 (涉及Kafka组成、Kafka数据存储设计、Kafka生产者并发设计、Kafka消费者并发设计,以及Kafka安装和应用等内容)
6.设计模式 (涉及常见的23种经典设计模式)
7.Spring原理及应用 (涉及Spring IoC原理、Spring AOP原理、Spring MVC原理、事务、MyBatis缓存等内容)
8.Spring Cloud原理及应用 (涉及Spring Boot、Spring Cloud Nacos、Eureka、Consul、Sentinel、Hystrix、Seata、Zuul和Spring Cloud链路监控等内容)
9.数据结构与算法 (涉及栈、队列、链表、散列表、二叉树、红黑树、图和位图、二分查找、冒泡排序、插入排序、快速排序、希尔排序、归并排序、桶排序、基数排序等算法等内容)
10.网络与负载均衡原理 (涉及TCP/IP、HTTP、常用负载均衡算法和LVS原理等内容)
11.JVM原理 (涉及JVM运行机制、JVM内存模型、常用垃圾回收算法和JVM类加载机制等内容)
12.ElasticSearch原理及应用 (涉及ElasticSearch数据模型、ElasticSearch分布式架构、ElasticSearch数据读写原理和段合并等内容)
13.Spark原理及应用(涉及Spark特点、Spark模块组成、Spark运行机制,以及Spark RDD、Spark Streaming、Spark SQL、DataFrame、DataSet、Spark Structured Streaming的原理和使用等内容)
14.Flink原理及应用 (涉及Flink核心概念、Flink架构、Flink事件驱动模型、Flink数据分析应用和Flink基于状态的内存计算等内容)
15.Hadoop原理及应用 (涉及HDFS、MapReduce、YARN等内容)
16.HBase原理及应用 (涉及HBase列式存储数据模型、HBase架构组成和HBase数据读写流程等内容)
拥有这套面试宝典,相信大家在今年的金三银四面试中,必定可以脱颖而出,冲进大厂。本次是作为福利免费分享,看这里!看这里!完整版PDF文档只需要点击这里,就能免费领取了!。