”When you begin a picture, you often make some pretty discoveries. You must be on guard against these. Destroy the thing, do it over several times. In each destroying of a beautiful discovery the artist does not really suppress it, but rather transforms it, condenses it, makes it more substantial.” – Pablo Picasso
Code that ends up not being used. Design sketches that get tossed. These are not evil things. These are not wasted work. Throwing out work is part of the work. Don’t be afraid to do it. Iterative development is a process of letting go. And letting go can be hard to do.
For some reason this is especially true in the software development community, and frustratingly so. Other industries go through cycles of sketch, storyboard, discuss, throw out, and start over as a regular order of business. Most notable are the creative practices of animated movies, marketing campaigns, writers (novelist, screenwriters, playwrites, copywriters) and many other “creative” types of work.
Yet software developers are reluctant to throw stuff out. Maybe its because we think software development is more science than art and think there is a “textbook” right answer to follow (hint: this thought is wrong for many reasons). Maybe its because we think of software as more of a “thing” than we do of concept sketches or story outlines (also wrong). Maybe its because you are getting paid by the hour and are thinking in terms of deliverables to the client from those hours worked. Maybe its because software projects are on unreasonable time schedules, leading software teams to claim there they have “no time” to “destroy…transform…condense”.
I’ll say it again: Don’t be afraid to throw stuff out. You’ll find it refreshing to iterate back to a clean slate, each time more informed than the last.