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)
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.
Great point. Thanks for sharing.
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!).
Exactly, simplicity is the key.
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.
Thanks, glad that you enjoyed. Did not know about "Inktober" seems like great initiative.