I bumped into an article that reads like an article that I would have written back in the late nineties when I was learning to program. Heck, to this day I’m still learning how to program. In software, the day you stop learning is the day you become obsolete.
It was late 1998 and I was in the same boat as the author. The feeling was one of inferiority when compared to the accolades of accomplishments that the tech folks who were my age were already sporting. Programming homework assignments took me 6-12 hours, it took them 20 minutes. I think I even failed my first programming course if I remember correctly. Well, maybe not failed, but I got a “W” for withdrawing so it did now show up on my academic report as a fail.
Here’s something most people in the industry don’t know about me …
I did not touch a computer until I was nearly 21.
The internet was already in full swing. To put some perspective on it – A year later Mark Cuban sold Broadcast.com for $5.7 Billion. It was the middle of the tech bubble.
At that point, I had not even learned how to type yet.
I was a keyboard pecking chicken-hawk who was way out of his league. I saw others (though did not know them personally) that seemed “gifted” in the area of computers and I wanted to try like them.
I tried to emulate them.
I failed, hard.
Unfortunately (and fortunately for them) they started much earlier than I. I could not keep up, I just didn’t have the same background that they did.
You see, I was raised in a small town in northern California (Shingletown, CA to be exact). The population was only around 1000 people. In Shingletown our days consisted of playing outdoors, building forts, climbing waterfalls, camping etc. I eventually got into racing motocross and that got me out of the hills and into different cities to experience more of the state of California. I got to see people, I got to taste what life was like outside of the hills. I liked it. The funny thing is that I actually encountered computers because of Motorcycles. I moved to Phoenix in 97’ to go to MMI (Motorcycle Mechanics Institute) after hanging up my boots in pursuit of a motocross career (I just didn’t have it).
Then I found the internet …
I happenstance stumbled upon the internet one day while waiting for a girlfriend to get ready to go out.
She said
Here, sit down, search for something on the internet while I get ready.
She showed me how to use Alta Vista (the main search engine prior to Google and Yahoo) and a few minutes later I got hooked. The first search I ever did on the internet? A search for AFI, the band, in 1998 (I was REALLY into music and motorcycles back then).
I saw a wall of information that I had never seen before. I was amazed. I performed one search, then another, then another. I was hooked. I could not believe all this info was available.
Two weeks later I bought my first computer. To be 100% honest, I didn’t have much money back then – in fact I was broke. I didn’t have the money at all. I was providing for myself at that age with no parental support. Buying a computer was a humongous expenditure. Therefore, it put me in the poor house for a while. So, I didn’t buy real food, I bought Ramen (not joking here, not at all). I ate it for 3 weeks straight and got sick as a dog (lesson learned – ramen profitable is just a term, it’s not really sustainable – lol), but I did have a computer. It was one of the best investments I ever did now that I look back on it.
I finally had a computer and I was stoked. I had a problem though … a very big problem … no one I knew had a computer.
I was alone in this venture.
Remember, I was going to a Motorcycle Mechanic school, not a computer school. I had to figure it out all by myself.
I can’t tell you how many times I re-formated my computer.
I reformatted because I got my computer into a state in which I had no idea how to recover from. Safe mode scared the crap out of me. A year or so after getting a computer I installed an early version of Java over 8 times which resulted in numerous evenings spent reformatting my computer.
The only thing I knew how to do was put in the re-format disc that came with my computer and reset it.
Even learning to do that took many hours if not a day or two, it’s hard to remember. That took me back to step one. After that, I’d try again. Later I’d learn that what I was doing was called “Debugging”. It wasn’t the code’s problem – it was me. I was debugging myself and how I understood computers. That took hours, days, months of time. Each time I reformatted and tried something new, I got farther, but by god was I frustrated. There were many times I’d get pissed as hell and walk away for a day and say “Forget it, I’m not smart enough for this”. Fortunately, I’ve always been one to never give up. I came back. I always came back.
I eventually stopped doing that Java stuff in school (I hated it … funny now that I’m an accomplished Android *cough*Java*cough* author and consultant).
I originally started doing web dev because I thought the internet was amazing. So much info, so much at my fingertips that I never had access to. I had no idea how to do build a web page though. So I went and bought the first version of this book in 1998 at Barnes in Nobel at the Metrocenter Mall location in Phoenix. This was my first computer/tech book that I had ever bought.
I spent hours in the computer section at various stores from that point forward. Learning more and more on my days and nights off. I may have learned a lot, but I ran into a lot of problems. Crashes. Borking my machine. MANY Reformatting sessions. Etc. I’d screw up, and then have to reformat my computer. I’d then start over again and with each new accomplishment came a hit of dopamine. The excitement was unreal. I was figuring it out! Each new script I wrote (alert(“In here”);
Seriously, who remembers that! I still bump int that all over the web. Ha!) Anyway, I felt like I was part of the machine. I knew I was getting a step further. I felt like I was walking on the edge of the universe at times. Barely being able to cling onto the safety net of a working computer only to end in another reformat was frustrating as hell.
Learning to program and not having a firm understanding of computers was like a demented video game where re-spawning took 2-3 hours (time it took to reformat). It sucked. I hated it at times, but I kept coming back because I loved it and I knew I didn’t want to do what I was doing the rest of my life – working on motorcycles or being a rep at a call center. I knew that this computer stuff was something special. But still, all these problems made it difficult to learn and progress and I realized one thing early on during this process …
Learning to program sucks.
Your machine has to be set up perfectly, your environment has to be set up correctly and you have to be using the right tools. Otherwise … it won’t work. I spent days trying to figure out a system configuration issue just so I could get back to programming (we still all run into that on occasion). So yeah… learning to program sucks.
It does.
The thing is … I wish I had a solution to that problem, but I don’t have one. However, upon further review and after a few edits to this article I’m beginning to think that the answer hidden in plain sight. It is the advice I always give everyone. The best advice I can give is the same advice I give to my kids when they’re working on a difficult math problem or doing programming exercises with me – “Don’t give up. Keep going. Don’t EVER give up. It will get easier.”
Furthermore, I’d have to say that in order to truly learn how to program and get things done you need to stop reading books and start building something. Keep the books, you may need them. But what you need to do is build something, build anything! Then add to it and get people to use it, even if its only for your friends. Yes, what you build will break and then you’ll learn more about programming by fixing the problem. You will learn a ton. Then do it again. Make something new and publish it/ship it again. You’ll learn so much in the process its ridiculous. Eventually, your confidence will grow (albeit sometimes a bit too much) and when you get good enough you can apply for a junior developer role.
When I finally got a DevOps position (back then it was just called “Tech Support” for the servers) at Target Financial Services (Target’s credit card) in 2000 I was beyond grateful. I didn’t care if it was networking or programming or whatever. It was in tech! I was stoked. It was my first tech job I had. I went to work and I loved it. I felt alive. I was not in a mundane job anymore. I still feel this way. I’m very grateful for what I’m able to do. Prior to that, I did tech stuff, but it was for small businesses and friends and such – I was still learning. I was making websites and helping friends (and a couple small businesses) set up networks. Getting a job at Target Financial was a huge win and a great confidence booster. However …
I did bring down the server on my very first day and cost the company 30K in under 2 hours, oops. That’s a story for another time. I’m just glad I didn’t get fired. Thanks Jason! 🙂
Just know this … whatever you’re doing, trust in yourself. Trust in what you can do. Even if you suck at it now. If a nobody (such as myself) can come from small-town America and write a best selling programming book and become relatively well known in the industry all while knowing nothing when I started … well … guess what – you can too.
Keep going and don’t give up because the one sure fire way to fail is to give up. Remind yourself daily if you have to: Don’t EVER give up. Keep going. Persevere. Try again. Keep going. It WILL get easier.
Photo Credit – Tim Gouw
ThomasTiddlyWinkChauncyPepperw says
Thanks for this article. My friend sent it to me, knowing that I am trying to teach myself programming. I’m 28 yrs old and the learning curve has been, as you said it, steep and painful. Reading your story hits home for me and does give me hope, so thanks! I also did horribly in my first CS course in high school. Got a C, which I guess was apropos for a C++ class : )
Donn Felker says
Nice man! KEEP GOING. 🙂 It is a long rough road but eventually its paved in velvet and life gets much easier. However, the road never ends, it just has new turns and divisions. 🙂
Rizwan Khan says
Thanks Donn Felker for your motivational thoughts ..Same issue i am facing during android app development which currently i m doing by reading books and articals to understand android concepts..I need little information from your experience as i m new to android world i totally get confused when i try to make something i did not get idea how i should start….(my problem during code writting is that i m not good in logic ..i get confused about my code logic )How should i prove it..??Many students like me face this issue how to develop logic to slove a problem ..if you help us by sharing your thoughts on podcast or through this post reply it will become helpfull for all of those (including me) who stuck in programming due to not good logic of problem..
Michael Obi says
Thanks Donn, This post means a lot. I’m a 20 year old Nigerian trying to learn and keep up with the Worldwide developer community from a country where there’s little support for “Tech” as a whole. Sometimes everything comes crashing but I’ll hopefully find the drive to push on. Thanks again