Software Development, what you should be aware of
In my career as an IT consultant, with increasing frequency, clients come to the company with software development projects that started with the premise of that development is easy and cheap and their history ended, or rather, did not end as expected. From web page development, web development and web development with mobile applications to their respective APIs (software to send and receive data between both platforms)
Among the most common problems we have:
- Contracts (sometimes non-existent)
- Unclear project scopes
- Inappropriate technologies used (development language, databases, frameworks (tools that facilitate the development of programming code with good practices) little known or limited.
- Definition of the devices where the tool will work, hosting platforms.
- Code hijacking
- Etc.
Luckily, for almost any idea that occurs to us as entrepreneurs, and in this increasingly digital world, there is probably already a tool that can solve our needs and those of our businesses in a certain percentage. However, if the tool is part of the business strategy and represents a competitive advantage, it will be better to have it, tailored developed (either at home or with an external company).
What is better, or what should I consider to make my decision? It is a delicate process that I will cover in detail in a later post.
If we choose to develop our software, it is not enough to have one programmer for the particular project. The number of specialties and certifications that exist for each of the elements that can be part of software development have grown significantly in the last 3 years. The competition to develop better tools to facilitate development, and their specialization have been a fundamental part of this growth.
We must be very clear about what we are looking to solve and specifically what we need from the solution (application). The clearer and more detailed the better, even if it is an already established process in our company and perhaps only needs to be automated (Digital Transformation).
We must never just leave it up to the word: contracts, their scope, deliverables and penalties these are essential to protect our investment. When my clients have asked me for help in order to maintain the progress made by “their programmer friend or Company”, and be able to demand the compliance with the contracts and / or, if applicable, file a lawsuit, I have found cases even with the null existence of it.
In addition to this, it is necessary to take into account: the software components, the development methodology, the internal staff that will be constantly evaluating the progress and deliverables, the change controls (so that it does not become an endless project), among others.
An important part is also knowing the experience of the company that is going to provide the service, the success stories it has, the type of clients it serves and if it knows or has the skills to understand a certain type of industry.
Figure 1 shows the main components of software development and some of the tool options, excluding the infrastructure part.
Figure 1. Software Development Components
Note: Software development necessarily requires an operating system to govern it, and without it won’t work. Any selection of the tools contained in the diagram must consider the operating system on which the solution will operate. Now, within a software development team, without going into much detail, I mention the specialties of those who participate to a greater or lesser extent in a project classified as medium to large.
The solutions architect
He is the one who defines based on the size of the project which technologies from the previous diagram will be used for a project.
The Database Specialist
He is responsible for ensuring that the data is kept consistent, secure, available, organized; that there is planning of storage capacity among others.
Developer Back
It is the one that is in charge of developing the development logic and gives power and meaning to everything that is presented as a result in an application, including the development of the APIs.
Developer Front
He is the one who develops the designs, and presentation of the applications, as well as how the site / development will look in general.
The Full Stack Developer
It is the one who can develop both simple and complex projects, involving both skills (front / back).
The UX specialist
He is a specialist who works so that the interaction between people and products is optimal; is in permanent contact with the front developer to ensure that the project needs are met.
The Project Manager
He is responsible for managing the project for the client, interacting with those responsible within the company, ensuring times, budgets, delegating responsibilities and resolving conflicts that could affect the expected result.
In summary, the next time someone tells you: “Software Development is easy” think about the quality of what you are looking for and what role this solution plays in your business strategy.
At STI we design and manage your technology projects, as well as your digital transformation strategy.