如何突破技术瓶颈
突破瓶颈,才有更多可能。
技术瓶颈往往出现在做了一定量编程开发之后感觉不到明显提升或不知道下一步如何走。量变难以产生质变。
要突破技术瓶颈,首先要看清楚技术思维的实质:逻辑思维、抽象设计思维、结构化思维、全局思维、解决问题思维。
程序员通常能比较快地完成逻辑思维的成熟化,拼装一些比较复杂的逻辑,但很多人可能就止步于此。要从逻辑思维向抽象设计思维、结构化思维、全局思维、解决问题思维上升华,后面路还很长。
有如下几种途径进行突破:
提升设计能力
突破技术瓶颈的第一步是提升设计能力。
遇到问题思考通用可扩展的方案,识别共性,建立处理一类问题的技术机制和微框架,而非仅针对一个问题。从逻辑思维升华到抽象设计思维。
学习设计模式和软件设计原则,是入门设计的明灯指南;在工作中实战,设计和实现共享库和微框架,是提升设计能力的关键方法。
可阅: 软件设计总体导图
积累解决方案
从解决一个需求,到上升到解决方案层面,是提升了一个层次。
解决一个需求,只是针对这个需求做了个基本的实现方案。考虑问题通常局限在一个点上。上升到解决方案层面,要求熟悉问题的各种场景和语境,找到多种可选方案,熟悉各种方案的利弊,在特定场景下进行权衡取舍,确定合适的方案。考虑问题提升到一个面上。这一步非常考验对业务的理解和与技术的结合能力。
比如全局ID生成、分布式锁、定时任务、延迟队列、同步转异步、限流、幂等的方案有哪些, 各个方案的利弊如何,为什么会有这些利弊,各适用于什么场景等。把这些弄清楚,就能获得一个特定问题及解决方案的更为全面深入的理解。
在工作中,要细心去提炼技术问题。往往你会发现一些不那么容易解决的问题,这就是提炼解决方案的机会。在解决具体需求的过程中,往往会用到其中某种解决方案。从问题中来,到问题中去。
积累解决方案,即是积累可贵的专业经验。
技术体系化,融会贯通
在实际工作中,往往会用到多种技术的组合。接触广阔的技术领域,建立技术之间的链接,将所学技术结构化体系化,才能感受到技术的力量。
当明白技术领域如此广阔,才会发现技术真正的乐趣所在。会两手三脚猫功夫是无法体验乐趣的。
可阅:互联网应用服务端的常用技术思想与机制纲要 - 琴水玉 - 博客园
阅读优秀开源代码,学习优秀开源软件的设计和做法
阅读优秀开源代码,往往能学到优秀的设计和实现方法,对提升个人的设计和编程技艺是大有裨益的。
开源代码,体现了已知问题的各种良好方案和实现。程序员职业生涯中,绝大部分都是已知问题。学习和借鉴优秀开源代码的思路和实现,基本就可以解决职业生涯中的各种技术问题了。
重读经典,透彻理解基础原理
夯实计算机体系结构、操作系统、数据结构与算法、计算机网络通信、数据库原理及实现、编译器原理等。
互联网世界是由这些基石逐渐堆叠起来的软件大厦。不理解基础,在上面构建软件就是类似在构建空中楼阁,不出现问题还好,出现问题就会一筹莫展。
提升系统思考能力,建立全景图
可以从两个方面来系统思考能力:
- 阅读架构图和架构设计,理解组件之间的功能结构和关联;
- 理解和解剖一个系统或事物的组成及交互。
学习一门全新的技术
比如,做 Java 应用开发的,可以去学习数据分析技术或者 AI 技术。
接触一些迥异的技术思想,学习一门全新的技术,能够开阔技术视野。
学习理工类学科
技术思维的实质是理性思考和量化思考。
任何有助于理性思考和量化思考的学科都值得去学习。比如数学、物理学、经济学、工程管理。试着去理解不同领域的知识,也是提升技术能力的途径之一。
阅读技术的人文类书籍
阅读技术的人文类书籍,也能加深对技术力量和价值的认识。比如《技术的本质》、《创新算法》、《逻辑的引擎》、《通灵芯片》、《数学之美》等。
总而言之,两条路子:
- 对已有知识进行总结、提炼、体系化,构建扎实的知识体系;
- 拓展新知识、新技术、新路径;
即:不断训练和提升技术思维能力。思维先行,技能随后。