程序员成长必须经历的四个阶段,大牛都是这样成长起来的

阶段一:不知道自己不知道(Unconscious incompetence)

程序员成长必须经历的四个阶段,大牛都是这样成长起来的

大学期间,我和老师做过一些小项目,自认为自己很牛,当时还去过一些公司面试做兼职,但是就是不知道为什么没有回复。那个时期的我,压根不知道自己不知道,还以为自己懂很多,现在想起自己以前就好笑,那个时候还算不上程序员,顶多只能算是个业余编程爱好者。

表现:假自信、过度承诺、满口我能行没问题、看不起其他程序员….。

阶段二:知道自己不知道(Conscious incompetence)

程序员成长必须经历的四个阶段,大牛都是这样成长起来的

工作后,发现自己在项目中工作时遇到困难不知道怎么解决,和身边人一比发现自己知识很欠缺,这时候知道自己技不如人,很多地方都不足,需要大补才行,这个时候就是大家所说的初级程序员阶段,这个阶段必须依靠别人指导。

表现:有点心虚、虚心学习、偷偷努力、羡慕牛人…

阶段三:知道自己知道(Conscious competence)

程序员成长必须经历的四个阶段,大牛都是这样成长起来的

工作三四年后,自己的技能逐步提高,成为了项目组的技术大拿,这时候也很自信,知道自己能够解决遇到的所有问题,这时候就是高级程序员阶段了。

表现:自信、比较客观、真正承诺、有点自我…

阶段四:不知道自己知道(Unconscious competence)

程序员成长必须经历的四个阶段,大牛都是这样成长起来的

工作多年后,随着自己知识的深度和广度的提高,越学发现越不懂,有时好觉得自己以前真是浪费了太多时间。虽然觉得自己还有很多需要提高,但是对工作中遇到的问题基本没有解决不了的,这个时候很多知识都自成体系,解决问题也有了自己的潜意识,有时连自己都不知道自己知道,这时候属于架构师级别了。

表现:开放、主动、好学、谦虚…

复旦大学工程硕士手把手教你怎么学习,进阶java架构师

程序员成长必须经历的四个阶段,大牛都是这样成长起来的

什么是微服务架构?

微服务是指开发一个单个 小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。

程序员成长必须经历的四个阶段,大牛都是这样成长起来的

微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构。也就是说,如果每个服务都要同时修改,那么它们就不是微服务,因为它们紧耦合在一起;如果你需要掌握一个服务太多的上下文场景使用条件,那么它就是一个有上下文边界的服务

分布式系统

分布式系统从当初的CORBA 到EJB,Web和SOA,从集群到现在的NoSQL 云计算和大数据Hadoop等分布式系统,横向水平扩展Scala out/in是分布式系统设计的一个特点,可靠性 容错性是两个质量指标。

什么是分布式系统?

  1. 一大批服务器组成一个集合,对于用户来说仍然是一个整体连贯系统。
  2. A. Tanenbaum定义:分布式网络的计算机中的组件之间协调动作是通过消息进行通讯。
  3. G. Coulouris定义:当你知道有一台电脑崩溃,但是你的软件运行从来不会停止。
  4. Leslie Lamport定义:分布式系统是这样系统:旨在支持应用程序和服务的开发,可以利用物理架构 由多个自治的处理元素,不共享主内存,但通过网络发送异步消息合作。
  5. 与分层应用区别:分层的应用程序(例如,3层)是 划分应用程序逻辑,是一种逻辑分层,而不是物理,而分布式系统DS是物理分层,和实际部署有关。
程序员成长必须经历的四个阶段,大牛都是这样成长起来的

并发编程

程序员成长必须经历的四个阶段,大牛都是这样成长起来的

Synchronized的概念和分析

  • 同步、重量级锁以及Synchronized的原理分析
  • 自旋锁、偏向锁、轻量级锁、重量级锁的概念、使用以及如何来优化他们

Volatile和DCL的知识

  • Volatile的使用场景和Volatile实现机制、内存语义、内存模型
  • DCL的单例模式,什么是DCL?如何来解决DCL的问题

并发基础之AQS的深度分析

  • AbstractAueuedSynchronizer同步器的概念、CLH同步队列是什么?
  • 同步状态的获取和释放、线程阻塞和唤醒

Lock和并发常用工具类

  • java当中的Lock、ReentrantLock、ReentrantReadWriteLock、Condition
  • java当中的并发工具类CyclicBarrier、CountDownLatch、Semphore
  • java当中的并发集合类ConcurrentHashMap、ConcurrentLinkedQueue......

原子操作常用知识讲解

  • 基本类型的原子操作比如经典的AtomicBoolean、AtomicLnteger、AtomicLong
  • 数组类型的原子操作代表几个类AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray
  • 引用类型的原子操作的典型AtomicReference、AtomicReferenceFieldUpdater......
  • CAS的概念和知识、Compare And Swap 以及他的缺陷

线程池和并发并行

  • Executor、ThreadPoolExecutor、Callable &Future、ScheduledExecutorService
  • ThreadLocal、Fork & Join?什么是并行?线程池如何保证核心线程不被销毁?

本文到此结束!喜欢的朋友帮忙转发文章和关注,感谢支持!

你可能感兴趣的:(程序员成长必须经历的四个阶段,大牛都是这样成长起来的)