DEV Community

Cover image for What can developer learn from taking art classes
Oleh Kuchuk
Oleh Kuchuk

Posted on

What can developer learn from taking art classes

Hello guys πŸ‘‹, a few months ago I decided to try something new and start attending an academic drawing class. I was always impressed by stunning artworks, but I never tried to do something by myself.
My last drawing attempt was back in the school days and I never thought I will do it again πŸ˜ƒ.

For me, it all started from reading classical Hackers and Painters book by Paul Graham. In one of the chapters, the author drew a clear parallel between art and "hacking", and bring solid statements that developer work in most cases is closer to art than science field.

I decided to check it on my own and after all that time communicating with artists and exploring this field I found that mostly mindset of a creative person not much different from a techie. Even more, we share lots of common ways on how we think about a problem and solve it. So here are some key notes I made so far.

Master fundamentals πŸ“š

This may seem obvious on first place but think about all these new shiny technologies and tools coming every month or even weeks. It is easy to get lost in the hype, but mostly, they all share common underlying concepts.

Any good artist firstly starts by exploring simple shapes, to form a solid foundation and only after that progress to make some harder objects as the most complex ones are just well-formed groups of simple primitives.

This is truly relevant to programming, instead of learning new trendy framework etc. try to think about what concept it implement and what underlying research was made.

Ignore details on first stages ☝️

When you try to draw some shape, it is easy to forget about the whole object while you focus on a single thing. My teacher always tells that well-formed object even with some nuances lost, will always look better that one that has lots of details but not solid grouped form.

Now think about making software project, adding details (unnecessary dependencies, pre-mature optimization, complex abstractions) on first phases will add danger to it. Instead, try to come with some "just working" solution, even if it is not too pretty yet.

"Premature optimization is the root of all evil (or at least most of it) in programming." (c) Donald Knuth

Strive for progress, not perfection. A project will become more complex over time, so adding unnecessary stuff on first steps can potentially make it not scalable. That why in my opinion KISS is the most important concept to follow.

Recognize common patterns πŸ“‹

For example, look at this drawing, it is a pretty classical diaper fold. From the first look, it may be hard for a novice to understand where to start from, but if we look closer we can see that mostly this complex shape consists of simple primitives like cones, with smooth transitions between them. Identifying these patterns is very important for an artist.

This is a great visual demonstration of why studying design patterns is crucial for a good engineer. Knowledge and, even more important, ability to correctly detect and apply them on your project, will make your code robust and easier to follow.

Conclusion

After my short "experiment" I can confidently say that it is very useful to explore new fields and look on known things from different angles. Studying new skills, even that are not directly relevant to your profession, could make you a better problem solver and give you a fresh view on common problems.

Thanks for your attention πŸ™

PS. What are some fields besides software development, you are currently exploring πŸ€”? Share in comments. πŸ‘‡

Top comments (6)

Collapse
 
dmfay profile image
Dian Fay

I took almost as many studio arts classes as I did programming classes in school and I think the single most important thing I learned from them had nothing to do with the technical aspects of composition, figuration, or execution. After we'd done all that we'd gather in one big room, and each student would show off in turn what they'd accomplished. The rest of us would discuss what worked and what didn't, think out loud about what could make the piece more effective, and offer suggestions for the presenter to concentrate on next time. Critique is a skill, it doesn't come naturally to most people, and it's vital to be able to do it effectively without being an asshole if you work in any kind of team.

Collapse
 
hzlmn profile image
Oleh Kuchuk

Great point. Thanks for sharing.

Collapse
 
evanbowman profile image
Evan Bowman

It seems like the engineering and the painting communities appreciate similar ideals. Most successful representational visual art is organized into large simple shapes, with just the right amount of detail added in to be convincing (but not more!). One example that stands out to me is John Singer Sargent, who would obsessively simplify his paintings--walking back from the canvas after each brush stroke to see how all the abstractions coalesce into realism from a distance. This isn't so different than some programmers' dedication to economical expression of algorithms (e.g. the functional programming crowd), or engineers' admiration for the conciseness of the Lua interpreter (a compiler, VM, and runtime in 20000 sloc, and ansi C no less!).

Collapse
 
hzlmn profile image
Oleh Kuchuk

Exactly, simplicity is the key.

Collapse
 
dana94 profile image
Dana Ottaviani

Great post. I'm learning anatomy and digital art now. There are definitely similarities between coding and drawing.

What's more is that where coders have a "Hacktober" event in October, artists get involved in "Inktober" to show off selected art themes.

Collapse
 
hzlmn profile image
Oleh Kuchuk

Thanks, glad that you enjoyed. Did not know about "Inktober" seems like great initiative.