A roundup on the old struggle between too simple and too complicated development strategies: On the one side there are the quick fixes on the other the overly perfect designs. Obviously, these extremes are rarely reality but a constant threat to every project. Keeping the design simplistic means risking extensibility and maintainability. Even though it’s easy now, no one will remember the ad-hoc decisions made during coding. The opposite extreme is over-engineering, the fiddling with the design to make it even more pluggable or extensible or use the newest patterns. Especially seasoned developers are prone to this behavior. To counteract these extremes and in particular the second there is the “Make it Work First!" motto. It helps to get a first look and feel of the program while requiring to keep an eye on the ease of refactoring since the first version will have to be modified almost surely.