I recently began taking a pottery class at a local studio. Pottery and ceramics have a lot to teach, and I’ve moved through the typical stages of learning a new skill: feeling overwhelmed and panicky at first, then taking things day by day, and slowly building confidence in my ability to complete projects. Learning such a complex skill has been a great way to strengthen my abilities in other areas, especially programming. I feel that several lessons I’ve learned in pottery apply directly to becoming a better programmer.
Know your process.
The pottery process often looks like this:
- Conceptualize -> Make your Piece -> Kiln Fire It -> Glaze your Piece -> Fire It -> Done!
Likewise, tackling a programming problem can be simplified to:
- Conceptualize -> Code your Solution -> Get Peer Review -> Submit/Merge
In each step of both processes, a broad set of skills and knowledge help carry the work through. In pottery, for example, during the “make a piece” phase, clay exists in several stages: fresh clay in the plastic stage, slightly tougher “leather-hard” clay, and greenware, which is dried but not yet fired. If you need to carve your piece, it’s best to wait until it’s leather-hard to get the best results. The stages are also time-sensitive. You are working against the rate of water evaporation as you create your piece.
Becoming a better programmer is similar. “Coding your solution” requires knowledge of the existing architecture, best practices, and previous peer feedback. It also takes a deep understanding of how you and your team prefer to approach a particular task. Paying attention to peer feedback can improve your work’s quality and reduce friction in the review stage, as an example. You also have to recognize the role of time in your work, and how much time should be spent on each part to move work forward efficiently and effectively.
Mistakes are guaranteed.
Despite significant advances in pottery to reduce defects — such as consistent clay quality, improved techniques, and better tools — mistakes still happen frequently. These can range from minor issues, like an unevenly dried piece, to major disasters, like an explosion in the kiln due to trapped air that damages surrounding pieces. The same is true in software development. Countless tools, frameworks, testing methods, and AI assistants exist to help us avoid mistakes, but they still happen. What’s more important than preventing every mistake is learning how to handle them. You can use the remnants to create something new, make repairs, or decide to move on. Accepting your mistakes and responding constructively is a valuable part of the creative process.
It’s not about you.
One of my favorite art philosophies is that art is never about the physical, tangible object, but rather the experience between the artwork and the viewer. In this sense, the art doesn’t belong to the creator but to the user or observer. This is especially true for pottery; its utility or beauty depends on the user’s interaction with it. It’s not about what I think people should use my pieces for, but about how my family, friends, and future users will interact with them.
In software, we rarely create products for ourselves as end users. Our work is about the experience of the end user, not about us. It’s essential to stay focused on this, taking critique not as a reflection of our worth, but as feedback from the people who actually use what we create.
You don’t exist in a vacuum.
Many pottery mistakes are due to forces outside your control. Maybe someone else’s piece explodes in the kiln and damages yours, or someone in the shared studio trips and bumps into the drying shelf. Additionally, what you choose to create is hard to fully divorce from the needs and preferences of real people, especially if you intend to sell them.
Programming is similar. A colleague’s work might overlap with yours, causing unexpected issues, or changing business requirements could alter priorities. It’s important to recognize that some things are outside our control but still impact us because we don’t exist in a vacuum.
You can always find help.
As I mentioned, certain steps of pottery are time-sensitive, which means it’s critical to ask for help when you need it.
Pottery and programming are both fields with rich histories. While one is far more ancient, one thing remains the same: the knowledge is out there, and all you need to do to get help is ask. Don’t waste time trying to go it alone. Lean on your community, whether it’s your team or an online network, and ask the questions you need to.
Pottery and Becoming a Better Programmer
Pottery for me has served as a meditative practice and helped me understand how to be patient with myself, my work, and with others. I hope these takeaways can benefit you as well.