On this page
  1. Why it matters
  2. The landscape
  3. Choosing a language for a new system
  4. Legacy languages
  5. Trade-offs
  6. Pitfalls
  7. Questions for a design review

Why it matters

A bank’s software outlives most of the people who write it. A language chosen today will need to be read, patched and extended in ten or twenty years. The right choice balances what the language is good at with how many people can work in it, how stable its ecosystem is and how well its tools support security and correctness.

The landscape

Languages in banking
LanguageWhere it fitsWhyWatch out for
JavaCore platforms, payment systems, back-end servicesMature, fast, huge ecosystem and talent pool; strong for long-lived systemsFramework complexity and slow start-up in some styles
KotlinAndroid apps; increasingly back-end servicesRuns on the Java platform with safer, more concise codeSmaller back-end talent pool than Java
GoInfrastructure, gateways, high-concurrency servicesSimple, fast, small binaries, good for network servicesFewer libraries for complex business domains
PythonData engineering, analytics, machine learningThe standard for data science and ML librariesSlower for heavy transaction processing; dependency management
TypeScriptWeb front ends, backend-for-frontend servicesType safety on top of JavaScript; one language across web and serverFast-moving ecosystem; supply-chain risk in packages
SwiftiOS appsThe platform language for Apple devicesApple platforms only
DartCross-platform apps with FlutterOne codebase for Android and iOSTied closely to Flutter
C and C++Low-level components, HSM integrations, performance-critical codeSpeed and controlMemory-safety bugs; needs expert review
COBOLLegacy mainframe cores and batch jobsDecades of proven business logic still runningShrinking skills pool; hard to change
SQL and stored procedure languagesLogic inside databases, especially in older coresClose to the data and fastBusiness rules hidden in the database, hard to test

General patterns across the industry, not claims about named banks.

Choosing a language for a new system

Four questions settle most choices:

  • What does the system do? Transaction processing favours Java or Kotlin; infrastructure favours Go; data and models favour Python; interfaces favour TypeScript, Swift, Kotlin or Dart.
  • Who will maintain it? A language the bank can hire for, train in and support internally beats a better language nobody knows.
  • How long must it live? Long-lived systems favour languages with long-term-support releases and stable ecosystems.
  • How safe is it? Memory-safe languages remove whole classes of security bugs; strong typing catches mistakes before production.

Legacy languages

COBOL and database procedure languages still run important parts of many banks’ estates, often reliably for decades. The risk is not the language itself but the shrinking number of people who understand the code and the rules buried in it. Banks manage this by documenting business rules, wrapping legacy code behind APIs and moving logic out in stages, as described in legacy modernisation.

Trade-offs

Language strategy choices
ChoiceYou gainYou give up
A few standard languages across the bankShared tooling, skills and security reviewSome teams use a less ideal tool for their job
Free choice per teamBest fit per systemFragmented skills, tooling and maintenance
Rewrite legacy code in a modern languageEasier hiring and changeRisk of losing rules the old code encoded
Keep legacy code and wrap itLow risk nowThe skills problem grows

Pitfalls

  • Choosing by fashion rather than by fit and long-term support.
  • Unreviewed dependencies pulled in from public package registries.
  • Business rules in stored procedures that no test covers.
  • One expert who alone understands a critical codebase.
  • Floating-point numbers for money, instead of decimal types or integer minor units.

Questions for a design review

  • Why this language for this system, and who will maintain it in five years?
  • How are third-party dependencies approved, scanned and updated?
  • How are monetary amounts represented and rounded?
  • Where do business rules live, and are they covered by tests?
  • What happens if the one person who knows this codebase leaves?