Building a tech startup - is a complex, multistep process with many pitfalls and traps waiting on the way. However, some prior analysis and proper strategy could help founders to avoid many painful mistakes.

There is a well-known truth about the software - the less time an error exists in your system - the cheaper it costs to fix it. Unfortunately, this rule works similarly in the opposite direction. The more time you spend with an error or a wrong decision, the more outcomes it creates and the more it cost to solve it or even just to progress with them. That’s why the very first decisions you made starting your breakthrough project should be very carefully considered. And selecting a proper technology stack is definitely one of them. And unfortunately, there are so many examples of the wrong choice. Take Twitter. Initially, it was built on Ruby and then almost fully rewritten in Scala and Java, also with a different architecture. How many millions of dollars do you think this wrong choice cost them?

As a startup CTO and principal architect in Centaurea (Startup-as-a-Service company) - selecting technology stack is a pretty common task for me. I do this either for a startup we build or as a part of consulting services. And there are many variables I normally take into account when making a decision (if it will be interesting to you - ask me and I will write an additional post about the selection criteria).

But, one of the key criteria - is a technology lifecycle phase. On his interview about Flash in 2010, Steve Jobs noted that every technology has its own "spring", "summer", "autumn" and eventually get on the graveyard of history. And Apple’s approach is to select tech which is in their “spring” phase to ensure it will be a long term benefit for the company and clients using it.

This is very similar to my ideas. Startup - is a company, a business for tomorrow, not today. It really will shine in 2-3-5 years from now and when selecting tech stack, the Founder should be ensured it’s still will be relevant at that time and keep pushing the business forward, instead of slowing things down.

So I selected a list of promising technology which I advise you to consider for your startup because I believe they are fresh and promising, but already mature enough to be used in production and provide value for your startup and business.

Main area: Frontend development

Competitors: React, Angular, Ember and approx 17 millions of other frameworks

Why: Last years it was a clear trend to bringing some functional and reactive concepts into development and add more structure to code with models, basic patterns and abstractions. And Vue follows all these trends, but the main key benefits are that it still allows you to keep simple things simple, it’s not pushing you hard to use concepts you really don’t need. Modern Angular - is an enterprise level tool because of how restrictive it is and also have a high entry threshold. React it’s no longer a standalone technology, you will need to bring 197 small pieces together to really make it work and when you one more time need to make something simple, it still will force you to write 1347 lines of code to follow official guidelines and best practices. And Vue is a different there - you need something quick and simple - you will be able to do this with a few lines of code, but if you need a spaceship - it’s also there.

Main area: Programming language, used almost everywhere

Competitors: JavaScript, Flow

Why: What do developers do without strong types? Inventing types xD No brainer, nowadays JavaScript is everywhere. Frontend, Backend, Mobile, etc. But we all know it’s not ideal, oh no… There is some much flexibility in it mixed with historical language design problems, which make it fantastically useful and the same time fantastically dangerous. And TypeScript gets it right. It’s just concentrated on main problems and add solutions and limitations, still saving tons of possibilities and also operability with JavaScript. So you could think of it as a JavaScript on steroids. And with huge companies behind it’s back (Microsoft, Google, etc) and many large projects already written on it, developed ecosystem - it will not disappear anywhere. Need to mention, that TypeScript could be used with a node.js framework (server-side javascript) so you could perfectly use it for backend development as well. And it’s 2019+ right, you still will use Webpack, transpilers, and all that stuff so we could excuse some extra infrastructure overhead. So if you plan to use JavaScript in your project, really - try TypeScript first.

Main area: cross-platform development framework, backend development

Competitors: Java Platform, nodejs / JS

Why: There are many programming languages and development platforms on the market for decades. But in the last 10-15 years, the main tech for all-purpose development (web, desktop, mobile) was Java and .NET, and for the last 5 years, Node.js/JavaScript really kick off and get its share. Microsoft as a company behind .NET was really struggled to make their platform truly cross-platform. But. at 2016 they eventually launch the stable version of their brand new platform - .NET Core. and they eventually make it Open Source and start building a community around it. And since this moment every year, they released a major update which improves the platform and adds lots of new features. And at the time when Oracle really struggle with Java and it was looking like Java is stagnating and nodejs / JS was going its own way. .NET Core platform really gain popularity and growing its community. Microsoft heavily investing in it, in Language, In development ecosystem providing one of the best tools in the industry for development, in Cloud Integration, in an Open Source community (with a GitHub purchase). So nowadays, it’s a really nice platform for development, with majorly perfect performance and enterprise-grade stability, security. It's major programming language - C# is actively developed and provide a pleasant and productive development experience.

If you will look to a google trends chart you will see a clear difference:

This is a “Java” trend over the last 5 years

This is a “.NET Core” trend over the last 5 years

So the difference is clear. And with platform growth, I would bet on .NET Core (and later .NET 5) as a major general purpose dev platform during the next several years. We build some projects using it and majorly happy with results and effort.

Main Area: Cross-platform mobile development

Competitors: Xamarin, Ionic, Phone Gap, Flutter, etc

