sudodoki aka Джон, просто Джон

Front-end developer. Bad cook. Boy.


Published:

Programming as analogy, Part II

This is a stand-still capture of lightning talk I presented at Ruby Meditation this spring.

This is just an analogy. And any analogy is inaccurate

So, the basis for this analogy would be that we can compare web development to music (previously, it used to say 'software development' but I slightly adjusted this as to what's going next and because of the fact webdev is just a small subset of software development overall).
Yes, there's always a good amount of discussion whether writing code is craft or art, and on this one, let's just all agree we can compare webdev and music. Both can serve different purpose (or no purpose at all), involve blend of inspiration, taking someone's problem off their shoulders, making a living and cashing out big in the end (not everyone, sure) and genuinely having fun while it's on.

Extending this analogy, we could say that backend is a rhythm section

Bringing in strong base and steady rhythm, beating heart of the system.
And frontend would be melody & other stuff™

Important tool for conveying general mood and idea, but makes so much more sense when there's a solid rhythm section backing it up.

Now, I would exercise my sense of humor and tire you up with some silly one pic + caption translations of things between webdev & music.

BaaS would be drum machine, aka 'Look ma, no Backend'
Drum machine

Autotune would be linters, making it so much simpler to have unified sound and not having everyone argue whether that was A or A♭. Autotune guitar

Backender doing Frontend
Drummer playing guitar with the sticks

And, possibly, full-stack engineer would be a one man band.

Scaffolded/generated backend

Backend not keeping up with the spec

Burnout aka too much work

Creating fancy frontend demo for customer

(↑Note that there's no backend present.)

Orchestration

Whenever there are breaking changes in backend

Backender seems to be really proud, but some other team members seems to be slightly not as excited about this.

And the most important part here would be that
Different languages would represent different instruments 🎹🎷🎺🎸🎻

Different music styles, which could correlate to different type of projects, would require different instruments to bring out the best of the style and the team/band behind it.

You could also compare Computer Science to Music theory ♩♪♫♬♭♮♯. There're too many people being self-taught in both fields, and, IMO, there are always a chance prodigy would be able to come up with innovative idea and solution, but there's also a high probability of running into too many unsuccessful experiments because one is not able to 'stand on the shoulders of giants' and reuse that knowledge that field has accumulated throughout its existence.

Patterns might translate into scales, chords, …, things lesser than whole solution, but a building block you might not need, but that is there in case you need it.

And finally,

Go on and create nice music!

🎹🎤🎧🎼🎷🎺🎸🎻

Closing remark: topic of comparison music and software development was covered in great book by Chad Fowler that I had great pleasure reading called The Passionate Programmer. And yeah, this was slightly based on tons of related tumblrs, like devopsreactions and others.

Hope you liked it – just wanted this off my draft tab as it was there for good half a year and I really enjoyed this small brain exercise and had feeling this might amuse and/or inspire someone.♥️

comments powered by Disqus