Software development is a form of creativity.
I’m covering two subjects here
- easiness and
When you are creating something, easiness is important
There is a certain threshold of work that takes an activity from supporting creativity to blocking it. This is different for every person. Those people who are highly natively creative may have a lower native threshold for work. On the other hand those who are creative have an incentive to learn how to do work in order to remain creative so their threshold will increase through learning. Still, make things to hard, and creativity goes away.
This is why easiness of software development and software development creativity go hand in hand.
The importance of easiness in building This Stack
To build the entire stack, each level needs to be quick and easy. Too much digging into the details diverts you from getting an entire application stack done and drags you off on a tangent. This is not to say that the details are not critical, in fact careful attention to detail can prevent you from debugging which is a detour/diversion
Details vs Creativity
When I’m talking about getting diverted into details here are the most common examples:
- too fine a specification on UI is an example
- troubleshooting and debugging get in the way of the creativity and the easiness
- poorly designed/implemented/expressed systems tend to take very long to build and require lots of unnecessary detail work
- too many technologies per layer
Trillions of bits have been written on how to build software easily and well.
layers and levels are different.
Creativity is a measure, not an either or
Creativity is an analog measure rather than a binary condition. What I mean by this is that there are various levels of creativity. This can best be described by an example.
If I were to create a novel, the lowest level of creativity might be
words. I can create words all day long by typing them. They might just end up being word salad, but they still get created as I type them. Perhaps a little higher level of creativity might be sentences. Putting the words together into coherent sentences – descriptions, dialog etc. is a higher level of creativity. As I type them they get created. They might not create a coherent story together, but they are still created. A higher level of creativity would perhaps be a story. By putting sentences together that cohere into a story, I create a story. The story would have plot and tone, and theme, and characters etc. This is a higher level of creativity. The story might however be very hackneyed and derivative and boring. An even higher level of creativity would be to create a story that moves people and teaches people, puts sentences together with clever sentence forms and that most of all is a story that has pretty much never been told before. This is a very high level of creativity. The bottom line is this – that creativity exists at various levels, and this is true also in software development.
Creativity in Software Development
You create when you write a line of code. You create when you write a program similar to many that have been written. You create when you write a program that has an excellent architecture and that has been written before. The goal of ‘this stack’ is to be able to write programs that have never been written before, with an excellent architecture that allows more things to be built on top of them, and can be built out by multiple people and companies until they reach the level of understandable and computationally creative artificial intelligence that is not evil and that can work effectively with humans.