Before starting any project, one of the preparatory stages for its implementation (i.e. starting to work on it), is the choice of technology that you want to use to implement your idea. I believe that this is one of the key decisions and one of the most difficult things that stand before you at this stage. Of course, the choice of name, the appearance of the logotype or domain name is also important, but these are elements that are quite easy to change. Transferring an existing (or already ongoing) project to the new technology can mean much higher costs for you and take much more time. If you want to protect yourself from such a situation, I invite you to read the article below.
No, you don't know the technology
Often in our industry (IT), you can hear that in one year a revolution in this industry is possible. Emergence of a new programming language or a tool is enough to make everything take a different course. Even people who have been in IT for many years are not able to keep up with all changes, it is simply impossible. However, if you still think that you have such knowledge and still maintain that you are able to determine the technology in which your project will be created, then learn only one of many facts that will show you what you are facing.
Currently, to work on a project as a programmer (I mean web technologies), you need to know many technologies and tools. For example, a back-end developer. If you don't know who such a developer is, I will use a simple analogy. After unscrewing the watch case, you see a lot of turbines, wheels and other elements. Back-end developer analyzes how this mechanism should work, plans its construction and then creates it from many parts and makes it work. However, the rest of the watch, i.e. the case, its assembly, connecting the clock's indicator to the mechanism is the role of the front-end developer.
The back-end developer knows / or can at least:
- One programming language
- Work with a relational database and is capable of creating a scheme of relationships between data
- At least one framework
- Write tests
- Is able to read technical documentation
- Know the issues related to API architecture
- Have knowledge of the configuration of the application's working environment
- Know the design patterns
At each of these points, you can specify the time that a person needs to master it at least on a good level. In total, we will receive several years of continuous sitting in code. And now consider that to select technology for your project, you need someone with much greater knowledge based on the practice and experience in working with the client, (not only studying books and browsing Google). Also note that I'm not mentioning other team members like Project Manager, DevOps, or Front-end developer.Do you still think, you have a sufficient knowledge, you or the company you asked for help?
Trust dependable companies
For many years I have had contact with clients who in an offer inquiry, have indicated the technology in which they would like their project to be implemented. Actually, this still keeps on happening and I don’t necessarily consider it as a bad practice. Of course, it would be nice if this choice was made by an experienced person. But this is usually not the case, unfortunately.
It is very puzzling that for projects with very large budgets, companies that write specifications for the customer (for example, EU projects) do not have sufficient technical knowledge. So, it happened to me more than once to patch such holes of ignorance and to make the client aware that something needs to be done differently, using different technology, because the current one does not allow what is described in the documentation. It is worth mentioning that the client has already received consent to implement the project, a lot of money for its implementation, but on condition that the records are kept. Fortunately, in that case, I was able to find a solution, although it cost the client himself a lot of unnecessary stress.
Therefore, when choosing a technology for a project, it is even worth consulting with a company that:
- Has many years of experience in the market (min. 5 years)
- Has implemented medium and large projects in various technologies
- Worked for local and foreign companies
- Creates individual solutions for customer under his needs, (not only use ready-made solutions).
Respect your time and money
For each of us time and money are (a measurable) criteria, which are the most important in running our business. Especially if you want to invest your time and money in a project that will change your business or your life.
Unfortunately, you often don't realize that by spending money on consulting for your project you save much more. You save on the fact that you avoid mistakes from wrong decisions, which sooner or later will appear, and for which you will pay at a later time. When I write about the later time, I mean the period even after the implementation of the project. Imagine this situation: project was created for you, and a technology used for it, after a year of operation turned out to be insufficient for your needs. It is difficult to scale which may leave you behind the competition. This can lead to you putting a lot of your time and money back in order to improve the influencing elements and even to create from scratch.
I often listen to speakers at conferences who try to convince us that a given approach is the only one possible and will solve all of our problems. In fact, this is never the case, because there are no solutions without flaws. An example is building applications based on microservices. Currently, there is a trend of this architecture and many customers immediately reporting the requirements for their project, want it to be based on this approach and preferably yet be in the cloud (for example in AWS). When I ask why, the argument is that everyone is doing it now. Such people have no knowledge of whether and when it is worth using this approach. And yet there may be a simpler and cheaper solution, that can be adjusted as needed to give us what distributed architectures gives us. After all, not every project has to be built from the beginning, just like architecture, which is being worked on, for example, by teams at Amazon.
An even more interesting phenomenon is the choice of the programming language. Often, customers want to create their project in a given programming language, because it is used, for example ... by Google. Unfortunately, they are not aware that Google and other tycoons use many programming languages and choose it for their needs. Currently, Python is at the top of programming languages, but is it the best language for web solutions? In my opinion, not in every aspect. In many cases several other languages could be indicated. The choice of technology follows the needs of business, not trends, or the popularity of a given technology.
Technologies affect the cost of the project
It is also worth to make you realize that by choosing technology for your project, you decide on its budget. Perhaps my opinion is hardly understandable to you, so I will describe by example what I mean in this thread.
Suppose you want to implement an internal document management system for your company of 1,000 employees. As a company from the financial industry, you meet people who already have such a project in the industry. Most often you hear that the system was created based on Java or .NET. Because such technologies are mainly chosen by companies in this industry. And everything is fine because they are the technology used by banks, insurance companies. In this case, are you able to determine why these technologies were chosen? Can you create your solution in a different technology, much cheaper, maintaining the same standards and meeting your requirements? Personally, I think that the answers to these questions require a lot of knowledge and experience, and here I suggest you consider asking an expert.
Therefore, if you take into account the company's budget for the implementation of the project and the costs of maintaining the project after its implementation, it is worth consulting it with an expert. The choice of technology also involves the selection of specialists for its implementation and subsequent maintenance. For example, a Java specialist at the same level as a PHP specialist earns even twice as much, which for you may mean at least twice the cost of the project.
Before answering, if it worth is considering consulting an external company and spending money on it, answer the question, “are you competent to make a decision like choosing the technology for your or your company's project yourself”? If you have any concerns, please contact competent persons for help. Even if this person finds that they are unable to help you (because they may be in another plot in IT), they may know someone worth recommending. Do not make decisions based on article_versions on the Internet, friends' opinions or your general insights, always focus on experience and knowledge based on practice.
So what exactly can technical consulting give you? From my perspective and the consultations made so far, I would distinguish the following elements:
- Analyzing your needs and proposing the optimal combination of technologies (programming languages, frameworks, tools, databases, cloud solutions, external APIs)
- Determination of possible IT architectures (server selection, estimation of possible loads and costs)
- Identifying threats and problems that may arise in the future
- Technology workshops that we propose for your project
- Greater security of your investment
If you are looking for help and a partner with whom you would like to consult your needs with experienced people