Should You Finally Learn How to Program?
- 4/4/2018
- ·
- #development
You could take up baking to nourish your body or physics to nourish your mind—either's worth learning if it interests you.
But you asked, “should I learn to program?” and yes, absolutely, you should. Even if you aren’t making a career of software development, learning to program will give you a powerful tool to share information and automate repetitive work. Computers are tireless helpers; enlisting their aid in dull tasks will save your time for more interesting ones. No new skill will serve you better than a programming language.
Remember learning to write? While you struggled at first, your persistence soon rewarded you with a new way to communicate. Software is that and more: where a book, paper, or—yes—this note, must be interpreted separately by each of its readers, a program can be run by you or by anyone, one time or a billion, as long as there are computers around to run it.
And while learning always rewards the learner, software’s rewards are unusually broad. Mastering screen printing will make you a faster artist, and hydroponics a more efficient gardener. But while expertise configuring grow-lights won’t transfer easily to an offset press, both tools depend on software. Learning to write your own programs will help you recognize and better understand their use in other domains.
Finally, you may even find that programming is fun! The real world rarely fits neatly into software abstractions, meaning plenty of new puzzles for you to stumble across and solve. For someone that finds satisfaction in a challenge, programming offers as much fun as you’re ready for.
On the other hand, programming won’t always be easy—and especially not in the beginning. Like English or German, Python and JavaScript come riddled with irregular behavior and inexplicable quirks. You will find yourself at times exhausted, frustrated, and bewildered by the sheer complexity of the language around you. But stick with it! Your comfort with grammar and vocabulary will grow, and soon enough familiar patterns—I/O, logic, loops, and many others—will start to emerge.
On the other hand, the language is just a start. Today’s software depends on more libraries, frameworks, and interfaces than any single programmer can master. Using—and where possible, contributing to—them will expose you to the standards and expectations of the community at large. And while the tools you use will change with time, project, and experience, building on existing work will save a good deal of reinvention.
Which tool should you learn first? I wish there was a single answer. The world is changing at breakneck pace, and—with no reason to anticipate that it will slow—any opinions I could offer will be outdated by the time you read them. I would encourage you to begin with technologies that have survived a few spins of the hype cycle, but at times you may evaluate new technology and find good reason to buy.
Even software itself is changing. Where once we thought of programs solely as sequences of instructions, we’re now on the cusp of something much broader. Through various flavors of Machine Learning we are now as likely to let computers blaze their own trail as we are to mark it out by hand. Should you still learn boring, old, procedural software? Absolutely, just like you should learn to write. Programming is more a foundation than a direct competitor to the brave new world of ML.
If all of this feels as overwhelming to read as it has been to write, rest assured that you won’t need to learn it all at once. Pick one thing. Talk to friends and colleagues about the languages they use, choose one, and learn it. Find opportunities to use it–create them, if you must–until writing a short script becomes as natural as writing an email or spreadsheet.
It’s all downhill from there. Libraries vary in purpose and style, but with a firm grasp of the language, learning them is only a matter of time. You know enough to learn the rest.
In closing, always remember that software is a means to other ends. While it’s possible to make a career of software development, the programs you write do not exist for their own sake. Your existing domain knowledge is at least as valuable as your ability to translate it into software. Any developer can convert clear instructions into code, but far fewer will understand how to build safe bridges, read crude futures, adjust a cost basis, or close a customer. Use that knowledge. Automate it, where you can. And use the time you save to get better—to improve your work, say, or even to learn something new!