这几年经济的不景气让身处互联网行业的广大开发者同样倍感寒意,从下面22年互联网行业裁员名单就可见一般:
(图片来自互联网)
无论是小厂,还是大厂都无可幸免,可见寒冬凛冽,这也就是为什么众多被裁/离职的同学动辄要花费半年甚至一年多才能找到下家的原因。
与此同时,得益于过去十年互联网井喷式发展,互联网企业的激烈竞争使得程序员薪酬水涨船高。结果就是越来越多的新人涌入了这个行业,给行业带来了新鲜血液的同时,也使得竞争进一步加剧,简单说就是“内卷”。
在这样一种市场充斥着存量与大量新人涌入的背景下,如何提高我们的核心竞争力变得尤为重要,那就是必须跨过初中级开发者的行列,尽早成为一名高级或者资深的开发。
大厂对高级开发的要求
“怎样才算高级开发”并没有一个行业的统一标准,我们看看企业对高级开发的定义即可,毕竟我们是面向市场和企业工作,企业的诉求就是最好的定义。
下面是某大厂对高级开发的一些设定标准:
1. 技术能力
- 优秀的代码能力,熟练掌握团队项目所有的技术栈,能对团队遇到的技术难题提供解决方案
- 能够承担中大型项目的技术方案设计工作
- 能够负责项目的业务架构、技术架构、部署架构等,能针对业务场景设计和落地非功能性需求(可用性,性能,数据一致性等)
- 具备快速定位和解决所负责模块的各种问题
2. 业务能力
- 掌握所负责领域所有的业务细节,并能够在方案中设计准确的用例图、业务流程图、系统交互时序图、ER图等
- 掌握所有需求细节,能够输出方案可行性、技术复杂度等反馈
- 能够胜任中型项目的管理工作,熟练掌握并总结常见的项目管理方法,有丰富的实践经验,能够并行管理多个项目
从企业的角度来看,高级开发者需要在技术和业务领域都具有高度的专业知识和实践经验,能够承担更多的责任并为团队和项目的成功作出重要贡献,以应对复杂的项目和业务挑战。
接下来我们以更具技术性的视角来探讨对高级开发者的要求。
深刻的底层理解
高级开发者往往需要深入理解技术的本质。比如高级前端需要了解JavaScript引擎如何工作、浏览器内部机制以及框架的实现原理;高级后端需要深刻理解服务器端的工作原理、数据库引擎的内部机制、分布式系统设计与微服务架构等。
在普通的日常业务研发工作中可能无法体现这些点,但在面对复杂的问题时,具备这些能力的人往往能够更好地分析、设计和优化解决方案。这也就是为什么在面试高级岗位时,往往给人面试造火箭的感觉!
全局架构设计能力
不仅要能写代码,还要懂得如何构建整个应用的架构。高级开发者应具备设计系统的能力,将关键概念、原则和最佳实践融入架构中,确保应用的可扩展性和可维护性。
具体来看可包括如下几方面:
- 关键概念的融入: 高级开发者应将关键的概念,如设计模式、分层架构、微服务、单一职责原则等,融入到应用的架构中。这些概念可以指导开发者在设计模块和组织代码时的决策。
- 系统拆分与模块化: 高级开发者需要能够合理地将系统拆分成模块,每个模块具有独立的职责。这有助于实现松耦合和高内聚的架构,从而提高系统的可维护性和灵活性。
- 可扩展性与性能: 架构设计应该支持系统的可扩展性和良好的性能。高级开发者应该思考如何设计模块和组件,以便在需要扩展系统时能够方便地添加新功能或服务,同时保持系统的高效性。
- 适应变化: 高级开发者应考虑到需求和技术的变化。架构应该具备足够的灵活性,以便在未来能够轻松适应新的需求和技术趋势。
- 数据管理与通信: 架构设计需要考虑数据的流动和模块间的通信。高级开发者应该选择适当的数据管理方案和通信协议,以确保数据的准确性和模块间的协作。
- 安全性与稳定性: 架构设计需要内置安全性和稳定性。高级开发者应该考虑如何保护敏感数据、防范攻击,并确保系统在各种情况下保持稳定运行。
卓越的问题解决能力
高级开发者不仅仅要知道如何编码,还要知道如何解决遇到的各种技术难题。
具体体现在:
- 深入思考: 高级开发者不仅快速寻找问题的根本原因,还会探索多种可能性。通过分析问题的不同层面,他们能够制定更全面的解决方案。
- 细致排查: 高级开发者对待问题如同侦探,会仔细查找异常、错误日志、数据流和代码路径。他们通过详尽的排查,找出问题可能存在的各个环节。
- 灵活应对策略: 高级开发者能够根据问题的性质采用多种应对策略。无论是简单的代码修复、重构部分模块,还是采用不同的库或工具,他们会根据情况选择最合适的解决方法。
- 知识广度与深度: 高级开发者掌握广泛的技术知识,从编程语言到框架、工具,甚至系统底层。这使得他们在解决问题时可以从不同角度出发,找到最佳的解决方案。
- 持续学习与改进: 高级开发者不仅解决问题,还会从中汲取教训。他们会总结经验,学习新的解决方法,并将这些知识应用于未来的开发中,以不断提升自己的解决问题的能力。
卓越的问题解决能力是高级开发者与众不同的标志之一。他们能够在困难和复杂的情况下保持冷静,迅速找到解决问题的路径,从而为项目的顺利进行和团队的成功发挥重要作用。
全栈还是专精?
对于成为高级开发者来说,是专精某一领域还是拥有全栈思维,是一个需要仔细权衡的问题。在选择之前,让我们结合成为高级开发者的要求,来分析一下这两种选择的优势。
专精特定领域的优势:
成为领域专家,可以带来以下优势:
- 深入知识: 高级开发者在特定领域的深入知识可以让他们成为该领域的专家。这种专业知识不仅有助于解决技术难题,还可以为团队提供指导和支持。
- 高需求领域: 在某些技术领域,需求非常高。专精这些领域可能使你在就业市场上更具竞争力,能够争取到高薪的职位。
- 深度问题解决: 深入专精某一领域使你更容易应对领域内的技术挑战,能够提供高质量的解决方案。这可以使你在团队中发挥关键作用。
全栈思维的优势:
拥有全栈思维,可以带来以下优势:
- 系统性理解: 全栈开发者理解整个应用的不同部分,从前端到后端,能够更好地协调不同模块之间的交互。这有助于快速定位问题和实现更流畅的开发流程。
- 创新力: 全栈思维能够培养更大的创新力,因为你可以更全面地看待整个应用的机会和挑战。这种综合性的视角可以带来更有创造力的解决方案。
- 跨领域协作: 在现代软件开发中,跨领域协作至关重要。全栈开发者可以更轻松地与前端、后端以及其他团队成员合作,促进项目的成功。
最终,选择全栈还是专精取决于你的兴趣、职业目标和行业趋势。有些人更适合在特定领域深入发展,而另一些人可能更喜欢具备广泛技能并能跨足多个领域。无论选择哪条道路,不断学习和不断提升技能都是成为高级开发者的必经之路。不论你是深入一领域还是拥抱全栈,都要始终保持对新知识和技术的开放和探索。
总结
在这个变幻莫测的互联网时代,也许谁都没有把握说我一定能在这场寒冬中幸免于难。但我想说,正是这些不确定性,才更需要我们审时度势、未雨绸缪。在这充满挑战和机遇的时刻,我们或许会感到迷茫,但也正因如此,我们才有机会展现真正的实力。面对竞争和变革,我们不仅需要技术的深度,更需要全局的视野。同时保持持续的学习和进步,以在这个不确定的寒冬中,不断为自己创造更多可能性。
我是斌少,十年经验大厂全栈开发,多年一线leader,分享编程经验、技术干货,帮你少走弯路、快速成长。欢迎 点赞 + 评论,也欢迎添加我个人的公众号,感谢大家!❤️