Choosing the right Backend Language - Go
We chose Go because it attracts the best talent & is most performant

Decision: Go
We chose Go as our backend programming language because:
Attracts top talent, those wanting to be on the cutting edge & has a growth mindset
Performance is highest given concurrency, short warm-up time, fast compiling, etc which is important for a payments startup
The downsides of less libraries, harder to find experienced talent, and more mentioned below didn’t outweigh the pros.
Alternatives: Typescript, Kotlin
All Options
High-Level - These languages are more human-readable and easier to program than low-level languages. They are designed to be user-oriented and make it easier to convert algorithms into program code. High-level languages are often used in mobile app development.
Compiled
Procedural: Pascal, Fortran
Object-Oriented: C#
Functional: F#
Multi-Paradigm: Go, Scala, Swift
Interpreted
Procedural: Perl
Object-Oriented: Kotlin, Java, Python, Ruby, JavaScript, TypeScript
Functional: Haskell, Erlang, Clojure
Multi-Paradigm: PHP
Low/Middle-Level Languages - These languages are closer to machine code and offer more control and efficiency than high-level languages. They are machine-oriented and express programs in terms of the machine operations needed to perform a task. Low-level languages are still needed for performance, such as for writing drivers for graphics cards.
Compiled
Procedural: C
Object-Oriented: C++
Functional: Rust
Honing in on the top options
Typescript: TypeScript is a superset of JavaScript that was developed by Microsoft in 2012. It adds optional static typing (ie where you specify the data type of a variable when creating) and other features to JavaScript, making it more suitable for large-scale applications. TypeScript’s syntax is also similar to that of JavaScript, which makes it easy for JavaScript developers to learn. TypeScript also includes features such as interfaces and classes, which can make it easier to organize and maintain large codebases.
Kotlin: Kotlin is a cross-platform, statically typed, general-purpose high-level programming language with type inference. Kotlin is designed to interoperate fully with Java, and the JVM version of Kotlin's standard library depends on the Java Class Library, but type inference allows its syntax to be more concise. It’s used by 60% of professional Android developers.
Go: Go is a statically-typed, compiled language that is designed to be simple, efficient, and easy to use. It is often used for building high-performance network services and distributed systems. Go’s syntax is similar to that of C and C++, making it easy for developers who are familiar with those languages to pick up. Go also has built-in support for concurrency, which allows for easy parallelization of code and can lead to significant performance gains.
We blacklisted…
PHP - Way too old school
Clojure - Owned by Nubank, a competitor
