Developers can do more than just typing code
A good programmer is an artist. Making sense of an difficult idea and actually implement it in a way which makes customers happy is an art. A good developer will find solutions and make things possible on a smart and efficient way. Typing code is just one of the things a developer has to do, and it is the boring part.
Unleash the creativity
Creativity is an important part of making a good application or website. There are some challenges and there are literally thousands of ways to deal with them. Often someone has to think outside of the box and that is alright. Most developers actually became a developer just to deal with those challenges! It is like a complicated puzzle and you can actually feel proud solving it and often together with other developers.
Layers, Layers, Layers
Nowadays a lot of software development is done in a very guideline-followed style. People make abstractions of everything, adding more and more layers to any application. Maybe throw in some dependency injection and other fancy stuff which suddenly seems to be a requirement for everything. This style is forcing developers to think in a very similar and limited style. Every feature you add is like walking the same road. Surely it looks nice on the progress charts but there is no room for creativity at all. Often new technologies are introduced to the system to keep things interesting, even while some “old methods” would’ve been even better.
It can make a big difference
Most applications can be ‘dumbed down’ to a level where creativity during developing isn’t needed. Code will be made. Resources will be thrown and in the end an application will work. But the code will probably not be very efficient. There are no smart tricks being done and people will just hope the used libraries and framework is efficient enough to deal with the difficult problems. Also the application will do just what the requirements were and nothing more. Boxes are ticked, money is earned. Done.
Give some freedom to the developer, let them get a feel for the application and what people want to do with it. They’ll get motivated and enjoy working on it, and they actually want it to turn into a good application. Let them see how the customer is responding to it. The application will turn out better, faster and actually something which will make a customer happy.
Of course there are many reasons people started programming like we do now. Just letting everyone do whatever will sometimes result in messy code which are difficult to integrate together. Also progress is harder to track as a creative moment isn’t always guaranteed and sometimes ideas just don’t work out for various reasons. Let developers work together on things and make clear requirements about what the application should do for a customer and also what future plans are with said application. Also make sure developers get enough time to really focus on this application, including some time to refactor their code.