I’ve always been passionate about technology and that’s why I was shocked by the meeting I had recently. I was in my home office talking on Skype with a CTO from a FinTech startup (let’s call him Richard). Richard explained that he wanted us to build some payment processing service but, to my surprise, what he said was…
I want you to build a payment processing service and I don’t care which technology you will use, just make it work.
“Making it work” is an obvious objective but usually our clients have some strong opinion about the best technology for FinTech, based on personal preferences or prior experience. Not Richard, apparently.
Maybe it was a matter of trust that we will make the right technology decision or the proposal could be treated as an independent microservice. Still, with an approach like this you can end up with a project in COBOL (no offence to COBOL developers) and good luck with finding developers for maintenance.
Richard’s happy-go-lucky attitude really made me wonder: when push comes to shove, how important is the technology choice?
Miss is as good as a mile
Let’s take a closer look at startups. More than 90% of startups fail: is it because of bad technology choices? Studies show that top reasons are:
- no market for the product
- lack of funding
- growing too slow or too fast
- sloppy development team
Other aspects like time, money, and team seem to overshadow technology. Yet, even if the technology choice doesn’t impact your business directly, there is a strong indirect influence. A good Fintech technology choice can help with all of the above (and a bad one can make things much worse). With the right tech stack you can save time and money, and most importantly you can grow because your solution scales.
One of our clients, an InsurTech startup, already had a working product but to grow their business they needed to make some technology changes: starting from minor adjustments like replacing Angular with React, ending with major shifts, like switching from MongoDB to Postgres and making serious architectural modifications. The biggest problem they had was amnesia – they forgot they were a startup. The created architecture could support Facebook-like traffic but they weren’t Facebook yet! With limited human resources, it’s hard to quickly add new features and test everything. Eventually, they were left with a tough choice to redesign – and spend even more time and money…
No guts, no glory
If we agree that technology matters, then the second key question is: how should we make those tough technology choices? Actually, you can find similar products developed using different technologies, which are equally successful: how is that possible? For example, our client Smart Pension uses Ember.js, React and Ruby on Rails, while their competitor The People’s Pensions works with ASP.NET MVC – and they are both successful InsurTechs.
This shows that choosing the best technology for FinTech is far more complicated than it seems. Good luck with looking for simple rules or one technology to solve every problem. What questions should we ask before making Fintech technology decisions? Many people start with something like: “I want to build a web app. What should I use: Angular, React or Vue?” Well… with this much information, any of these libraries/frameworks/platforms will work. And there are many examples like this: should I use Java or C#, this database or that one?
I’m in a React state of mind…
The worst thing you can do is to fall into the trap of being emotional about your decision. The beloved technology almost becomes your pet. Instead of using technically compelling arguments, you start making quasi-religious claims (I’d call it “technology fundamentalism”).
Personal/team preferences can be an important factor: if you’re adept in a given technology you can be very productive. However, no matter how strong your personal bias, the project goals should always come first. Help your good fortune by comparing different technologies. When doing research, also google things like: “why I shouldn’t use X” or “why we switched from X to Y”. This will give you perspective.
Do not rest on laurels and learn new technologies: try them in a test project, PoC, your own side project or maybe create some open source project just to play with new ideas. Who knows, maybe by experimenting you’ll find the best technology for FinTech of your own?
Devil in the details
Once emotions are kept in check, you can take a closer look at the grounding stones of each project: requirements. Functional requirements define specific behaviour or functions of the system. They are often presented in a form of user stories, such as: “As a user I want to see a list of all transactions”. You can make sure those requirements are met using different tools so they rarely define the final technology stack.
It’s non-functional requirements where the real fun begins, as they define the criteria that can be used to examine the operation of a system. They are often called “qualities”, “constraints” or more informally “-ilities”, and may include:
Those “quality attributes” have a big impact on the system architecture and technology choices. Moreover, it’s not enough to say that security is very important in your project or that the system has to be fast, as it begs the question: what does ‘fast’ mean? Try to be more specific, e.g. “Each page has to load in under 5 seconds with a fast 3G network“. Now you’re talking! And you can finally make the technology Fintech choices to meet those requirements. Just be careful not to over-engineer, especially when you are a startup.
Best Fintech technology: are we there yet?
Remember Richard? I suspect he wouldn’t be pleased to learn that the above points have barely scratched the surface of the technology choice issue. As it often happens in software development, every answer gives rise to even more questions. This subject being no exception, it calls for a deeper analysis of the problem, which I will address in more detail in the second part of this post. Stay tuned for more musings about choosing technology for FinTech to find out if any such thing exists!