Any sufficiently advanced technology is indistinguishable from magic.
- Arthur C. Clarke
In many ways, programming is very much like a kind of Magic.
We even call people that are good at computers, a Computer Wiz(ard).
When I volunteered at an English school I would often have a bit of fun and jokingly call myself パソコンの魔法使い
or Computer magician
when describing my job.
Writing code can even look like writing in an ancient arcane grimoire.
We could even continue the illusion further. A lot of programming is divided up into many different schools of magic.
Often schools of magic are divided up among elements: Fire or Water or Earth or etc. Sometimes we divide schools of magic by color: Red or Blue or Green or White.
In programming, we often divide our schools by other factors.
- We can divide them by area like Frontend, Backend, Infra, etc.
- We can divide them by language: Swift or Java or Python and so on.
While you can typically build anything with any type of Magic, what types you know will often influence what you build. If you want to write an iOS app, it’s going to be much easier if you know Swift. If you want to write for Android, it’s going to be easier if you know Java or Kotlin. If you’re building web, you are almost certainly required to know HTML, CSS, and Javascript, though if you do your work on the backend, you have a lot more flexibility in your magic of choice.
Though one thing both Programming and Magic have in common . . . there’s always some hidden black magic keeping things together.