No secret that choosing the right technologies, platforms and programming languages for your upcoming development project can be a real challenge. Based on our experience working with different company types from various industries, most of companies looking to kick off their project development choose technologies based on the following criteria:
However, personal preferences are very subjective and can lead you in the wrong direction. What if technology you like doesn't support required features or requires expensive and rare specialists to deploy? Or what if your favorite technology is becoming dated? Although peer companies can indeed provide some good technology references, it's important to know who exactly makes a recommendation. Is it a CTO or a marketing director? Or maybe it's an HR consultant? Can you really guarantee they're competent enough to recommend technology solutions for your business and particular project?
Today, we can find a lot of comparison charts and graphs online that delve into pros and cons of different technologies and provide solid arguments for or against their choice. Yet, even if you have a technical background, you need time to figure out what will work best for your project case and make the right choice out of plethora of solutions available in the market.
Speaking about historical context of technology use cases, many now famous sites were built long time ago when they were pretty much limited in choice. If Facebook were to choose a programming language for their social platform now, I doubt they'd have chosen PHP for development. Also, some technologies are better promoted / known than the others and it can be tricky to choose the right one without in-depth knowledge and understanding of modern platforms ecosystem.
That being said, none of the above methods of technology choice is objective enough for final decision making.
For starters, let's determine objective criteria that should be used when choosing technology / language for your project development.
When you choose technology for the future project based on these criteria, you'll be able to save both time and money and attain appropriate ROI at post-release stage.
All software development projects are divided into 3 main types:
For most of in-demand software solutions there're packaged solutions already put in place, so there's no need to re-invent a bicycle.
All programming languages can be divided into 3 main types:
These types are often rather interwoven, i.e. frameworks are programmed in a pure language, while CMS's are based on frameworks. Each popular language already has a lot of frameworks and CMS's available.
The more robust the project, the higher scalability and fault tolerance requirements, which means it's much easier to build everything from scratch than utilize ready-made solutions with a lot of hidden flaws and bumps in the road. For instance, if your goal is to deliver an application that will attract 10,000 daily visitors, it'll be more cost-effective to base it on CMS that will consume 3x more server resources and set up an addition server for $50/mo to make it work. However, if you're looking to build a website able to attract 100 million daily visitors, the cost of additional servers will be too high, so it's much easier and more cost-effective to build everything from scratch and tailor all features to your particular project needs.
The larger the project, the larger the tech stack to be used on it. You may need to use several languages to develop a large and complex portal. Oftentimes, one language can help solve only certain issues. Since most of enterprise projects are very large, they're divided into different parts, each working on a different server, with different domain names and technologies used. You shouldn't be afraid of using technologies mix for your project development; however, you should only use it if there's a clear need for this. 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.
Let's distinguish some of today's most popular languages:
Your choice of technology will depend on suggested project architecture. Software architect outlines the main building blocks of the future solution and sets a roadmap for languages to be used, cache system, databases, and how it all will work together.
For example, let's review Instagram technologies (based on Insight IT data):
It's quite an adequate technology stack for building a product like Instagram which, by the way, isn't the most complicated development project out there!
Cost of specialists is one of the most important factors that should be considered when choosing technology stack for your project development. Let's compare the average cost of programmers and engineers in Ukraine where Intersog runs 2 R&D centers and in the United States where we're headquartered (based on dou.ua and indeed.com):
Skill | Cost in the USA (annual, USD) | Cost in Ukraine (annual, USD) |
---|---|---|
Python/Ruby | 107,000 | 40,000 |
C | 102,000 | 37,200 |
PHP | 89,000 | 33,600 |
Java | 102,000 | 39,600 |
JS | 99,000 | 42,000 |
Scala | 130,000 | 46,800 |
Now let's translate it into human language. Although Java is an old programming language, this skill has always been one of the most expensive ones. PHP was always one of the cheapest languages with a huge global developer base. Scala is one of the newest and most trendy languages which makes cost of talent very high (and talent availability is pretty low). Another expensive language that's most sought in Silicon Valley is JS; growing popularity of JS-based frameworks such as Node.js and Angular.js adds up the cost.
That being said, if you're looking to save costs, you should better consider PHP due to rather low cost and good availability of talent. Yet, if you're looking to build a robust application with sophisticated features and a high quality look and feel - turn your eyes upon Scala that's often referred to as the future of web development (however, you'll have hard time finding Scala talent, that's for sure!).
Speed of development is another factor to take into account. Python and Ruby will significantly accelerate your development process, while Java will slow it down. That's one of the reasons why we haven't seen a lot of Java based mega-projects in the past 10 years, while the number of Python projects has skyrocketed lately.
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, frameworks change every 2-3 years, and CMS's - every 1-2 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.
TIOBE Index is a great source for trendwatching as far as programming languages and their popularity / developer mindshare.
And what other technology choice recommendations would you add here?
Intersog, a leading technology partner, gains recognition on Clutch's prestigious list for game-changing software developers…
In the shift towards widespread remote work, the adoption of advanced digital tools marks a…
In the quest for innovation, the fusion of AI and Machine Learning with global remote…
In an era marked by rapid technological progress, the fusion of cloud computing and artificial…
Explore Intersog's unique approach to tech recruitment, offering a transparent, direct path to genuine career…
Explore the critical role and innovative strategies of efficient software maintenance for ensuring software stability,…
This website uses cookies.