高级程序员要具备哪些能力?

60 阅读3分钟

每当有候选人来我这边应聘高级开发岗位,我第一时间考察的,都是复杂系统的技术架构设计能力

这是我认为最重要的一项能力。

因为在我看来,高级开发和普通开发之间,真正的区别,不是技术栈会得更多,也不是工作年限更长,而是有没有能力独立负责一个大型复杂项目。

不少人理解的高级开发,是技术更全面。

  • Spring 会。
  • Redis 会。
  • MySQL 会。
  • 消息队列也会。
  • 等等技术点技能。。。

这些当然重要,但它们只是工具。

真正能够拉开差距的,是面对一个复杂项目时,你有没有能力把这些工具组织起来,设计出一套合理的系统。

所以,我考察架构设计,并不是想知道你会不会某一种架构。

而是想知道你的思考过程。

当业务目标确定以后,你会如何拆解问题?

  • 为什么这样设计,而不是那样设计?
  • 数据库为什么这么建?
  • 模块为什么这么划分?
  • 同步还是异步?
  • 事务边界放在哪里?
  • 哪些地方需要考虑扩展性?
  • 哪些地方应该保持简单?
  • 哪些地方需要考虑降级?
  • 哪些是最核心的模块,必须保住?
  • 哪些地方,一定要做好监控,一有告警,必须立刻介入处理?

每一个设计背后,你是否都有自己的思考和取舍。

因为软件开发,从来都不是寻找唯一正确答案。

更多时候,是在多个方案之间做权衡。

而这种权衡能力,恰恰是高级开发最重要的能力之一。

除此之外,我还会特别关注一点。

那就是,当设计方案落地以后,遇到各种问题,你有没有能力继续把项目往前推进。

大型项目一定会遇到各种意料之外的问题。

  • 需求会变。
  • 性能会出问题。
  • 线上会出现 Bug。
  • 系统之间会存在兼容问题。

高级开发并不是不会遇到这些问题,而是能够快速分析问题、定位问题,并找到解决问题的方法。

如果一个项目,每遇到一点困难,都需要别人告诉他下一步怎么做,那很难说已经具备了独立负责大型项目的能力。

所以,在我看来,高级开发的核心价值,从来不是代码写得有多快,而是能够独立承担责任。

从需求讨论,到方案设计,到技术实现,再到最终上线,整个过程中,大部分事情都能够自己思考、自己推进、自己解决。

领导需要做的,是讨论关键决策,而不是替你完成思考。

因此,如果让我用一句话总结高级开发应该具备哪些能力,我的答案始终都是:

能够独立主导设计,并高质量落地一个大型复杂项目。

因为当你具备了这样的能力,架构设计能力、技术方案能力、问题分析能力、系统思维以及项目推进能力,都会自然包含在里面。

而这些,才是真正把高级开发和普通开发区分开的地方。