Creativity in Software Engineering
Somebody may say that software engineering is a very standardized and boring process. Although there is a grain of truth in this opinion, it is not precisely correct. There are many areas in software engineering where creativity is obligatory, and this article explains that.
Creative Organization
It may sound unusual, but the organization of the software development process is not that trivial and very often requires creativity. Imagine the situation when there are three separate teams — one from Europe, one from Asia and one from North America — and you need to organize their work despite the time difference, qualification gaps, and many cultural differences. It may not sound like a big deal, but after the first missed milestone, you may change your opinion.
Recruitment is one of the crucial phases of the project, and it has to be done correctly. Without a good team, the software project can finish only with failure. Creative persons are required to build such a team. The HR department has to take care of the team members' compatibility, predict future issues, and prevent them from the earliest stages.
Another aspect of the creative organization is in non-work activities. Every team member wants to rest after the hard work, and this is the place when creativity is needed. After-work parties, team travels, common hobby meetups — these are just a few activities needed to maintain a strong team.
Creative Management
Project management usually requires a bit of creativity too. No matter if this is a small project for 3 months or a big project for 10 years — it is always interaction with a customer. The human factor is one of the most common sources of issues, and the project manager should be creative in dealing with them.
On the one side, the customer is always changing the requirements, especially in the case of Agile methodology. Need to understand not what the customer says, but what customer wants — and this is not a trivial task. When the customer changes the requirements, the team needs to find a simple solution that matches the needs without blowing the budget. And sometimes, the project manager has to persuade a customer to follow the different approaches and use other features if they are better for him from a long-term perspective.
On the other side, the project manager has to manage (or at least communicate) with a technical team. A requirement explanation is a significant issue here. The biggest concern is to make sure that developers implement what the customer wants. There is a common situation when the customer means one thing, the project manager understands it a little differently, and the developer implemented it in an entirely different way. To make sure that all sides have the same expectations project manager has to have excellent management skills and use his creativity to explain the situation to all sides.
Creative Development
Software development has a lot of standard solutions — design patterns, software frameworks, common coding conventions, and others. However, it requires much creativity to combine these things to get a usable and efficient software.
The very first creative thing is software architecture. In lots of cases, it is not enough to use the standard approaches — the architect has to invent something new to meet the requirements. No matter if these are technical or business challenges — a certain level of creativity is a must here.
Then actual software developers have to have quite a flexible mind to understand and implement what customer wants. It often requires the ability to think outside the box to make things work properly without spending too much time. Sometimes developers have to use things in a way they are not intended to be used to achieve the best results. The same practices applied to code review and testing — without these stages, it is impossible to make reliable software.
Finally, there is an infrastructure question. Hardware organization is not trivial on a big projects and requires much lateral thinking. Infrastructure limitations, conflicting requirements, and multiple business needs — combining and implementing these things together lead either to success or a psychiatric hospital.
Creative Sales
Finally, when the software is ready, it is time to sell it. Need not only to find a customer and persuade him to buy your software. The sales manager also has to sell it for the right price. This task requires excellent knowledge of customer needs, software, and human psychology. The sales manager has to be creative to use all of these things to strike a deal.
After the customer bought the software, he needs after-sales support — training, consulting, technical support. Each of these activities may involve project managers, developers, other sales managers, and other related people. The sales manager (or account manager) has to help the customer to start the usage of the software, and make sure that he can achieve his goals. This person has to be creative to find the best solution and organize the work of all involved people.
Now we can see that the software engineering process is not that boring and not that trivial as it looks like from the first glance. Creativity is a must at almost all stages to achieve the best results in a limited amount of time. So, the next time somebody tells you about the lack of creativity in software engineering — you know what to answer!