It’s interesting how one of the first things we learn as software developers is to design. I remember how in my first job they always told me to first design my solution in a whiteboard, rethink it in my notebook and lastly code it. Design was the cornerstone to any solution we had to implement.

The problem arose when we started taking too much time to think about the problems, when over-engineered applications came up and when small requests ended up with huge solutions. But it was ok, the application covered required and un-required scenarios. What could the problem be?

Today, as I was reading Extreme Programming explained by Kent Beck, all these experiences came to my mind. In his book, Ken elaborates over many basic principles and values, but the most latent to me where “simplicity” and “courage”. It takes a great deal of courage to digest that previous efforts are not worth working on, that they must be deleted and started from scratch, but it takes a lot more courage to set aside your genuine ideas to leave space for simplicity. To embrace simplicity, to work in small incremental steps and not over-design, it’s something we forget so lightly.

So, at the end of the day, as I was finishing the first section of the book, I could not but summarise all my experiences and contrast them with Kent’s approach. And all I can say is… simplicity and courage paired with honest communication are for sure a good bet.