I got an early-ish start with computers when I was about 6 or 7 years old. My dad created an MS-DOS boot disk that got me to a DOS prompt on the one of the hard diskless IBM clones in his office. Once I had booted to the command line, I’d put another floppy disk (these were 5.25 inch floppies, the ones that really flopped) in the B drive, type in the commands which I quickly memorised, and my six year old self would be ready for some hardcore word processing. Using Multimate at first, but then moving on to PC Write, I penned a few short stories and would love to visit the office and use the computers. My Dad’s staff even gave me access to the holy of holies – the one real IBM PC (not a clone) which had a 5 megabyte hard disk, and was protected by a password. I was solemnly lectured to never disclose the password, not to anyone, and I never have, even to this day.
And so it was against this backdrop that I became interested in computers. When I was nine my family bought our first computer from a back alley vendor in the Philippines. It was an IBM compatible XT Turbo, which was technically an 8088, with a twenty megabyte hard disk and a monochrome CGA monitor. It was outdated when we bought it, as the 386 had just been released, but I loved it. I spent hours learning different software packages like Norton Commander, PC-Tools, and playing games like the Commander Keen trilogy. We kept it until I was twelve, and then gave it to a Chinese friend when we replaced it with a 486 DX-33 we picked up in Hong Kong. Built like a tank, it is probably still in operation somewhere.
Despite this early introduction to computers, I didn’t get started programming until I was sixteen. It was harder then – we had just got the internet but the tutorials and blogs and wealth of easy information we have now didn’t exist. It was also difficult to get the necessary software you needed – thanks to living in China I could buy a pirated copy of Borland C++ or Microsoft Visual C++ for about a dollar, but they were a bit overwhelming to setup. I finally found someone who knew how to program and begged him into giving me a few sessions. He had a book, helped me setup my compiler, and agreed to meet with me once a week to teach me. I even managed to get these sessions accepted as school credit during my junior and senior year. I still keep in touch with Erik now, and he was one of the groomsmen in my wedding. Together we even managed to cobble together two “junk systems” from spare parts and after a few weeks of constant trial and error, we got Slackware running in 1998, still one of my proudest technical achievements.
Every American college bound student knows that their junior year of high school is crucial for getting accepted into their university of choice, and I began targeting computer science as my major. I was heavily advised that I should focus on a business degree instead. At the forefront of that group were several of my math teachers, who knew that I didn’t do well in that subject, but there were also many others who thought that I shouldn’t “waste” my people skills in a technical role.
But I was really enjoying programming! My first real project was a string indexing program which could accept a block of text (much like this blog) and then create an alphabetical index of all the strings (words) and the number of times they appeared. Written in C, I had to learn about memory management, debugging, data structures, file handling, functions, and a whole lot more. It was way more mentally taxing than anything I’d ever done in school, and it required a ton of concentration. I wasn’t bored like I often was in classes. It was hard. Erik would constantly challenge, berate, laugh at me, and most importantly, accurately assess me using an instructional style that I’d never been exposed to before – he only cared about the results, not the trying.
Although I was dead set on computer science, I really liked making money too. My parents noticed this and for one semester during that crucial junior year they offered me financial rewards for grades achieved. After I’d hosed my dad for over a hundred bucks due to my abnormally high grades that semester, he announced that “grades should be my own reward” and immediately discontinued the program. There were plenty of people telling me that a degree in business would better suit these talents of mine, and if I was honest, at the time I knew they were probably right. I was great in my non-science subjects, I could mail it in on papers and still get an A, and I knew that diligence, attention to detail, and math were weaknesses. Getting a business degree would be stupidly easy. Getting a computer science degree would be pretty hard, at least for me.
I was close to changing my mind when Erik mentioned, “You know, I’ve never wished I was less technical.”
This is advice that I really took to heart. It rung true when I was seventeen. It’s even more true today.
For me, the advantage that I incurred by getting a computer science degree meant that I could start my own consulting company and be one of the technical contributors while also being responsible for the business stuff. It helped me obtain positions of leadership because I didn’t need technical middle men to explain things to me. If things were going poorly, I could help manage the crisis effectively, and when things were going well I could explain why and point out the technical decisions that had carried us to success.
Guess what? I got to do all the business stuff too! Having a technical background has never limited my business acumen or hampered me in any way. I haven’t coded for money since 2007, but I use my knowledge and experience every day, and I stay up to date with technology as much as possible. I love it when our technical lead shows me the code behind the latest feature. If anything, having an appreciation for complexity, code, and systems design has only helped me design and implement better budgets, business models, and pricing schemes. I’ve never met any “business person” who is better than me at Excel, the language of business, and much of that stems from just knowing how to program. This has made me the goto guy in almost every planning or budget meeting I’ve ever been in.
Unfortunately, it doesn’t work the other way. People who aren’t technical will always struggle in any technically related environment. I’ve met so many people who have struggled and struggled to make their great idea a reality chiefly because they weren’t technical, couldn’t contribute, couldn’t cut through the bullshit, and therefore couldn’t effectively manage their way to success. Sometimes, they’ll try to fake it and just lose the respect of the programmers. As many times as I’ve thought to myself how glad I am that I have a technical background, I’ve had others voice to me the frustration that they just wish they knew more about technology.
If you’re reading this, and you’re trying to figure out which way to go in life, make sure you get technical first. If you didn’t choose that path, there’s still plenty of time – get out there and learn to code. There are so many resources.
This is what the “everyone should learn to code” movement is really saying – not that everyone should be a coder, but that everyone could benefit from understanding the environment, pressures, and disciplines that drive a huge part of our economy. It’s not just business either – artists can benefit from more creative displays and better performing websites, not-for-profits could benefit from volunteers who know how to help out in technical areas, and it’s just nice sometimes to be the guy who can get the projector working in a foreign country!
So get technical. You’ll never regret it. And if you’re a programmer and you ever see a kid who wants to learn, help them out, you may just find a friend for life.