When you are like me and love practising your art as a developer then it hurts to build something only to throw it away later on. Many books, articles and opinions centre around the notion of good code; in this post, I want to make a case that you, initially, should not focus too much on this.
Instead of describing what good code is; let’s talk about delivering good software. In short, good software gives value to the life of the user. It should empower them to accomplish more than they could without your software.
The biggest problem is that trying to predict what that value is, is rather complicated and messy. Even with the best user research, you might still miss the mark. And even if you could hit it perfectly, is it really valuable for a user to wait until the new feature (or change) is perfect, or is temporary imperfection good enough initially?
To me, the key lies in feedback and delivering sooner rather than later. And interestingly enough you do a similar thing when drawing a painting. In art, you generically distinguish between three phases when creating. These are: shape, form and detail.
In short, shape means that you draw an outline using basic 2d shapes like lines, circles and rectangles. Form means that you add depth and .. well form .. to the work of art. Once at this stage, your work is coming more and more to life and you actually cover 80% of your intended effect in about 20% of the time it would take you to finish the complete piece.
Then, in the end, you apply the detail. This is the painstaking work of making it putting on the finishing touches and is where 80% of the time goes to do the last 20% of the work.
What I think is important to see, is that during the phase of determining the shape and form you erase bits, re-add them, re-imagine them, re-arrange them and do everything needed to get the the basis of your creation. Once you are done with the groundwork, you use this foundation you made and redraw over the previous bits a new and far more detailed drawing.
Now, apply this principle to how you do software: if you were to do quick sketches of your basic form and shape of the feature that you are working on and release those regularly to your audience. Imagine how much you can contribute already without having that perfect final product.
And better yet, while working on it you would get continuous feedback while only having invested 20% of the time. What if the customer didn’t like it after seeing the first work; what if customers react negatively to the change before you have perfected it? That could save you 80% of your time and spend that on something else that adds value.
Next time you work on that next big story; challenge yourself to just do the shape and form of it and then show it. Let people experience it and determine if it is worth it to invest further time. You might be surprised by what you find, perhaps you can even scrap details that you thought were necessary.