练级攻略篇
欢迎阅读**「练级攻略」**相关的文章,这个系列主要内容一些有助于个人成长的经验分享。
内容概览
- [x] 如何成为一个合格的程序员?
- [x] 如何快速提高编程能力?
- [x] 如何快速上手一个新项目?
- [x] 如何有效地提高工作效率?
- [x] 如何更高效地自学编程?
- [x] 如何快速学习新技术?
- [x] 大厂招聘更看重什么能力?
常见问题
如何提高技术深度?
追求 T 型发展是必然的,但绝大部分人往往容易忽略掉深度,比如在学习某个框架的时候只注重应用而不关注底层原理,学习某个知识点的时候蜻蜓点水,对于业务需求的理解思考不够,遇到问题之后不知道如何解决。
可以看到,深度的关联到的概念非常多。对于面试来说,深度更倾向于指的是你对某个知识点的掌握程度,比如连环炮式的提问你能够应对多少。有水平的面试官通常不会对一个知识点蜻蜓点水,他会问很多关于这个知识点的问题,尤其是大厂面试。比如索引连环炮:
- 为什么索引能提高查询速度?
- 聚集索引和非聚集索引的区别?非聚集索引一定回表查询吗?
- 索引这么多优点,为什么不对表中的每一个列创建一个索引呢?(使用索引一定能提高查询性能吗?)
- 索引底层的数据结构了解么?Hash 索引和 B+树索引优劣分析
- B+树做索引比红黑树好在哪里?
- 最左前缀匹配原则了解么?
- 什么是覆盖索引
- 如何查看某条 SQL 语句是否用到了索引?
并且,问到了索引,可能还会问一些索引相关的知识点,比如 SQL 优化方法。
从面试角度来说,提升深度的方法其实很简单,就是要深入研究学习重要的知识点,多多思考总结,将自己学习到的知识点串联起来。
学习新技术容易忘记怎么办?
这其实挺正常的,正确的学习方法和及时的复习才是解决这个问题关键。
复习比较好的方式还是看官方文档。如果遇到官方文档介绍不清楚的点,再去搜索对应的博客或者视频看即可。书籍也可以,但书籍更适合那些理论性较强的知识比如数据库,框架类更新比较快,又比较重实战,很难找到合适的书籍。更好的复习方式还是要多使用,用的多了之后,自然就记住了。
在学习框架使用的时候,没有太大必要花大量时间的整理做笔记贴代码,意义不大。忘记了随时查文档,你只需要记住关键词即可,比如 Spring Boot+ Redis、Spring Boot+ RestTemplate 。理论性的东西,尽量多找一些比较好的博客看,可以简单整理一下笔记,用自己的话去理解一遍,效果会更好一些。
对于重要的实战性知识点比如框架应用、中间件整合,尽量还是要去实践一下。学习编程,不动手实践那都是扯淡。如果自己比较喜欢做项目的话,可以通过项目实战的方式去实践,这样效果会比单纯写 Demo 要好很多。
一定不要养成看视频不动手的习惯,被动接受,这种学习效果是最差的。
还要学会将这个技术和自己之前学到的技术建立连接,形成一个网络。
最后,提醒一下:学习过程中没弄懂的知识点一定要尽快解决。如何解决?首选百度/Google,通过搜索引擎解决不了的话就找身边的朋友或者网上认识的一些人。
跟着教程做项目需要注意什么?
跟着教程做项目,确实是快速入门新技术、积累开发经验的好方法,但多数人并未真正用好这种学习方式。
关键在于一定要有自己的思考,一定不能完全按照原教程来。
教程里老师说要做某个功能之前,你可以自己先想一想:
- 需求分析:如果由我设计,这个功能需要覆盖哪些场景?比如做登录功能时,要考虑是否支持用户名密码、手机验证码、第三方登录等。
- 技术选型:我会用什么技术栈实现?例如认证用 Token 还是 Session?密码加密选 BCrypt?框架用 Spring Security 还是其他?
- 边界处理:需应对哪些异常情况?比如用户不存在、密码错误、账号锁定、参数校验等。
带着这些思考再去看老师的实现,对比我们思路的异同,这样能让我更深刻地理解“为什么”要这么设计,而不仅仅是“怎么”实现。
项目技术选型也要多花去研究,不要教程用的什么技术方案,自己就觉得这种方案就是最好的,比如:
- 项目中用了 Guava Cache 做本地缓存,你就要思考还有其他本地缓存方案(如 Caffeine)吗?哪种更好一些?
- 项目中用了 RabbitMQ,你就要思考是否可以换成 Kafka 或者 RocketMQ?会不会更合适一些?
在原项目的基础上,你还可以思考去做优化改进:
- 做加法: 增加一些教程里没有但很实用的功能,比如给后台管理系统加上完整的权限控制(RBAC 模型)、给用户端加上 AI 聊天。
- 做优化/重构: 审视项目代码,思考可优化的点。比如,某个接口性能不佳,尝试引入缓存或异步化处理;或者将原有的单体架构,尝试改造成微服务架构。
程序员有哪些值得考的证书?
- 软考:全称为全国计算机技术与软件专业技术资格(水平)考试,国内认可度较高,分初、中、高三个级别,建议直接考高级,在国企、事业单位认可度高,可用于积分落户、个税补贴等。
- PAT:即攀拓计算机能力测评,由浙江大学主办,专注考察算法能力,分基础级、乙级、甲级和顶级;通过相应评级和分数可获联盟企业面试机会,考研浙江大学者,甲级成绩一年内可作上机复试成绩。
- PMP:由美国项目管理协会(PMI)提供,是全球认可度高的项目管理认证,注重传统瀑布方法论,全球通用,很多企业将其作为项目经理入职标准,核心价值在于《PMBOK》的项目管理体系,属于基础证书。
- ACP:同样由 PMI 提供,专注敏捷项目管理方法论,如 Scrum、Kanban 等,是项目管理领域重要认证。
- OCP:即 Oracle 专业认证,由 Oracle 公司提供,专注于 Oracle 数据库及相关技术。
- 阿里云认证:阿里云提供,方向包括云计算、大数据等,职业认证分 ACA、ACP、ACE 三级,还有开发者 Clouder 认证。
- 华为认证:华为技术有限公司提供,面向 ICT 领域,方向涵盖网络、云计算等,认证体系庞大。
- AWS 认证:AWS 云计算服务官方认证,分基础级、从业者级、助理级、专业级和专家级,涵盖多个角色和技能。
- Google Cloud 认证:与 AWS 不同,仅有一门助理级认证,其余多为专业级(专家级)。
- 微软认证:主要针对 Azure 云平台,分基础、助理、专家级别,方向包括云计算、数据管理等。
- Elastic 认证:Elastic 公司提供,验证对 Elastic Stack 的技能知识,分四类,其中 Elastic Certified Engineer 为基础认证,适合负责相关业务者考取,含金量高。
- ......
关于这些证书的详细介绍可以参考这篇文章:有哪些适合程序员拿的高含金量证书? 。
如何准备软考?
阿里云开发者发了一篇高级系统架构设计师的考试备战攻略,可以看看,学习一下备考思路:临时抱佛脚必看|一个月速通高级系统架构设计师!(低分飘过版) 。还有这篇也看看: 软考复盘:我的一些复习经验分享 ,可行性较强,里面提到了作者用到的一些资料、备考时间规划、备考心得等干货。
个人不太建议为了准备软考而选择去报班,真不如自己自学。当然了,你也可以去网上找一些培训班的教学视频看看,资料还是挺多的。
**软考有用吗?**对于绝大部分互联网企业来说,软考证书确实没用。不过,软考证书在国企评工程师职称和一些城市积分落户或者人才判定的时候还是有一些作用的,这也是绝大部分人选择软考的原因。
程序员常见的发展路径有哪些?
有一些常见的路径,可以提前了解一下,关键还是在于找到适合自己的方向:
- 深耕技术,成为专家:专注于某个技术方向,通过持续学习和积累,成为领域内的技术专家。这个方向适合对技术有热情、喜欢解决复杂问题的人。另外,积累一定经验后,可以选择跳槽到大厂或更有发展潜力的公司,也可以去一些中小公司担任技术经理或者架构师。
- 转向管理:技术转管理是另一条常见的发展路径,比如成为项目经理。这需要你逐渐从执行层面转向决策层,培养团队管理、项目协调和跨部门沟通的能力。如果你发现自己更擅长规划、协调和与人打交道,这条路可以重点考虑。转管理并不意味着放弃技术,尤其在初期,技术背景会是你的重要优势。但随着职位上升,可能会逐渐远离具体的编码工作,更多关注团队目标和业务价值。
- 创业:创业去做自己感兴趣的产品或服务。创业的风险确实比较大,但一旦成功,回报也会更高。如果你有明确的想法、资源和执行力,可以尝试这条路。
- 自由职业: 自由职业也是很多人的选择,比如接外包项目、做技术咨询、录制付费课程等。自由职业对综合能力要求较高,但好处是时间相对自由,工作内容可以自己选择,适合那些技术能力强、自我驱动性高的人。
- 转行到传统行业:互联网行业虽然竞争激烈,但技术背景在很多传统行业依然是加分项。比如金融、教育、医疗等行业的 IT 岗位,工作相对稳定,压力也没那么大。 甚至有些程序员干了几年后,完全转向了和技术无关的岗位,比如销售、运营,或者开店创业。这些选择虽然跨度大,但如果你对技术热情不高,或者发现自己在其他方向更有优势,也可以大胆尝试。
无论选择哪条路径,保持学习和适应变化的能力!
建议
构建知识组合并对知识组合做定期投资
《程序员修炼之道》这本书提到了一个知识组合的概念,并且,这本书还建议我们构建知识组合并对知识组合做定期投资。
什么是知识组合? 我们喜欢把程序员所知道的关于计算的所有方面、他们所工作的应用程序领域以及他们的所有经验作为他们的知识组合。管理知识组合与管理金融组合非常相似:
- 认真的投资者把定期投资作为一种习惯。
- 多样化是长期成功的关键。
- 聪明的投资者在保守投资和高风险、高回报投资之间保持平衡。
- 投资者试图低买高卖以获得最大回报。
- 投资组合应定期审查和重新平衡。
如果你不知道添加什么内容到自己的知识组合中,这里有一些建议:
- 每年学习一门新语言:多学习几种不同的解决方法,能帮助自己拓宽思维,避免陷入陈规。
- 每月读一本技术书 : 虽然网络上有大量的短文和偶尔可靠的答案,但深入理解还是需要去读长篇的书。
- 非技术书籍也要读 :你的生活不应该只要技术,你也要和人打交道,你也要生存。
- 上课 :大学公开课或者网上的一些有趣的课程,亦或是一些公开的技术演讲......。
- 交流 :加入一些技术交流组织或者技术交流群。
- 尝试不同的环境 :如果你只在 Windows 下工作,那么就花点时间在 Linux 上。如果你只使用简单的编辑器和 Makefile,那就试试最新的炫酷复杂的 IDE,反之亦然。
- 与时俱进 :学习一下你的技术栈之外的其他技术,即使你可能不会在项目中使用到它们。学习的过程将会扩展你的思维,很可能为你打开一扇全新的大门。
为此你需要 :
- 充分安排自己的时间 :时间总是不够用的。所以你需要提前准备好,确保在无聊的时候有事可做。
- 要有批判性思维 :批判性地思考读到的和听到的东西。你需要确保组合中的知识是精准的。这个会在后面详细讲到。
减少抱怨,改变自己
对当前的工作不满意?那就换一个工作!
对当前的项目组不满意?那就换一个项目组!
对自己的技术不满意,那就提高自己的技术!
想远程工作?如果你的公司不同意,就去找一个可以远程工作的公司。
人生如水,人只能去适应环境,如果不能改变环境,就改变自己 。
文章精选
下面这些是我精选的一些文章,每一篇都非常值得细读揣摩:
- 从业 18 年,我总结了 9 个最有价值的经验 - InfoQ : 放下自负、语言只是工具、编程不是要记下所有东西、终身学习、代码要解决问题而非完美、先让代码起作用之后再优化、项目最后的 10%往往要花费 90%的时间、写过一次以上的代码,需要进行抽象。
- 工作7年,我的10条经验总结 - 阿里技术 :独立思考、总结沉淀、知行合一......。
- 我在滴滴和头条的两年后端研发工作经验分享! - syntax_error:学会深入思考,总结沉淀、积极学习,保持技术热情、主动承担,及时交流反馈、提升自己的软素质能力......。
- 程序员应该避免的一些错误 - InfoQ :低估工作量、不写测试、眼高手低,缺少训练、过于自信......。
更新: 2025-07-31 16:18:43
原文: https://www.yuque.com/snailclimb/mf2z3k/mm4nm6