程序员成长的三个阶段,一个Android高级程序员的成长历程

Posted River_ly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员成长的三个阶段,一个Android高级程序员的成长历程相关的知识,希望对你有一定的参考价值。

本文来自 SkyKai,认识他时在支付宝,如今在 PDD

2021 年是我工作的第 8 年,虽然这中间换了很多家公司,但是一直在坚持做 android 程序员。一路从创业团队到 BAT,从最早写一个简单动画都吃力到现在成为业务 owner,并参与规划业务方向。在技术能力上有了很显著的进步,不过我最近一直在思考,最优秀的程序员应该是什么样的?年薪百万的算是吗?代码几乎不出 bug 的算是吗?技术能力很强的算是吗?也许是,也许不是。我不认为仅仅从技术能力就可以评价一个程序员是否是优秀的。我认为真正优秀的程序员不仅自身实力强,能影响他人,还要能带领业务走向成功。结合自身的经历,我把一个工程师的成长阶段分为初级,中级,高级。这三个阶段都围绕三个方向的提升。分别是:自我学习能力,专业技术能力,资源协调能力。只不过不同的成长阶段侧重点不一样。下面是我自己总结每个阶段侧重的能力以及标准,欢迎大家留言一起交流。

初级程序员

自我学习能力:★★★☆☆
专业技术能力:★★☆☆☆
资源协调能力:★☆☆☆☆

初级程序员阶段,并不是指刚开始从事编程工作的入门级程序员。而是可以出色完成 leader 安排的开发任务,具有独立排查问题能力,态度积极,乐于迎接挑战的程序员。在这个阶段最重要的是自我学习能力。有的人很幸运,刚一入门就有师傅带,但是好的师傅一定是倾向于先让你通过自己的能力来尝试解决问题,只在关键的时候给你指引方向。我曾经看到有程序员在带新人的时候,每当新人搞不定的时候,总是自己直接上场搞定,这样最终的结果是把自己搞的很累,新人也没成长起来。初级程序员的自我学习能力不仅要包括技术上的学习,还要包括沟通能力,业务能力方面的学习。这些也是为了以后进阶打下基础。总体上大部分程序员 1-2 年都可以达到初级程序员的阶段。随着技术能力与工作经验的提升,一部分人会成长到中级程序员。

中级程序员

自我学习能力:★★★★☆
专业技术能力:★★★☆☆
资源协调能力:★★★☆☆

中级程序员的标准是:独立负责完整的业务,具有架构设计的能力。熟悉业务全链路,并且有能力指导新人。这个阶段的程序员经常可以想出更好的技术方案来解决业务问题,可以轻松解决别人排查很久的问题。这就是技术能力的体现。

拿一个我自己的例子来说,几年前我在支付宝工作的时候负责 Web 容器的开发工作,当时 12306 火车票正在全面接入支付宝 Web 容器,接入之后发现应用冷启的性能一直不好,希望我们协助优化。当时我只花了一个下午时间,就在 12306 接入的基础上设计了懒加载优化,成功把冷启动速度减少 1 秒以上。这个优化没有给我带来任何绩效上的加分,但是却让几亿使用 12306 客户端买票的用户能更快的打开应用。为什么我可以这么快的解决问题呢?首先是技术能力过关,对业务(Web 容器)的深入理解可以让我快速定位问题。另外通过我平时不断的学习各种性能优化思路,才可以这么快的给出解决方案。所以在自我学习+专业技术提升的不断强化下,基本上可以顺利的成为一名中级程序员。

另外这个阶段对资源协调能力也会有一些要求,包括对产品,后端或者合作方的反向推动能力,初级程序员一般是完成产品或者是 leader 安排的任务。但是中级程序员已经可以把开发节奏基本掌握在自己手里,对业务各个链路的流程都比较清楚。会在业务发展的过程中比别人提出更好的设计方案,并且协调好整个团队的资源完成落地。

高级程序员

自我学习能力:★★★★★
专业技术能力:★★★★★
资源协调能力:★★★★★

高级程序员是一线程序员能达到的最高水平,在这个阶段三种能力都已经修炼到了极致。他通常拥有很强的自我学习能力,不畏惧新技术,了解多种编程语言与多个领域的专业知识,有非常好的技术前瞻性。同时专业技术能力过硬,通常是处理那些最紧急与最棘手问题的人。并且可以很好的协调公司内外部的资源,在进行项目推进时,可以游刃有余的协调资源与进度。成为项目中最关键的人物之一。高级程序员在技术选型以及工程实现上,会将业务发展与开发效率结合在一起。通常会在满足当下需求的前提下,预判未来业务的迭代方向,从而更好的设计目前的代码。往往在产品经理提出新的需求时,他的回答会是:“这个我们在代码设计的时候已经考虑到了,可以很快支持”。

相信很多程序员都有过这样的体验,从零开始开发一个项目的时候,在最初几个版本觉得架构设计合理,代码编写规范。但是随着业务越来越复杂,迭代速度越来越快后,代码变的异常复杂且难以维护。通常这样下去的后果就是没有人敢再动旧代码,最终整个项目成为一座垃圾山,而且还要不停的往山上运送新的垃圾,同时祈祷垃圾山不发生坍塌。导致这种结果我觉得主要有两个原因。第一是最早设计的架构没有很好的考虑对长期复杂业务的支撑,比如拓展性,可维护性。第二点则是在迭代的过程中,对代码质量,设计方案的要求不高,导致项目架构被破坏。最终随着烂代码的侵蚀,整个项目越来越难以维护。通常高级程序员的参与可以避免这种情况的发生或者通过重构将这种局面改善。

以上就是我自己对程序员成长阶段的理解。很多人看完可能会说:你说的我都明白,但是我该怎么成长为中高级程序员呢?这是一个很好的问题,我觉得这里面有自身的努力,也有运气,有坚持,也需要有贵人(好老板,好同事)指导。

欢迎大家关注我,后面的更新更多关于程序员如何成长的文章,感谢支持!

最后

在这里还分享一份收录整理的Android学习PDF+架构视频+面试文档+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料

这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在面试季取到一份不错的答卷。

当然,你也可以拿去查漏补缺,提升自身的竞争力。

有需要的话,可以直接 点击这里快速免费获取

喜欢本文的话,不妨顺手给我点个赞、评论区留言或者转发支持一下呗~

以上是关于程序员成长的三个阶段,一个Android高级程序员的成长历程的主要内容,如果未能解决你的问题,请参考以下文章

PHP程序员的成长路线

程序员到高级架构师,必须经历的三个阶段

C++ 程序员到高级架构师,必须经历的三个阶段

android学习路线:如何成长为高级工程师

android学习路线:如何成长为高级工程师

架构师成长之路:谈应用系统架构设计