EHK talks to Nelson Diotto on building scalable tech products
This interview with Nelson Diotto was conducted and condensed by EntrepreneurHK (EHK).
Nelson Diotto is a veteran IT consultant who specialises in mobile and web apps development. He now works for Videoplaza, one of Sweden’s fastest growing companies, which currently helps more than 100 customers run their video advertising businesses across 30 markets. In his most recent project, Diotto supported Sony Entertainment India to integrate video advertising on their mobile and web apps.
As a seasoned professional who had spent over ten years advising developers and project managers from start-up companies on building their tech products, Diotto witnessed some exceptional surge among the peer’s slump. The time-served consultant is here to share with EHK what constitutes a promising tech product pro bono.
“There is no off-the-shelf guide for technical success, there however are some winning patterns and mentality I observed from the successful entrepreneurs. The start-ups that implemented those ideas either worked very hard to overcome the challenges or die trying.” – Nelson Diotto
1. Setting targets and KPIs
Setting technological targets and implementing key performance indicators (KPI) to track progress are paramount for every young business. The best examples I have seen since my early days were that start-ups used Scrum toolsto measure velocity, keep tab of technical debt, and take decisions based on (very simple) business cases. Business cases are particular useful to analyse if a technical decision should be taken in the first place. E.g. “We want to use a new framework,” – how many hours we estimate it will take for all developers to learn the new framework? What improvements the framework will bring? How we measure successes? Writing down those questions are a good thought exercise and down the road after implementing the change you can go back and see if the business case has fulfilled all its goals. Do that a hundred times, and you will have a good indicator if you are in the right path or just wasting money.
2. Embracing the cloud
Long gone are the days when businesses need a physical server sitting in the office running e-mail, SVN, and other services. If you still have one of those machines in your office you should seriously start considering moving all services to the cloud. Just ask yourself “if a fire destroys all my locally stored assets, will I still be in business tomorrow?”
Cloud computing offers fast scalability and reliability without the risk and maintenance complexity. The cloud is pay-as-you-go, so it can scale if needed or rollback if not on demand. Cloud services like Amazon Web Services or Google Drive abstract the intricacies of load balancing, fault tolerance…etc. That frees business resources to concentrate in the services while the complexity of running it is outsourced.
3. Limiting the stack
Developers love trying new frameworks and programming languages Learning new tricks does keep the mind sharp and the job exciting, anyhow, the downfall of too many tools in the stack can lead to a lot of damage and slowdown considering a business’s agility. I remember a particular case which I had to fix a bug on an application developed using an obscure PHP framework. The developer who created the app had long departed the company but his legacy of poor choices and no documentation remained with us for many years.
In my current job, the choice of tools is limited by an appointed council. The council votes on any additions or removals in the tech stack. This system enforces logical choices over impulsive ones; the tools and languages we pick are scrutinised and reviewed by people with different backgrounds and needs. Therefore only those satisfying most of the criteria are selected. The benefits are immediate and lasting — it made it easier to shuffle developers around teams, eliminated learning curves, and improved developer turnover.
4. Employing the Service Oriented Architecture
In all my years as developer I can count on one hand start-ups that used Service Oriented Architecture (SOA). In my personal view this is the most important step a business can take when creating future proof scalable services. SOA is not just a design pattern — it is a new way to think about services and clients. SOA encapsulates internal teams by treating team as a client of one another. For example, the Sales Team is a client of the Front-end Team, the Front-end team is a client of the Back-end Team, and the Back-end Team is a client of the Operations Team. Each team service relies on one another, but only communicating via API.
The benefits can be seen from day one, but SOA really shines when a start-up begins to scale, especially if the grow is very fast and there is no time to spare for redesigning internal processes. It encourages the re-use of shared services, helps isolate issues and makes product integration more flexible. Ultimately, SOA significantly reduces operability and interoperability costs.
5. When in doubt, live it out
The biggest mistake most startups do is trying to incorporate too many features into a single product release. If the product core functionality is Foo and Bar, there is no real gain in adding Baz to the release. Even if Baz is a cool feature that perhaps someday a client will use. Baz will add into the regression or will release testing and add unnecessary complexity to the code, and probably will be outdated by the time it is actually required.
Worst of all, you may not ever be able to retire Baz because some clients (without telling you) start using the now outdated Baz API. The Baz cool feature does not really bring any commercial benefits, and still, the business has to bear the costs to keep it running. If in doubt about the immediate usefulness of a feature, better live it out. It is always cheaper adding it later on than trying to remove it.