Users of software! Who among you doesn't want this feeling?
A lot of effort goes into making software as simple as possible to use. Classics like
Don't Make Me Think! catalog ways to make user interfaces intuitive. On the whole, this is a good thing. Competition in our choice of software is driving everything to be as simple as possible, and no simpler. But software can be more, much more. And not later: right now. The catch? You have to work for it. You have to learn your software's language.
Software is built of thoughts. What you see on a screen are images and words. What you hear are sounds: alerts, sometimes voices. What you feel are vibrations. These are all approximations of the logical world in which your software lives. You interact with this world by typing, clicking, tapping and speaking. Most of our typing, clicking, tapping and speaking is directed against objects presented to us by the user interface: pre-canned and pre-suggested actions. The user interface is a guide to the software's world of thoughts, helping you navigate your way to the solutions you seek.
What if you could interact with your software without a guide? What if you could describe your intent without having to navigate pre-trod logical paths? What if you could construct entire sentences for your software to interpret, beyond the limited vocabulary of "this thing" and "that action"? What if you could bypass the interpreter between your carbon and silicon brain and tell your computer what to do in a language it already speaks instead of trying to hunt for the way to prod the guide to suggest the action you already knew you wanted in the first place?
Think of
Plato's Cave. The UI is just the shadows against the wall. Rather than limiting yourself to grasping at these shadows, with a lot of software there is an underlying language you can use to give direct orders. Think "keyboard shortcuts times one hundred."
Just past the covers, a lot of software that you already use has such languages. Excel has
formulas. Outlook has
rules. All of office has
macro support. Your operating system has a
command line and a shell you can use to help automate common tasks. If you build web pages, getting to know
HTML,
CSS and maybe even a little
JavaScript will give you much more freedom than what you can experience from within a graphical editor.
Some software is built to be used primarily through its language. If you edit a lot of text for work, you might be familiar with the great
vi or emacs. For the price of learning a small grammar and simple vocabulary for text manipulation, you can multiply your productivity at the keyboard.
But this is all on you. Nobody is going to make you think. A world of riches and reclaimed productivity is waiting for you if you can speak to the software you use day-to-day in its native language, not just through a graphical interpreter. Learning the language of a piece of software has the same thrills as learning a foreign language: pride in being able to guide yourself around a new country and the fun of figuring out how to most effectively curse.
This is why software developers should study foreign languages. Studying languages is the study of expressing thoughts, and we are a business of constructing goods made of thoughts. The best software and services enable us to do more than we could by translating our intent into action. The more we can express, the more efficient this communication becomes. In a way, we're all cyborgs now. We can either passively consume via our silicon brains, or we can use them to bend the world to our will.