Algorithm development for early stage products:

There is a debate between two approaches to algorithm development. I call the first approach “research-oriented”. Here, an algorithm researcher builds an algorithm in a lab environment in MATLAB or Python. Then a software engineer converts the algorithm into production code that can be deployed on the company hardware, such as cloud, mobile, or PC. I label the second approach “full stack”. Here, the algorithm developer is responsible for all the stages of the research, development, and deployment of the algorithm.

I have been working on a demo during the last three weeks. I found myself dealing with tons of technical problems that are not related even remotely to the core algorithm. There was a moment when I started pondering whether it would be more efficient for the company to hire a software engineer that would help the algorithm team to concentrate on its job. And then I understood that the demo would not be possible with such an engineer. The research approach is not only inefficient, it is counterproductive for start-ups. Below I elaborate on why.

The main advantage of the research approach is “specialization”. When everyone does what one knows best, the final result is definitely better. A researcher can spend more time on research questions when she is not “bothered” by tons of various seemingly unrelated technological problems. However, as the most specialized species are not the best survivors in the evolution game, the over-specialized companies are not the best survivors in the start up game. There are three main reasons:

Adaption in ambiguous environment.

When the product is clearly defined, an engineer can concentrate on developing her part. However, in many start ups the product definition changes together with R&D process. As the company matures, the team begins to understand better the business and the technical limitations, thus altering the initial product.

An algorithm engineer is required to be in full control of the whole pipeline so that she can quickly adapt it to the changing requirements. Without the full control, it is virtually impossible to react fast enough to incoming challenges.

Complexity

The technology is complex and is becoming more even complex. In an ideal world, a python research code can be seamlessly re-written into iOS real time library. However in real life, no one has enough time to rewrite code from scratch. The trick is to utilize existing third party solutions as much as possible. The solutions may work great by themselves, but when connected together, they may cause weird bugs that cannot be figured out by someone who does not understand the whole package.

Resources

Resources are scare everywhere, both in a tiny company and a huge corporation. But start up success is all about management of resources. According to the popular Lean Startup theory, hiring more people than needed to complete the MVP is a waste of resources. Specialization cannot help to make products faster. It can only help to make them better. And this is a waste.

Summary

To summarize, I think that an early stage product developed by a start up requires an algorithm engineer capable of researching, developing and integrating the algorithm into a full product.

To view or add a comment, sign in

More articles by Michael Kolomenkin, Ph.D.

  • CVPR 23

    I finally had time to write about CVPR23. The conference went really well with fascinating papers, motivating talks…

    3 Comments
  • NFTs, yes or no - my takeaways from NonFungibleConference

    The post below represents my own opinion and not that of Playtika Just came home from NonFungibleConference. I'm back…

    2 Comments
  • When to outsource your project

    https://medium.com/@michaelkolomenkin/when-to-outsource-your-project-d7838b917b27

Others also viewed

Explore content categories