前言
关于程序员成长的话题,我前面写过一篇文章 - 程序员天天CURD,职业生涯怎么发展的思考。
现在回头看,对程序员这个职业发展的认识以及怎么发展还是有一些局限性。有一句话是这么说的:人的成长就是不断认为以前的自己是一个"傻逼"的过程。这句话用词很激烈但成长也许就是如此。人要不断扩大、精进以前的认知,甚至颠覆自己以前的认知,自己才有可能一步一步成长。
"不断颠覆掉以前的自己,人才能成长"。
根据工作年限划分
这里我根据工作年限来划分,人处于不同时间节点、发展阶段来进行说明。我想这样划分,应该会更有一点指导意义。
工作 0 - 3 年
从刚毕业的毕业生到进入职场工作的职场人,人的角色发生了转变。头 3 年也是关键的 3 年,会给你以后的发展奠定一个发展基础,良好的开局就是为以后打牢发展地基,地基稳了,那么以后在上面建立高耸入云的"职业大厦"就会更稳。
第一年进入职场,要熟悉职场工作环境,职场人之间的工作关系,了解工作的业务逻辑和流程等等,这是关于工作上相关事情。
这个期间做 CURD 的工作是避免不了的,因为刚开始编写商业代码,都会从最简单的 CURD 开始,慢慢才会做一些高级的编码工作。
那么自己的成长呢?
我觉得重点学习还是放到技术上,在这 3 年时间里努力提升自己的技术,围绕某一编程语言或某一业务领域需要的技术,来打造自己的技术体系。
比如围绕 java 相关技术,它的技术体系是怎么样的?自己可以编写一个思维导图,然后编写学习计划,根据这个计划来学习。
比如大模型 LLM 相关技术,它的技术体系是怎么样的?编写一个思维导图。
怎么编写思维导图内容呢?
- 第一:找相关书籍,看它的标题
- 第二:找相关大学教授的课程,国内和国外的
- 第三:一些大模型问答系统,如 ChatGPT,豆包,kimi 等
然后综合来编写出一个技术学习的思维导图,当然,如果自己有新的内容,可以随时调整内容。
比如 Java 相关技术学习的思维导图:
上面的这个学习导图只是举一个例子, 它只是 Java 技术学习的一部分,比如还有集合原理理解,Spring源码分析,设计模式,分布式,编码规范等等其它内容。
如果要深入技术学习,还有很多内容可以学。
学习优先级,就是先学习基础和日常业务常用到的内容。
编写了上面的学习路线图之后,就要制定相关的学习计划,什么时间到什么时间学习哪些内容。可以用 Google 日历制定学习计划,也可以用相关清单软件制定学习计划。
不光要看,还要自己动手练习写代码,写笔记 blog 记录学习的成果,最好能用自己的语言把理解的内容写出来,这样学习会更深刻。忘记了,还可以回头复习笔记。
还有一个要做的事,跟其他同学相互交流学习,写 blog 就是一个交流的渠道。
这个学习过程是一个慢慢的积累技术体系的过程,学习过程也许会很枯燥,但是如果你能坚持下来,一定会有收获。
量变引起质变,但是这个量是多少才会质变,不知道,只有自己慢慢的去积累这个量,质的零界点才有可能到来。
从初级工程师到高级工程师。
工作 4 - 6 年
工作 3 年后,对于业务编码上的事情应该都比较熟悉了,业务流程也熟悉了。这时候,也许你会带着几个人做一个小的业务,那么你的职责就变了 ,成为了一个基层管理者,你不只是完成自己的工作,还要关注你的组员工作情况,进行团队管理的相关工作。
你的工作职责变多了,你要给他们分配工作任务、监督他们的工作完成情况,要辅导他们进步。
这时候有一个关键思维转变,不在只关注自己的技术工作,还要辅导、监督你的组员工作情况;你不能只关注技术,还要关注人了,组员的工作、发展情况、团队氛围等等。
如果看到组员工作做的不好地方,你就自己动手去做,这是一个不好的做法,你应该去辅导组员,提高他的工作能力。即使他只能做到你的 60%,你也要放手让他去做,这样他才会在错误中学习并逐渐进步。这时你做的就是辅导他,然后监督他,不让他的工作出现大的风险。这个思想一定要转变过来,从纯技术思维向技术和管理思维转变。
不能总想着:总是出错,还不如我直接动手算了。
这个时期的你,就要学一些技术管理方面的知识了,可以看一些经典的管理书籍,比如德鲁克的。这里介绍一本书籍 《知行 技术人的管理之路》 ,适合技术管理的人学习。
当然,这个时期,你的技术也需要继续精进,不过不要像以前那样,投入 100% 的时间学习技术了,而是要列出重点技术来进行学习,有一部分时间要用来学习技术管理的知识。