If you you ask the experts how to write 'good' software, they will likely emphasize precision and predictability. They may recommend great tools like functional programming, immutability, testing, and type systems - all of which aim to make software more reliable. But software must interact with the real world to be useful, and the real world always presents scenarios software does not account for. You can't write good software by trying to architect unpredictability out of your program. To write good working software, you must build systems that work well even though they are unpredictable and incomplete. Your code has to describe and solve a real world problem without accounting for all details of the problem. Good software tells a narrative, but like all narratives leaves things out. Maybe good programmers are really just good story tellers.
Story telling is a process that we do all the time, including with our personal histories. Story telling both approximates the truth and influences our reality - the stories we tell affect how we remember the past and behave in the future. This has interesting implications for writing software - the systems we design affect and change the nature of the real problems they're designed to address. And the story we tell in code is directed as much to other programmers as it is to the machine the code runs on. Recognizing the messy, very human nature of writing software teaches us to trust our intuition, and makes us better programmers.
Hannah Howard @techgirlwonder
Hannah Howard is a senior developer and tech generalist with over 15 years experience in programming and other technical fields. Prior to programming, Hannah worked for 10 years in the non-profit sector in Los Angeles, specializing in LGBT advocacy and community organizing. Hannah returned to coding in 2012, and brings her passion and experience from community organizing to helping new programmers get up to speed on technical topics.