Curiosity drives discovery, and discovery drives innovation. It can arise in many ways during the course of software development. It’s a great way to develop more depth of knowledge: wondering how something works, how to make something work. It’s how we learn more about our craft.

Curiosity can also improve quality and find bugs. The curious programmer will notice a cryptic error message in some log file, and ask “What does that mean? Why did that happen?”. Exploring these kinds of questions can often lead to fixes for obscure or unexpected problems or ways to improve the features of a system. And in addition to locating where bugs are occurring, exception stack traces in languages such as Java, Javascript, Python, Ruby often give insights into what is going on inside the language and its libraries.

In this blog I want to share my love of curiosity, the joy of discovering new things and new ways of doing things. I’ll share with you ideas and techniques for discovering things about software, for peering under the hood and understanding how all things software work, what features the software has and what can be done with them.