How to Choose Appropriate Technology for Business Software Development

Each month several clients come to our software development company with a clear vision of what technology they want to use. This would be great if they were IT experts, but they aren’t.
And how do they choose the precise technology needed for this particular project?
You like it. This is very subjective. And what if, according to the requirements, it doesn’t fit?
Read about it. It takes time to figure out all the aspects, even for an expert with a strong basis in development – and without this, reading technical reviews is worth nothing.
My friend said it’s cool. This usually means someone “slightly better” versed in IT than you are, i.e. whose personal opinion is more valuable than yours. But even if he’s an expert programmer, nobody knows if he’s properly assessed every aspect of the project.
A similar website uses it. Most of the popular, mature apps share some approaches because integration with existing, out-of-date solutions demands some specific technologies. If Facebook was only now choosing which technology to use, it wouldn’t take PHP as its basis. For its time PHP seemed innovative, but now it’s a different story. Here is the chat on Quora with the same issue. The thing is, you can hardly know the real reasons behind the choice of technologies for other projects.
None of these methods are objective.
Below we will try to give you some inspiration on how best to pick the technology for your IT project.
We can try to make recommendations for the direction of development based on the size and complexity of a given task.
Usually, IT projects are divided into 3 groups:
If all you require is a set of standard features, there exist multiple SaaS and CMS programs that offer them.
They are available at a very reasonable fee, easy to use and can be implemented as soon as payment is made on a regular subscription basis. Moreover, the creators usually provide support and release regular updates.
However, if your project demands a customised approach, create from scratch unique software which meets every requirement.
In software development, there are 3 levels of programming abstraction:
HLL coding: programming in a high-level language (HLL), you can do anything – you’re limited only by time and budget. Pure coding permits the development of advanced programs with high functionality, traffic and security. All the largest programs in the world, including Amazon, YouTube, Tumblr and Facebook, are written in HLL.
Creating your project from the ground up in HLL will demand more time in comparison to the integration of some ready components. In IT we count time as the hourly rate of a programmer multiplied by the hours needed for project realisation.
A framework is a kind of functional block with predefined features. The framework speeds up development but imposes certain limitations. It often demands additional data (libraries) and puts strict restrictions on integration.
A CMS (content management system) is a ready-made solution. These typically have a massive number of restrictions on their functionality, flexibility and appearance. It is difficult and inefficient to go outside of the box, but you can develop simple sites with up to a million users per month.
Most often, one level of abstraction is based on another. For each popular language, there are many different frameworks and CMS.
Moreover, different technologies can co-exist within one large project. For example, one computing language is more suitable for team programming and another for encrypting – this is why different components of the solution use different languages. This is okay if it helps to solve business tasks more efficiently.
Pure coding is used when the requirements for functionality, flexibility, invulnerability and data exchange speed are at the highest level.
This applies, for example, to huge projects which have no basic solution and where budget is often not as important as efficiency.
When it comes to a small web project with a traffic of 10 thousand people a day and flat functionality, it is more convenient to use a CMS. This will use up server resources at three times the rate, but just install an additional server for $50 a month and it will work.
In the case of a site with an attendance of 100 million users per day, the cost of adding servers will be outrageous. Here it is, therefore, better to invest money in developing a solution in a common high-level language which demands less from the point of hardware resources.
Here we will try to give a brief description of the most widely used high-level languages.
There are also many new languages that are growing very quickly, for example, Go. But right now they are quite young and raw. For entrepreneurs, this means that the use of young languages for business projects can cause more harm than pleasure for your software users. This is not the fault of developers but of the changes in the language itself, which will lead to some unpredictable software behaviour.
The preference for one language over another should be based on the total scope of the functional and nonfunctional project demands, including peak user flow, scalability, hardware and integration with other software needs.
Every language has many different frameworks. These include both general-purpose ones created to develop any necessary solutions and some for specific tasks. Sylius, for example, is a special e-commerce framework based on Symfony.
With frameworks, one can develop quite large and complex sites with advanced functionality simply via integration of several frameworks, which will be cheaper than in HHL programming code. At the same time, such a solution allows you to develop highly complex things much faster.
In addition, frameworks with the functionality of content administration are always a safer option than any open-source CMS – such as the very popular Wordpress, which got modifications from all over the place on a daily basis and often became the point of vulnerability.
PHP has the largest number of frameworks, so there are plenty of options to choose from – yet not so many of them are truly functional. In general high-quality frameworks are quite rare. The Ruby language, for example, has just one worth mentioning. C# has several frameworks for different purposes, not only for sites. All of them are constantly developing and more and more versions are coming out.
Consequently, even though frameworks do look attractive for medium-scale projects, they have some drawbacks, especially for large ones. These take the form of additional limitations to the project architecture for integration, demands of appropriate libraries and necessity of regular updates.
A CMS (Content Management System) is a piece of off-the-shelf software which only requires additions to or rewriting of some of the parts.
CMF (Content Management Framework), in layman’s terms, is something in between a CMS and a framework. CMF is usually used for more complicated websites. It allows you to get rid of unnecessary parts of the CMS which are not required for a specific project. These are far more customisable than any CMS.
A CMS includes tons of ready-programmed code for every single occasion. Tens and hundreds of modules really do interfere with the normal workflow of developers. All this greatly limits programming capabilities and brings additional difficulties to any non-trivial tasks. Such solutions are inflexible and potentially easy to crack, especially in the case of open-source CMS.
Often CMS are cracked through third-party modules that have critical vulnerabilities, since we never know which programmer wrote this or that module. Therefore, no CMS is safe for a large and complex site.
WordPress - once a blog engine, now you can find almost any type of site made on it, including e-commerce. It is one of the most popular CMS in the world. Often used to make informational sites, including various media. The system is free, but some plugins and design themes are paid.
Joomla! - General Purpose simple CMS. The functionality is very limited, lots of small sites are made on it as it’s one of the cheaper options to create your site. Many novice programmers begin learning with this CMS. Open-source and free.
Drupal is already a general-purpose CMF, which as of recently comes with a built-in Symfony framework. Pretty powerful, there are well-known sites on it – for example, the official website of the White House. Also free.
Magento is the most popular management system for online stores in the world. Pretty powerful and complicated. Requires more experienced webmasters and developers.
Each system has its own pros and cons, but none of them are designed for large and complex projects.
Since business mobile applications have become a real trend, let’s have a look at them too.
There are two approaches to use: native development and cross-platform.
Native app development for iOS is performed mainly in a programming language Swift, previously Objective-C was used in this case. And Java, as well as Kotlin, are popular for Android native apps.
Complex applications are always made native. They look and function best on different devices running the same OS. However, the problem with them is that you have to plan the creation of two separate mobile apps with similar functionality or to choose the platform first: Android or iOS and stick to one app as your main priority.
Assuming that cross-platform applications are the best universal solution to any platform is a mistake.
Much depends here on the implemented technical aspects, and simply using HTML and CSS3 won’t work well in this case.
In these cases, the following problems can arise with cross-platform developments:
In fact, cross-platform apps written in C++ can cope well with even the most complicated tasks.
For example, they can be used for the machine-learning needs of mobile technologies, e.g trend forecasting and data-mining, web applications with computer vision, and much more.
However, writing a high-quality hybrid app with C++ demands highly-qualified specialists. The main problem here is that the experts at this level of proficiency are usually involved in large, long-term projects, not in the creation of middle-difficulty hybrid apps.
The cost of development from scratch with C++, meanwhile, has again become quite expensive. Therefore, if the main reason for choosing a hybrid app in your case is money, you’d be better sticking to framework integration.
If you look at really large projects, you will find a whole range of languages and technologies. Almost all large-scale software solutions are based on several languages and frameworks, using all the power of the different advantages provided by each of them.
All technologies are developing very quickly and more and more updates are coming out. Programming languages change drastically every 5–7 years, frameworks every 2–3 years, and CMS every 1–2 years. It is important not just to choose good technology today, but to predict development trends in order to remain a leader in a few years. Otherwise, you will have to rewrite the project completely, which is always a question of time and money.
When it comes to choosing technologies, we need to look to the future – especially if we’re talking about a large project.
One of the most important factors in the choice of technology is the cost and availability of programmers. We have filtered London developers, Senior level, experience 3-5 years to discover how much they make.
You can check the actual rate here.
To summarise, experts in Java, though not a new language, have always been among the most expensive. PHP has always been the cheapest, and there are a lot of mediocre specialists on the market, but real experts are rare and well paid. Another costly one is Python. There aren’t so many professionals that can develop a large project in this language because it demands a high level of qualification.
Another important parameter is the speed of development. The fastest languages in terms of development will be Python and Ruby, while the slowest will be C++ and Java. It should be remembered that, as Einstein said, all times and positions are relative.
Of course, an important criterion for choosing a technology is the cost of support. Only a few people think of this at the beginning of development.
The cost of an hour depends on the salary of a specialist. But the number of hours depends on the technology itself and the quality of the code. If you rewrite an out-of-the-box solution, this can mean very many hours.
Using popular computing languages and frameworks, you can be sure of a professional level of support. However, an unknown off-the-shelf solution without any documentation can result in maintenance costs much higher than the cost of the program itself.
The same applies to poor-quality development. Trying to save money on testing and quality assurance isn’t going to work. On average, you need 20–40 per cent of the project time to check the solution and discover its main weaknesses. The better the code, the easier and, consequently, the cheaper it is to maintain it.
You should also look at the version of your frameworks and CMS. It is vital to always use the actual version so as to avoid the risk of it becoming obsolete before your project is released into production. When a new version appears, you should consider the possibility of transferring the project to this version – because, if you skip several versions, then there’ll be problems with making a sharp update.
For simple sites, out-of-the-box solutions are often best suited.
Complex projects are made on frameworks or written in HLL programming languages.
Based on a concrete set of requirements and the existing software/hardware, the architecture and languages are chosen individually for each project. When choosing a platform, you should always seek to stay objective.
This is extremely difficult to do if you’re not an IT expert. The choice of technology and project architecture depends on the long list of functional and non-functional demands. It is the software architect who must plan out the technology stack.