The Power of Programmingby Jeff
Our brilliant brains
I studied neuroscience in school because I was curious about how people work, and I still am. I learned about a lot of really amazing things our brains can do. For example, we are super good at understanding language. In fcat, I can wtrie a sentnece wtih all the lrettes in wdros scebramld up, and you wluod siltl be albe to urtnnesadd it pltefecry. You can understand someone who has a strong accent, slurs their speech, and uses improper grammar nearly as well as anyone else. Right?
We are also good at analyzing and classifying visual objects in 3D space. If someone throws a baseball, you can predict where it will land within about 5 feet just by eyeballing it. You can see a pattern in the stars and relate it to something you read about in a book 3 years ago. If you've ever taken a physics class, you would know that the calculations and measurements that are happening instantly and subconsciously in our brains here are pretty incredible.
If you think about the logistics of how our brains actually work, it's mind blowing. Although some of the best programmers and scientists in the world still have not been able to crack these problems (speech and visual object recognition particularly), our brains compute them instantly, perfectly accurately, and subconsciously. That's something to marvel at.
Our Lazy Brains
At the same time, our brains are mind-numbingly terrible at some things. Take, for example, remembering lots of things – we are so bad at this. You can be told someone's name and forget it a minute later. And if I asked you to remember two phone numbers without writing it down? Forget it. Also think about math – although we've figured a lot out, we're pretty bad at the calculations. We're very slow and usually require a calculator to figure it out at a reasonable speed. In fact, we're pretty bad all around at repetitive tasks. We do them slowly, and get bored with them quickly.
And this is for a good reason – the gorgeous and super talented brains we have shouldn't be wasting time with trivial, boring, and repetitive things. We are born with the most complex and advanced logic in the world built in to us. Billions of dollars are poured into scientific research to try to figure out how our brains do it, and billions more go to computer scientists trying to replicate the things our brains can do. But guess what? We're not even close – on either front.
Extend your brain
The power of programming is that we can use it to extend our brains' abilities. When it comes down to it, remembering lots of things and doing repetitive tasks quickly is extremely important for many things in life, and it turns out computers are extremely good at these two types of tasks in particular. If you have a fluency in getting a computer to do what you want, you have transformed yourself into a superhuman – you can now do anything your brain normally can, plus you can remember vast amounts of information and you can do repetitive tasks extremely quickly.
In addition, offloading these kinds of tasks to a computer frees your super amazing brain to do more of... well, what it's good at. You will inevitably run into problems that require remembering lots of info and/or boring & repetitive tasks, and if you can't get a computer to do them for you, you will have to do them manually – this is a waste of time. We were not meant to remember tons of things, or do boring repetitive stuff – we were meant to learn, grow, and innovate. Don't let yourself get bogged down by these wastes of time – the ability to program allows you to maximize your brain's potential.
Increase your value
Many people see programming as a very domain-specific task. People who can program work in technology, right? Absolutely not. You can be just as valuable, sometimes even more valuable, in other fields when you can program. You add a lot to your base efficiency at work by being able to control a computer and offload certain tasks to it. But it's not only you who will benefit. With your skills, you can create a more efficient work environment for everyone you work with. I bet you work with a bunch of people that waste tons of time on things computers could do better (almost everyone does) – stop that from happening. Build tools to make things you do often easier. Then build tools on top of those, and don't stop there. If you keep doubling your efficiency, you will find that the way everything works tends to change very fundamentally.
So how to get started? Education is typically absurdly expensive and time consuming. Years ago, one would have said that the way to learn about computers is to major in computer science in college – a commitment of huge amounts of time and money. But today there are an overwhelming amount of resources available for free online (and offline) that can help you start to hone your superpowers. A couple that come to mind...
...and there are certainly many more, but these alone should get you more learning than you can handle in a year of college, easily. So get out there and start upgrading yourself. Once you start, you'll never want to go back.
Remember that mixed up sentence from the first paragraph? I didn't do the mixing manually – I wrote a short program to do it for me – and now anyone can use the program to sensically scramble any number of words. 'Open sourcing' programs (releasing all the code to anyone for free) is a great way to spread knowledge and build on what other people have done, and the open source community is vibrant and thriving among programmers. I open sourced the sentence scrambler program, and you should check it out! It's hosted on github (the social network for programmers) and written in ruby.