Fair warning: This post is not about writing. Not about writing fiction, anyway. But it is about something near and dear to my heart. Coding. Software development. Programming. You get the idea…
It’s about that, and it’s about why everyone not only can do it, but why they should.
Now that I’ve used up this week’s allotment of italic text, let me open with the video that inspired me to write this post:
Something I should say up front: I am not advocating software development as a career path. This isn’t even about that. Not directly, anyway. It can be a fantastic career, if you can find work and if you’re cut out for that sort of thing. But, frankly, the job market for software developers is (in my experience) saturated and good work is hard to find in that arena, despite what is said in the otherwise excellent video above. Maybe I’m wrong, but my own personal experience is that finding good work in the software development field is very difficult these days. There is a glut of qualified, degree-equipped competition out there, fighting for all the jobs. Many of those jobs are going overseas, so those of us in the US just aren’t going to be finding work in software development without some luck. But, again, this post isn’t about careers exactly.
So what is it about?
Well, consider this: What is the most widely-spoken language in the world? According to Wikipedia, it’s Mandarin (Chinese) by far, followed by Spanish and English. However, that’s only human languages. I would say, taken as a lump sum in its many forms, machine language is definitely “spoken” by many more. But most people don’t understand it!
Computers are simply everywhere. They are in our cars, they are in our appliances, they are even in our clothing! But, for most people, how they work is a complete mystery.
Granted, one of the hallmarks of good software and hardware design is that it’s “idiot proof” and you don’t have to understand it to use it. That’s one of the great things about computers and the information age – we’re opening up vast amounts of knowledge and computing power to people who have no need to understand how it works, they just need to know how to make it go.
However, this “black box” approach to computers doesn’t have to be the norm, and I feel like it shouldn’t be the norm. Yes, you don’t have to know how to write code to operate a computer. You barely need to be able to read to operate a computer these days. But the insights you gain by just having a basic understanding of what’s going on inside that black box is invaluable.
My years of goofing around with computers, and of playing with code in particular (I’m self-taught), have given me an instinctual feel for how they work, their capabilities and limitations. When something goes wrong, I have a head start on troubleshooting and fixing what’s wrong often because I just “have a hunch” that leads me in the right direction.
But, beyond this intimate familiarity with computers, being able to write code is empowering. You’re no longer limited to what software you can find to do the tasks you need to do. You can often create what you want or need, and it’s often far more simple than you may think.
Last, but certainly not least, coding is fun! It’s a creative skill, like painting, or writing, or anything else where you take raw materials and ideas and create something that didn’t exist until you made it. Once you’ve created something, you can then share it with thousands (or even millions) of others around the world and what you’ve created can help them, entertain them, whatever you design it to do.
But, where do you start? Isn’t learning to write code hard? Doesn’t it require you to be a math whiz? Doesn’t it cost a lot for the software and books you need?
Actually, getting started in coding isn’t hard at all. It’s also something you can do cheaply – even for free – and the math involved in most software development is simple addition and subtraction. The best part about the math is that it’s usually not you doing it. You put in the problems and the computer solves them! That’s kind of what programming boils down to, in the end: Getting the computer to do the work so you don’t have to!
So, where to start? Well, the web address given in the video above isn’t a bad place to begin. You can head over to www.code.org and get started in a ton of different ways. Some of what they offer is geared toward children (even very young children) and some of it is directed at an older audience. Pick something that looks fun and run with it. Get bored or feel like it’s not for you, try something else!
Aside from that, if you want to try a more “advanced” programming language, look into something like C++ or C# (my personal favorite). You can find dozens of books for complete beginners that will let you dive right into these “high-end” languages, and web sites as well. There are lots of free options online to learn even these languages and, while the software used to develop and compile programs in these languages can be very expensive, there are free versions available as well. In fact, Microsoft’s Visual Studio “Express” editions are free and completely compatible with the for-pay versions of Visual Studio.
Another great thing about learning to code is that it’s something that’s very well suited to “hands on learning”. Most people, I think, learn by doing more than they learn by listening to someone talk about a subject. With programming, once you’ve got a few basics down, the sky is the limit. Once you can create a simple program that will compile and run, you can build on those skills in whatever direction you want to go. Want your program to be able to read from or write to a file? It’s not that hard – just look into that specific topic and learn to do it. Want to display an image? Investigate that particular topic and find out how. You don’t have to know how to write networking code to send a line of text to a printer. They’re independent topics and you can learn what you need as you go. What you learn is based on what you want to do!
Some of you might be wondering, what’s the point? More utilitarian-minded folks might not feel that a creative outlet is all that useful. Well, that’s a fair point, and if you’re thinking it’s a lot of effort for something you’ll never use, consider this: Being able to write code means being able to do virtually anything with a computer. In my own life, I’ve written programs to help my wife plan family meals and shopping trips, I’ve written programs that I use frequently in running my business, I’ve written games just for fun, I’ve written programs to make other programs easier to use, I’ve written programs I use in my tabletop gaming hobby. The possibilities are endless, and very few of the programs I’ve written are even all that complex. They just make repetitive or complex tasks simpler, or they entertain. Further, as I said before, I’m self-taught. You don’t have to be a genius to write code, nor do you have to spend a lot of money or go to school for it – unless you want to.
Even if you try it out and decide a week or month later that you’re just not into it, the experience can give you a great deal of insight into what goes on inside these magic boxes we all spend so much time staring at. Give it a shot – you never know what you might create!