When selecting a software stack for a project we are about to engage in (i.e. a “stack”), we look at several main factors:
- Cost of Development
- Ease of Maintenance
- Quality of Platform
- Long-Term Viability of Platform
Since most of the work that we do is in the enterprise business space, we often find ourselves choosing the Microsoft stack (because it fits in most easily with the infrastructure, skill set and tooling of most business customers). But how does this software stack fulfill the list of requirements above? Is it a good choice for those factors?
For the sake of this analysis, let’s look at the common setup of using Microsoft’s ASP.NET MVC for a web-based application development project, with C# as a base language and Microsoft SQL Server as the database. Below is how this software stack satisfies each of our main decision factors, and why we often recommend this as one of the best solutions on the market.
Cost of Development
One of the greatest strengths of the Microsoft software stack is the RAD (rapid application development) tools provided by the platform. These tools make more of the work of developing an application drag-and-drop for developers, and allow us to use a great deal of pre-made components to lessen the development time needed. This means that compared to only a few years ago, development costs are as much as half of what they used to be.
The main development environment used in the .NET ecosystem is Visual Studio – this is a powerful tool created and supplied by Microsoft to the be exclusive development environment of .NET. Other open-source platforms (such as PHP, Ruby, etc.) don’t have their own supplied development environment, which means that developers end up using “free” open source tools that aren’t custom tailored to that use. This hurts their ability to work quickly (and cheaply), because the tool they are using isn’t customized to the software stack they are working in.
Ease of Maintenance
The .NET ecosystem has been on the market since 2002, and has continually evolved and adapted to include the latest ideas in Computer Science as they become accepted in the field. Because of this longevity, there are a great deal of developers available who are familiar with these technologies, so it isn’t impossible to find someone to maintain your system, should you someday choose to move the maintenance of the system in-house.
For other open source type platforms, there often is a “flavor of the week” effect, meaning that while technology XYZ might be popular right now, in 6 months it might be impossible to find anyone who knows how to work in it. This means big expenses to find someone familiar with the tech.
Quality of Platform
Outside of the Microsoft world, we often find that other software stacks are far from robust, or are otherwise limited. With the .NET platform, you can write one section of code and reuse it in a website, a desktop application, a server application, or even an embedded piece of hardware in your microwave. There’s a ton of possibility for code re-use, which saves you money.
Additionally, we find that when other developers come from a background such as PHP, their code quality tends to be very low, because there aren’t the kind of strict guidelines and standards that .NET tends to impress upon its users. Generally these sort of developers started out as designers or “webmasters”, and not true programmers. Poor quality and low maintainability is the result, leading to massive re-writes every few years.
Long-Term Viability of Platform
In 2002, when .NET became available on the market, ColdFusion was still immensely popular, as was Java and Visual Basic. A few short years later, PHP and Ruby became available and grew in popularity. Since then, ColdFusion is dead and discontinued, Visual Basic is unused, and even Java has been restricted mainly to large corporate environments too heavily invested in Java to back out. And even Ruby and PHP have fallen out of favor, which several newer “flavor of the week” technologies taking their place in the market in terms of popularity – such as Meteor, Go, etc. – and all this time, what remains a steady, popular platform still pumping out enterprise quality code for the majority of the Fortune 2000? Microsoft .NET. It’s a long-term stable option which means that you can expect that your system gets long-term use for a long life.
If you’ve worked with software developers before, you know that sometimes developers can have an almost religious commitment to their toolsets and software stacks of choice. So, many developers might disagree with some of my analysis. In fact, in many cases I might disagree with myself, because there is no one platform or software stack that is the best tool for all needs. Because of this, we often find ourselves working in and recommending other tools than what is discussed above – we believe that the stack alone is not what makes great software. What makes great software is having the smartest developer you can get, having great communication, and having a commitment to and expectation for excellence.