Is software development related to corporate culture? Absolutely. Software development is a creative team process. The corporate culture of many large organizations, especially in industry, is highly hierarchical and bureaucratic due to industry standards and security concerns. The IT department within an organization follows the communication standards of that company. And as long as we’re talking about user support, it works effectively.
On the other hand, to build effective software development processes, a rigid structure is unacceptable, and it is bound to affect the result. Today more and more professional developers tend to build their work with the SCRUM methodology, where the software development partner is a self-organizing and self-managing organism.
This allows eliminating the disadvantages of the traditional approach: from requirements to terms of reference and then to development, which for large systems takes years. So, in SCRUM the contribution of individual members of the project team is not evaluated, as it negatively affects the self-organization of the team, and the responsibility for the success of the project lies on all at once.
It is difficult to imagine SCRUM within a rigid vertical structure. Even if we talk about the traditional waterfall approach, it involves a certain degree of creativity and the mandatory creation of project teams with a certain degree of freedom. If we are talking about creating new software, then building such a project team into the existing hierarchy is usually unwise.
There must also be a certain level of trust in the team executing the project – their own or an external one. An in-house IT department may be constrained by the usual way of working, while an external company is more likely to suggest a new method or algorithm of work. To accept these unfamiliar postulates, you have to trust a consultant or a developer.
The conclusion is that for an effective project, the organization must, in theory, get rid of the rigid vertical of power? It is not. There must be a described process, and the company must adhere to it, otherwise, no IT solution will help it. But there is a hidden risk here as well, which the organization management is often unaware of. As you know, “you can’t automate a mess.
In practice, in-house development often leads to the automation of inefficient processes, because it does not reconstruct the processes, but simply automates what is there. The in-house developer is inside the process and cannot assess its quality from the outside.
In addition, when developing a software product, requirements can be formed at different levels and do not always correspond to each other. For example, a business owner wants to use the system for audit and control of the company, according to his requirements the data input into the system must have a rigid classification.
The teller, on the other hand, is more comfortable with free-form data entry. The teller is much closer to the IT department and will spend a lot of effort to convince the developers of the urgency of this approach. The question is, what will the owner get in the end?
On the other hand, the involvement of an outsourcing company is a significant cost, visible and fully realized by the management, which leads to a more responsible attitude towards the project. This fact entails the participation of first-tier managers in negotiations and requirements development, with the hope for a deeper comprehension of the problems and requirements.
When outsourcing a project, the developer and the customer must describe the business process in detail, and draw up a contract and a service level agreement (SLA). As a result, the customer begins to better understand and regulate their processes, duplicate functions are eliminated, and order is restored.