摘要:这并非简单的“写代码”就能概括,而是需要具备特定的性质,并通过不断的切换和积累,才能循序渐进地提升能力,最终成为一名优秀的工程师乃至架构师。
程序员的职业发展并非仅仅是代码量的堆砌,更在于持续的学习和成长。
那么,怎样的工作才能真正促进程序员的成长?
这并非简单的“写代码”就能概括,而是需要具备特定的性质,并通过不断的切换和积累,才能循序渐进地提升能力,最终成为一名优秀的工程师乃至架构师。
我认为,成长性的工作至少应具备以下五个方面的特性,且需要在实践中反复切换,才能产生乘数效应👇
1. 具备开发性质:从实践中汲取真知
“开发”二字,并非简单的“编写代码”。它强调的是对技术原理的深入理解和实践运用。
参与一个功能模块的完整开发流程,从需求分析、设计、编码到测试,能够让你透彻地掌握相关技术,理解其历史背景和设计理念。
这与单纯的测试、编写文档或修复bug相比,有着本质的区别。后者虽然重要,却往往停留在表层,难以深入技术细节,限制了对技术本质的理解。
真正的开发,是将技术内化为自身能力的一部分。
2.非重复性:打破舒适区,拓宽技术视野
设备驱动开发领域涵盖了SPI、I2C、UART、PCIe、EMMC、PWM、GPIO等多种类型的设备和接口。
仅仅专注于某一种类型,容易形成思维定势,成为技术上的“井底之蛙”。
成长性的工作要求程序员接触不同类型的设备驱动开发,例如从简单的GPIO驱动到复杂的PCIe驱动,逐步克服不同的技术挑战。
通过这种方式,你可以体会不同模块间的差异,提炼出共性,最终形成对整个领域的系统性把握。
这种经验的积累,对于将来成为架构师至关重要,因为架构师需要具备全局视角,能够在不同的技术方案中做出最优选择。
3.有一定预研性质:紧跟前沿,引领未来
如果仅仅局限于当前业界已有的技术,你的技术能力将难以突破瓶颈。
成长性的工作需要你投入精力,紧跟学术界和业界前沿技术的发展趋势,例如研究最新的硬件接口标准、新型的驱动架构等。
更重要的是,你要思考如何将这些新技术、新方案落地到实际项目中,并进行验证和改进。
这不仅能提升你的技术实力,还能培养你的创新能力和解决问题的能力,让你站在技术浪潮的前沿。
4.从简入深性质:由表及里,深入理解
以SPI设备驱动开发为例,仅仅实现对Flash的读写擦除功能,并不能算作深入的理解。
真正深入的学习需要“向下挖掘”和“向上挖掘”。
“向下挖掘”是指深入理解SPI协议的底层细节:通用SPI驱动与特定Flash驱动的异同点、地址字节数的切换原理、不同线宽的时序要求、Dummy字节的目的和数值确定方法,以及NOR Flash和NAND Flash的应用场景差异等。
“向上挖掘”是指探索SPI驱动在实际应用中的场景、SPI协议框架如何调用驱动接口、SPI读写擦除速度的瓶颈在哪里以及如何优化等。
这种由简入深,由表及里的学习方法能够帮助你构建起对技术的完整知识体系。
5.从局部到全局性:系统思维,掌控全局
设备驱动开发通常是系统中的一个局部模块。
要提升到更高的层次,需要参与全局性工作,例如U-Boot和Kernel的启动和裁剪、系统整体性能优化、镜像体积缩减等。
这些工作能让你理解整个系统的架构和运行机制,让你从局部的视角提升到全局的视角,从而对系统运行有更清晰的认识,并最终提升自身的系统设计能力。
总之,对于程序员而言,成长性的工作并非只是简单的代码编写,而是一个持续学习、不断突破自我的过程。
它需要具备开发性质、非重复性、预研性质、从简入深性质以及从局部到全局性等特性,并通过在这些特性之间不断切换,才能真正促进个人的技术成长,最终成就卓越的职业生涯。
这不仅仅是技术的积累,更是思维方式和解决问题能力的全面提升。
只有不断地挑战自我,才能在IT行业中持续保持竞争力,最终实现个人价值的最大化。
来源:小英议科技