get asked by clients & leads how we can deliver platforms that would usually take months in weeks while keeping the consistency, scalability, performance, and reliability. None of our platforms have had a single second of downtime, and some of them have billions of server requests per month. How do we do it?
Don't reinvent the wheel.
At Polydelic AS, our components are tested and rewritten multiple times. Those components have million of usages allowing us to ensure that they work correctly. Instead of using a new tool to create something, we have a standard library. For example, each new Flutter app we create has two years of reliable application code to call on for utilities and features.
Unfortunately, many coders like to create fresh code each time they create something; this leads to bugs and long delivery times. We avoid this with our standard libraries that are simple, modular & portable across projects.
We get approached by companies that have a 'new database tech' or 'new coding stack'; these can be extremely damaging for a project to use. Not only are not many using these new technologies, aka testing, developing, finding pain points, but it also takes weeks for developers to learn new tech, and even then, the tech isn't applied optimally, usually ending up in rewrites down the road. You also take the risk of the tech being abandoned.
We use super simple APIs that anyone can write and understand. For example, we have been using simple Express APIs written in TypeScript that connects to Cloud managed services for many years. We've found for our backend; it's all we've ever needed. It's infinitely scalable, automatically, and it works like a standard easy-to-understand API with auto-generated documentation. It's better to know something inside out, open-source, instead of taking unnecessary risks for clients.
Strong-typing is a must, don't be lazy.
If we take on a project and it's written without models or classes/types/interfaces, we will scrap it. It's 2020; we have plenty of great solutions for types, TypeScript, Dart, for example.
The main downtime in the largest companies in the world has been because of silly errors caused by languages like Python. Recently this was announced by the Quora development team that they regretted the use of Python as a backend language; many others have said the same; in 2018 Uber was another with the same opinion.
The only reason we see not to use strong-types/models today in 2020 is if your developer isn't good enough to understand how to apply them or doesn't understand the architectural value they provide, which comes from a lack of experience.
Use Cloud managed services.
Many CTO's out their still setup services/servers manually, resulting in a mess not only for business but the developers as well. Unless there is a particular need say, legally. It is not necessary. It is not cost-saving.
Our primary database for many of our projects at Polydelic is Firestore. Why? Well, Firestore gives us a multi-regional 99.99% SLA. Meaning we'll never see any down-time and that the database is scalable to billions of users. The database is managed by Google, why host your own? Unless there is a particular need. You will save on dev-opts costs, and you'll have higher reliability & performance.
There are many excellent solutions for managed services out there. For example, Elastic Search is a search tool used by thousands of companies. The creators of Elastic Search offer a Cloud-managed service that's cost-effective and auto-scaling, and they know Elastic Search inside out. Compare this to hosting your own Elastic Search; you will be paying $1000's in operational salaries, and it won't work as well. What's the smart choice here?
If you're looking for a realistic quote/timeframe on a project, contact us, we can provide one for free.
We have a few articles that extend this post, you can find them here.
If you have any feedback/improvements let us know by contacting us.