Every Computer Scientist Should Have A Creative Hobby
Preface: This fall I did a part time internship at a creative agency called Chil Creative. I decided to take this internship because the agency is run by one of my favorite Atlanta based photographers and thought it would help me improve how I take and edit photos; but while I was there I learned a lot more than that. At Chil, I applied creativity to things such as website user experience, videography, and corporate branding. It was an eye opening experience and has made me a more open and better computer scientist.
Despite what people think, computer science is more than copying and pasting from Stack Overflow. Computer science is a hybrid form of art. Much like any form of art, computer science is about taking the things you learn in class or read online and using them as inspiration to come up with unique solutions for unique problems. The best programmers are both logical and creative. They use their creativity to contemplate different ideas, but rely on their intuition and logic to turn those ideas into well designed and implemented code. Therefore, your ability to code is limited by your creativity.
Creativity = Exposure + Decisions
We can break down creativity into two broad components: exposure and decisions. Exposure is the summation of every experience you’ve had: everything you’ve seen, everything you’ve heard, everything you’ve done. Decisions are choices you’ve made based on these experiences. Having a creative hobby broadens your perspective with more varied and richer experiences. Many creative people use platforms like Instagram, SoundCloud, and DeviantArt to showcase their work; feedback through engagement and views allows creative people to make better decisions by learning what their audience likes. To that extent, these platforms let creative people grow by following other people, allowing them to learn different styles and perspectives.
Creativity drives more creativity. The exposure you gain by doing creative work will help you come up with out of the box solutions to problems you are attempting to solve when you write code. You learn more about the way you think and your creative process. You have new techniques to brainstorm ideas. You know when it is time to take a break and how to get out of a rut. You are now a better thinker and coder.
All of a sudden you start realizing that writing code is more than just attempting to solve a problem; it is attempting to solve a problem for your user. The ability to recognize that you are building for users gives you more perspective and clarity.
More perspective means better products
If you watch Silicon Valley you might remember the moment when Richard Hendricks finishes his killer app and all his friends love it. But it failed. Richard created the best compression algorithm, but if it’s too hard for a user to upload a picture, the algorithm behind the application is insignificant. Atom is an extremely popular text editor, but if you ever try to open a large file with it, you will see it fail. It has a ton of cool extensions, but if it takes up too much memory and can’t open a file, it’s useless. Developers of these applications do not realize the priorities of their users because they lack their perspective.
With perspective on the software you are building, you stop overengineering and start focusing on what really matters: your users. These users might be other developers in your organization or it might be people with no technical skills at all that are using the end product. Thinking about your users drives you to ask questions that matter. What will the user be doing with this application? Will this feature benefit them? You start thinking about about whether your backend system will be scalable when the application is ported to a smartwatch or a thermostat. You are aware that other people in your organization will edit the code that you write in the future in order to extend it. The way you architect your code is based on this knowledge. Things that were important to you like choice of language are less significant because you realize that these should be based on what will be the best for the user rather than what you find the coolest.
You start empathizing with designers
When I worked at The Home Depot, I worked next to the internal tools UX department. To me it was confusing that a company would have a large focus on UX for products used by employees at Home Depot stores. But, there’s some math behind why. On average there are around 1.5 billion transactions at Home Depot stores every year. If Home Depot can improve a transaction system’s UX to cut the transaction time by just 1 second, the system will save Home Depot employees 1.5 billion seconds. That’s the same as 416,666 hours. One simple fix to the transaction system will save Home Depot 4 million dollars. Not to mention a quicker service means happier customers and employees. The work that designers do is not insignificant.
With a creative hobby you become more deliberate in the decisions you make in your work. The choices you make in the art you create are purposeful for your end goal and for your audience similar to how a designer makes choices that help increase the usability of a system. Having this hobby shows you that developers and designers have similar challenges. Design work requires focus, attention to detail, and problem solving skills much like how development work requires. You start seeing that developers and designers are solving different parts of the same problem; the former focusing on the technical part and the latter focusing on the human-centered part. Having this understanding allows you to empathize with the work designers do and reduce the level of animosity that is common between developers and designers today.
You are valuable to your team
As a creative, you bring a skillset that makes you an asset to your team. If your team does not have a designer, you can fill in the role alongside the development work that you do. If your team has a designer, understanding the basic premise of a designer’s goals and having a firm understanding the engineering costs associated with a design, you have insight that will be invaluable to your team. You can predict on what designs are possible in a technical sense and give recommendations to your team.
As a creative you become more critical of the work that you make and this drives you to keep improving it. In turn, the code that you develop and review is cleaner and more well architected which your organization will greatly appreciate.