In the first Late Night Code Club email, I talked about "code as a creative practice." I don't fully understand what I mean by that! That's one reason I wanted to write this newsletter. To figure out what it means to approach programming as a creative practice.
So often when we talk about programming we focus on technical skills. That stuff is fun to learn—if it wasn't programming wouldn't be interesting in the first place. But eventually technical questions fade and we're left with harder to answer questions. What should I create? How should I do it? How do I come up with an idea or explore a problem when I'm stuck and the answer isn't that I forgot a bracket?
Technical skills and knowledge can't answer these questions. To work toward an answer requires creative meta skills. These skills aren't unique to computer programming. They can apply to anything from writing software to writing a novel or making dinner.
These skills include...
- Cultivating curiosity
- Taking breaks
- Switching between big picture thinking and small details thinking at the right time
- Being comfortable with experimenting
- Generating lots of ideas (more than you feel comfortable generating)
- Cutting out/saying no to ideas that aren't a good fit
- Building logical structure and expressing intuitive style
- Cultivating beginner's mind
- Paying close attention
- Going slowly and carefully
- Going fast and roughly
- Being disciplined and making things right when you know they're wrong
- Letting go of the inner critic and inner dialog
- Being patient
For every creative skill there is an opposite skill that is equally important to master. It's necessary to be able to come up with lots of ideas, no matter how silly or unrealistic they are. It's also necessary to be able to drop ideas that aren't a good fit. It's also necessary to not do those two things at the same time if you want to avoid frustration.
Approaching programming as a creative practice emphasizes benefits beyond the possibility for a valuable career. As we look to work more and more for meaning, it's helpful to remember that programming is valuable even when it's not done solely for work. An artist keeps a creative practice to create meaningful, useful, valuable, and beautiful things, and also to grow, learn, explore, and connect with themselves and their community. Keeping a creative practice is about the work produced but it's really about practicing how to live. The studio is the workshop where we can discover insights and truths and put them into a shareable form. That might be a novel or a painting, but it can also be a website or software.
A creative practice requires tending. The work is never done. It continues as a discipline of experimenting, improving, and exploring. The rewards are infinite because the ultimate goal isn't to finish this specific piece or that one, it's to keep learning and to share what you learn.
A creative practice deepens your mastery of a craft, but it also deepens your skillful navigation of life's path. The creative skills you learn in a practice can be applied to everything you do, from talking with a friend to growing a family. This perspective reveals the siren song of constant productivity as a trap. Taking breaks, having or not having kids, taking time to play a video game or watch a silly movie aren't seen through the lens of potential distraction from work, they're seen in the wholeness of the creative practice. Both support the other.
Whether you are working full time as a software engineer or a hobbyist developer exploring code, code as a creative practice has the same value: self expression and exploration and connection to the things that matter most to you. Programming is not easy to learn. It can be a frustrating process. But approaching it with curiosity and a wider sense of its value as a creative practice can make the journey smoother.