I am a computer science professor. I am also a crafter. Turns out the two go together much better than expected.
Getting to where I am now hasn’t been easy, and computer science was not an obvious career choice for me. I was always fascinated by drawing, painting, jewelry-making, music, and really any creative endeavor. But every attempt I made to create art always left me feeling frustrated with the results. I produced clumsy work that never looked or sounded like I thought it should in my head. And so I decided, as many do, that art is something that some people have a natural gift for and some don’t. I didn’t think I was good at being a creative person, and slowly I stopped participating in the arts.
I became interested in computer science at an age where many young women turn away from the sciences. At the time, I found math comforting because there was always a “right” answer (and it could even be checked in the back of the book). In my earliest programming class, I felt a sense of satisfaction. Writing simple programs came easily to me.
It seemed like a natural step to move on to study computer science in college. But when I showed up, I was suddenly being asked to make more sophisticated programs, and I felt completely lost. More and more advanced concepts piled up on top of me, my grades slipped, and I thought about giving up on computing, too, just as I had on art. I wondered if computer science was also something you have to be naturally gifted at. At the time I didn’t draw a parallel between my struggles with art and with CS, because art and science seemed like opposites. I had a lot of encouragement from friends and family, so I stuck with it, struggling through my classes, too stubborn to quit and too proud to be seen as the girl who couldn’t figure out how to program.
In my third year, I took a course in computer graphics, an application area that fascinated me. Everything I had learned in the previous two years started to make more sense, now that I had some practice and was learning it in context. I found it thrilling to be able to make programs that produced pretty pictures, and began to see a way to make art as a computer scientist. That class was a turning point for me in another important way as well: I finally realized that there are many different ways to approach a programming problem. I learned that programming is more about understanding tradeoffs and using the tools given to you efficiently than about finding the correct answer and checking it against the answers in the back of the book.
I began to see programming as a way to be creative, and each programming language and tool the equivalent of a paintbrush or clay.
I don’t think we are honest enough with ourselves or each other about the challenges that come with programming. We are easily fooled into thinking that what we know how to do is easy (after all, if I could learn how to do it, anyone could!). We forget how long it took us to learn it and the small experiences we’ve had that contribute to who we are. We naturally want to hide our weaknesses, and for the many of us who experience imposter syndrome (including me), it is terrifying to reveal to others that we find something difficult.
I meet too many people in our field who think, just like I used to, that failing to immediately pick up a skill means that they never will. It took me years to feel at all confident with programming, in large part for the same reason that I turned away from art as a child: the vision I had in my head of what my program would do and how exactly it could be constructed never matched what I could produce. Others in my class (many of whom, I realize now, had been programming for far longer than I) seemed to be naturally talented at it.
But just as we don’t expect an inexperienced art student to pick up a paintbrush and produce a Monet, it is just as unreasonable to expect an introductory computer science student to instantly produce elegant or even fully functional code. Code to produce a polished program doesn’t naturally and instantly flow through our fingers into the computer, and while some may take to it faster than others, it takes time, patience, and practice to learn the tools of our craft. The first thing we create is rarely the perfect solution to the problem we are trying to solve. Learning to program taught me that the vision in my head is just a starting point, that sometimes I am led in a different direction than my initial vision, and that nobody starts out being able to produce perfect work.
I’ve also learned that the hobbies and interests we have outside of computing are incredibly valuable. Computer scientists don’t operate in a vacuum; we make software for people from diverse backgrounds, need to work with domain experts from many disciplines, and design software and algorithms that can lead to large-scale societal consequences. It took me a long time to gain the confidence that it was okay for me to be a computer scientist but not constantly be ensconced in computer geek culture or be thrilled by late night debates about which text editor, programming language, or algorithm is the best.
My first class in computer graphics began my real passion for computer science, and rekindled my interests in other creative fields. That passion led me to graduate school, where I ended up studying artificial intelligence and how it intersects with the design process. I am fascinated by how people are creative in a variety of domains, how to imbue that creativity in computers, and how computers can assist and influence the human creative process. Forcing myself to step away from the computer and pursue other hobbies has also led to me co-founding a company devoted to building design tools for the crafting community, which has been largely under-served by existing technology.
How can your outside interests influence your career in computing?