Why: Since the smartphone world split on IOS and Android ecosystem it was a dream about technology allowing to write a single version of the code which then will be working smoothly on both platforms. And there are many approaches to attack this problem on a market now, but it’s probably possible to say that React Native was the first who really succeed with it. So now, if you need a quite of a standard application without heavy requirements around performance or graphics - it probably will select something cross-platform instead of building 2 native applications. And pretty possible that technology wise React Native isn’t the best among its competitors, but the fact that huge company supporting it, some large applications were written on it and there is already a big community and many different components implemented with a relatively high pool of engineers - making React Native selection just a wise idea from the business side standpoint.

Main Area: Cross-platform desktop application with the web stack

Competitors: NW.js and Neutralinojs (logically same things), wxWidgets, QT, etc

Why: The desktop application isn’t such often things nowadays when it’s all about the web, mobile, IoT, etc. But even with the less hype, there is still plenty of opportunity for desktop application, especially in a business and enterprise sectors. And Electron.js (honestly similar to NW.js and Neutralinojs) develop truly cross-platform app much faster than before using well-known web tech stack. If you don’t need top edge performance (i.e. games) - using this framework could save you tons of time and money. We build a moderately complex ETL for a business client and with Electron was able to build the same application almost 2.5 times faster than competitors, who build apps for each platform. And you get much easier update and deployment just out of the box.

Main area: machine learning library

Competitors: python ML ecosystem, MLPack, Tensorflow, etc

Why: Many years Python was the number one choice when it comes to machine learning. Because it has a superior ecosystem and tons of fantastic libraries like scikit-learn to do the job. But often Python itself was a problem. I personally build specific microservices to encapsulate Python part out of the rest of the system and rewrite parts of algorithms on Java and C# just because of company policies or licenses associated with the software. So the coolest thing about ML.NET is that it’s bringing a solid ML experience to the .NET ecosystem and you could simply continue writing your application the same language and technology stack but adding ML awesomeness without thinking how to better integrate Python parts. It’s not as functional for today, but it provides a lot of useful things which should be enough for many common ML areas in your startup and it's constantly developed.

Main area: DevOps, Container orchestration

Competitors: Docker Swarm, Apache Mesos, Vagrant

Why: If you start your startup today, in 9 of 10 cases you will host it in the cloud and it will contain from multiple parts. So Kubernetes (k8s) it’s just a current industry standard to orchestrate your infrastructure properly. This year it was k8s 5th birthday and according to research currently up to 63% of the infrastructure of leading tech companies are managed with it. Sometimes it’s just wise enough to follow the industry leaders.

Bonus (yeah, I know - the article is called "7 tech", but it’s nice sometimes to over exceed expectations)

Main area: Delivery and deployment

Competitors: Manual or any other approach

Why: It’s not exactly a technology. It’s more like an approach to the management of how you plan to develop, deploy, deliver your product to the customer. Majority of modern startups are complex applications contains from multiple parts and trying to organize them manually and deploy with some manual rule - is just a dangerous way with an easy ability to screwed up anything and convert your development and delivery process into chaos. I believe there are no Founders who want this. So properly organized Continuous Integration and Continuous Delivery workflow could save you a lot of time and nerves and it’s a wise early investment for a majority of startups.

Main area: writing client-side browser code with general purpose programming languages

Competitors: Not really

Why: This tech goes to the bonus because at the beginning of the article I said it will be mature enough technologies. WebAssembly is a newborn child and it’s ecosystem just starting to develop. But it could be massive and that’s why. One of the key concepts why Node.js start to be popular is an ability to implement the whole application on javascript. Bot frontend and backend part. And WebAssembly making just the opposite. It allows you to code for the web with C#, Java, Python or any other programming language you like and then it converts the code to low-level commands and execute them with native performance. And there is already a bridge building for all major programming languages. For example, for C#/.NET Core it’s Called Blazor (for today, could be renamed though)

Main area: Blockchain

Why: Well, being in the industry for a long time I see the same pattern again and again. There is a niche technology arise but it’s a huge marketing effort around it trying to advertise it as a general purpose technology which should be used everywhere and will solve every problem. Definitely, the same story happens with a Blockchain. My position about it is simple: there is too much noise around it and in reality, it’s a very niche tech with a strict set of applications. But in its own area Blockchain could be superiorly useful and help to solve many problems. So if you assured that you need a Blockchain at your startup than Hyperledger - is definitely a good place to start. It’s an open source union of tech and framework for efficient blockchain development.

Enough for today. I hope this article was helpful to you. If you like the content please like it and share it with others, also follow us on your favorite social media. Feel free to ask any question in comments or directly. If some of my advice will provide you financial benefits and you will feel like you want to give something back - just donate something to a good deed: ecology, education, cancer-beating or stop hunger. And please, don't follow my advice blindly. This article's goal is to give you more information to consider yourself, but not forcing you to use this tech.

We also could provide you with a qualified consultation giving you advanced answers to your questions, or build you a state of the art software, or give your startup an opportunity to be at least 1 year ahead of your competitors.

Thanks for reading.

P.S. I get several complains that I didn't add any database to this list and it's a critical part almost for any application. I did this for a reason. Database - is one of the most limiting parts in the system and should be selected really carefully with a deep understanding of a product needs it should solve. The wrong choice for a DB could hurt you much more than other parts of your system. That's why I don't want to make a quick assumption on it. I know nothing about your project, so how could I recommend something? But if you need one 'generic' choice to start investigating - PostgreSQL could be a starting point. But if you not confident and your app is data intensive - spend a little on a professional consultation. That's nothing in comparison to platform development price but could save you out of the serious troubles.