A lot of people know my secret, but knowledge is not sufficient; execution is everything. It's daring and the opposite of good practice. It goes against the job market trend. It seems harder, and big tech avoids it, so you might think it's a bad idea, and that's what makes it a secret.
I build technology stacks on functional programming (FP) technologies instead of the industry standard of imperative programming technologies and hire for it.
I have a few beliefs that support this decision-making. I believe that FP is more interesting than imperative programming. That FP drives the team to make better technical decisions. That you learn more software fundamental knowledge, which is more useful and easier to translate between technologies. That you write better programs for the user with FP. That the quality of output is better and thus the customer outcomes are also better since there are fewer bugs and fewer side effects. That you need a smaller team to arrive at the same outcomes.
Who programs FP anyways?
FP is thought to be harder because the abstractions you have to learn are founded in mathematical theories like Category Theory and Lambda Calculus rather than your business-centric-of-the-moment object-oriented abstraction. So FP is not for everyone, and that's fine.
People that program FP are fanatics; they want to talk about it all the time. They want to discuss the fundamentals, debate its finer points and why it makes a better application. They go home to learn the next best thing about it. They are relentless, and that's great; they're exactly the type of programmers we want to join this organization: people deeply passionate about programming and want to show off all the good things we can build in the real world with FP.
Why not just imitate big tech?
Competition is for losers. Peter Thiel makes a compelling argument about it in his 2014 Startup School talk "If you start a company, you always aim for monopoly and avoid competition; hence competition is for losers".
If you imitate Google, Amazon, or Microsoft with technologies like Java, Python, C#, you will be setting yourself up for competition. Not only with them but also all the tens of thousands of other imitators. It will likely not matter to the incumbents, but it will be very hard to compete in that hiring market for you.
Instead, I choose to offer something you cannot get at big tech, FP, a safe place to write delightful code that satisfies all your obsession about Types and Monads, Lambda Calculus and Category Theory.
Can you hire enough FP people?
Detractors of my hiring philosophy often make the case that it's impossible to find sufficient talent with these constraints because the pool of candidates is too small. That does not matter; I'm not looking to hire 1000 programmers yearly. But even if I was, according to StackOverflow's latest yearly survey, 25% of programmers use an FP language, it seems like a sufficiently large pool to me.
Can a startup be successful with FP?
We have very successful startup exits as examples. Whatsapp, which used Erlang, was sold to Facebook in 2014 for $16 billion. At their acquisition, Whatsapp had a tiny software team of 35 engineers.
Another example is Jet.com which used F#, Microsoft's take on FP, sold to Walmart for $3 billion in 2016. The company was only two years old.
I want to keep going and list them all. But the point is made. FP is not a barrier to building a successful startup, and it's a key secret to building successful engineering teams, a powerful organization, and delivering on shareholder value, business value, and good customer outcomes.