A Simple Question (or is it?)…Which One Should I Choose?
Many companies come to us with an idea for an enterprise application or product. Because of their industry expertise, they see a way for a web application to be the answer to their challenges and provide serious value to themselves and other members of their industry. They often have an idea for how the application should work.
But when they go to hire a development team (internal or external) to implement their vision, they are confronted with a confusing landscape of technologies, developer types, and acronyms. Particularly, they are challenged with the question of what application technology stack would be best for their desired product’s application development.
The process by which you select a tech stack is often a hard decision for business leaders to navigate. The options can often be overwhelming if you are non-technical, and they come with the challenge that committing to the wrong language or framework will have serious consequences down the road. It comes down to expertise, and we know there are only a few key factors to consider during the decision process, and you can quickly narrow the options down to a manageable set of technology choices. Your first step should be seeking help if you are not sure of the best choice. This will help clear away the challenges around the term “tech stack” so you can mentally place each technology in its correct category.
What is an Application Development Technology Stack?
Why does it Matter?
An app development tech stack is a simply a combination of software products and programming languages used to create a web or mobile application. Applications have two software components: client-side and server-side, also known as front-end and back-end.
An app tech stack is a collection of various software elements that contain all the capabilities you need to build software applications. In web application development, tech stacks typically consist of:
- An operating system (Windows, Linux, iOS)
- A web server (IIS, Apache, Nginx)
- A database (SQL Server, MySQL, Postgres)
- A Web framework (.Net, Rails, Laravel, SpringMVC, Spark)
What is the Criteria for Choosing the Right Tech Stack for your Project?
Let’s start with determining the objective criteria that you should use when choosing a technology stack and or language for your project development.
- Project scope and type
- Project complexity
- Speed of development
- Expertise cost
- Availability of engineers
- Available toolsets
- Strength of Developer community
- Fault tolerance
- The latest trends
- Documents and specifications
- Potential cost of maintenance and support
- Performance load requirements
- Cross-platform coverage
- Integration with other 3rd party solutions
When you choose technology for the future project based on these criteria, you’ll be able to save both time and money and reach proper ROI at post-release stage.
The Type of Project will Help Determine Stack and Language Choices
All software development projects are divided into 3 main types:
- Simple projects: like landing pages, plain web stores and applications- often they are out-of-the-box solutions
- Mid-level projects: are often complex online stores and marketplaces, enterprise solutions that are frequently based on frameworks
- Complex projects: such as large portals and eCommerce solutions, social networks, innovative data-based apps and large enterprise-wide solutions that – usually include of a combination of pure programming, frameworks and accelerators
Choosing the Right Programming Language for the Job
Programming languages are usually divided into 3 main types:
- Pure programming languages that allow building your software from the ground up. If you look at the many of top powerhouse sites such as Twitter, Dropbox, Pinterest, YouTube, Amazon, LinkedIn you will notice they are all unique, and they are great examples of pure programming.
- Frameworks provide development engineers with pre-built tools and ready-to-implement rules. Frameworks can significantly accelerate development with the right expertise; but they can have certain restrictions and only engineers with the right expertise can make this work at a high-quality level. This is the place where mid-level projects are usually found.
- Prepackaged solutions such as CMS are often comprised of modules. Prepackaged solutions are not about programming, but rather it’s about quick setup and configuration. There are many limitations and they are highly inefficient to go beyond the prepackaged requirements and restrictions. There is little to no development process, and it’s highly inefficient and often will not change to an enterprise’s growth needs.
Higher scalability is one areas where a larger, more robust project development excels, but this type of project is prone to challenges, but if written correctly, it will continue to perform. With this type of project and the mass scale of requirements, it’s much easier to build everything from scratch than to go with a ready-made solution with a lot of hidden flaws and bumps in the road.
Keep in mind; the larger the project, the larger the tech stack to be used on it. This type of project is usually planned with a mix of languages to develop a large and complex portal. Oftentimes, one language can help solve only certain issues. Subsequently, when enterprise projects are very large, they’re divided into different parts, each working on a different server, with different domain names and technologies used.
This mix of technologies shouldn’t deter you from this strategy; however, you should only use it if there’s a clear need. Google is an excellent example of the project using such technologies mix. It’s so large that its different parts are programmed in C/C++, Java, Python, JS, etc. In addition, Google actively invents new technologies such as AngularJS and many more.
Tech Stacks and their Technologies: HOW DO THEY COMPARE?
Asking a software development engineer what the differences are in tech stacks can be really confusing. In this article we look from a non-technical person’s perspective, evaluating some business costs that can be affected by tech stack choice.
There are specific “tech stacks” for specific types of development and industries.
|Ruby on Rails||Ruby||Higher costs due to smaller dev community and expertise is more difficult to find|
|Django||Python||Fast-high quality, but devs are expensive|
|Laravel||PHP||Simple, many prepackaged solutions, large community of devs|
|.NET||C#||Devs are abundant, can handle complex programming, large, stable community|
Let’s Distinguish Some of Today’s Most Popular Languages:
Python is a modern language that provides fast and quality programming. It’s mainly used on medium-level and large projects. However, Python developers are not that many and are quite expensive.
Ruby is a fast modern language that’s mainly used on simple and medium-level projects and that’s so much favorited by startups. Developer community is scarce and cost of development is high.
Java is a hardcore language that’s very expensive and slow in development. It’s mainly used on projects with some very specific and sophisticated requirements.
PHP is used for simple and medium-level projects and it contains a lot of boxed solutions. PHP is rather an inexpensive technology with a broad global developer community.
C# is close to Java and is used on complex projects such as FinTech.
Performance is an Important Metric..
It Affects Many Aspects of the Business Ecosystem
Performance is usually the metric a potential business owner/manager has to consider most important initially and long-afterwards! Performance describes how fast a page loads, or how fast the application can manipulate data or process an image or request. In general for web applications, we’re talking differences of tens of milliseconds.
Costs are Always Important to Understand
There are many costs associated with software applications, for example; custom development which includes design, development, testing and maintenance, hosting cost, technology licensing, and paying for developers. These costs are highly dependent on the underlying technology of the application and the expertise of the team building the software application. If your team (external or internal) does not have the expertise on a specific stack, costs will increase, as the ramp-up to the necessary skills may be difficult.
Costs to consider when you are choosing a technology stack not only includes the cost of the initial design/build of an application, but the costs associated with upgrading, testing and maintaining the application should be taken into consideration. In this digital ecosystem, you will also have to take into consideration the costs and ability of your technology stack to scale to meet the needs of your business growth and user demand. This will include the need to scale your applications to meet the need of an increased user demand to improve your market-share and ROI.
All these costs can be mitigated with hiring an external team with the specific skills needed for the technology stack you have decided on. This will ensure your time-to-market will decrease, improving your ROI and reducing your total cost of ownership.
What is the Developer Availability and their their Level of Expertise?
Finally, the supply of people able to build your app, upgrade your app, test and maintain your app in a specific technology is a critical issue when thinking about the long-term evolution of an application and or product. Long term considerations also have to be Being able to change or scale your internal development team according to the application’s needs is critical to the long-term success of the application.
With all this in mind, here is how we would rate the different technology stacks across these metrics. This cost can decrease if you utilize external help from a reliable technology partner.
Which Tech Stack Should I Use?
Often the question is “Can I afford a higher performance tech stack? Does higher cost equate to higher cost? Not always, The question should be; “What tech stack is right for me?” is reliant upon what it will take to create, test, maintain and host your applications.
These questions should also be asked of your software development partner, who not only offers development engineers but testing and maintenance services to help you reduce your costs.
We think asking “Which Tech Stack Should I Use? is the Wrong Question
Usually when business leaders focus on the big picture, it really doesn’t matter. If you have an idea that you think is really valuable, the first thing to do before deciding to build it is to validate it. It’s your idea and it is supported by your past experiences with building your last project and what the latest trends within you industry.
With this in mind, both Java and .NET framework are perfect enterprise-level technologies. They work fantastically well with high-load systems, complex architectures, and big data applications. Both Java and .NET are scalable and reliable solutions for large-scale projects.
From our perspective, the right tech stack to use is the one that helps you validate the assumptions the fastest, by allowing you to build out the application cost-effectively and get it in front of real people quickly.
If you have an idea for an application that could improve your business or even be valuable to others, take the next step, not by picking a tech stack, but by mapping out the critical assumptions you need to validate. It’s not always straightforward, and we’re always happy to help map these things out.
When you choose technologies for your project, you should always look ahead, especially if you’re planning a complex and long-term project. Programming languages’ popularity changes every 5-7 years and sometimes even quicker, and frameworks change every 2-3 years. As such, you need to choose technology that will remain popular and well supported in the near future, otherwise you’re at risk of having to modify your entire project soon and paying through nose for your software development.
The right software development partner focuses their time on getting your product into your hands as quickly and learning from their client’s feedback. But, before any designs get completed or requirements and code gets written, you will need to select the tech stack that will power your application.