Becoming an In-Demand Developer: The Bad Parts
I haven’t done nearly as many interviews as a lot of software developers, but I’ve done enough that my answer to the usual first question (“Tell me a little about yourself” or “How did you get started as a developer?”) rolls off my tongue pretty easily. It goes something like this:
“I went to a summer camp as a teen and learned Turbo Pascal. I didn’t really stick with it, but played enough with that and making basic web pages in the early days of the web that I knew I wanted to major in CS. I did that for a few semesters at Georgia Tech, but between my workload as a swimmer, the difficulty of the math requirements, and my need to keep a certain GPA to retain my scholarship, I switched majors.
Later, after college, I decided to try web development as a hobby. Early on, while messing around with PHP and mySQL, a friend of a friend recommended I try Ruby on Rails, and that clicked for me. Very soon after that, some friends approached me to help them automate some aspects of a workflow they were using to handicap college football games, and that turned into my first paid project.
I was still doing it as a hobby when the financial crash liberated me from my job at the time, and I decided to move to Utah and snowboard, but continued to learn programming and pick up side projects along the way until I moved to California for a girl, and later got my first full-time developer job.”
It’s a nice, neat story, don’t you think?
This past summer, I taught a class on web development in New York City, and tried to reassure the students along the way that becoming a developer is a marathon, not a sprint (despite a bootcamp being a very expensive sprint at the beginning), and that it will be hard at times, hard enough that you will question yourself and your decision to start this journey, and whether you should continue.
Despite that, especially for those who specifically are doing this to improve their earning prospects, it’s easy to forget those words of caution and focus onthe thought of “If I just get a couple years experience, I can make six figures.”
Last night I was clearing out my starred emails in Gmail, and it took me down memory lane and reminded me of some of the parts of that story that weren’t so neat, or fun. Here are just a few of the false starts, dead-ends, and failures along the way.
- One of the reasons I was laid off from my last non-dev job because I pitched my manager on a project to do some scraping for LinkedIn. She was excited, until I didn’t finish a hugely expanded version of it in a week. Oh, and because of this project, when they fired me, they tried to hijack my personal LinkedIn account because it was now work-related. Also, despite the company being finance-related and laying off other staff after the crash (I was the newest hire), this side project’s “failure” was used to deny me unemployment benefits and say I was fired for cause.
- Despite being interested in Rails, having to learn all about Wordpress to do “quick” (read: spend 80 hours, bill for 15) projects.
- Repeat for Drupal, Magento, some hosting provider’s heinous custom CMS, etc.
- Hundreds of hours learning about how to deploy your app and configure it in production through frustrating trial and error. Redoing large chunks of that learning for client B’s hosting provider. Repeat again for the cloud era. Repeat again for cloud platform B.
- A hundred-ish hours learning about developing for Google Wave.
- Countless hours “learning” Linux (re: fighting with, losing, considering throwing computer into a river.)
- My first “big” project as a freelancer. Almost didn’t get it because the other developer was “shocked” that I didn’t know how to cut up a Photoshop file.
- Having to relearn PHP to deal with the existing codebase, done by an overseas shop.
- Middle of the night Skype calls with said shop. Everything must be repeated three times, once because the connection is bad, once because I can’t understand the accent well, and another time to clarify my understanding of the message.
- Pay being withheld because the client was not happy; being threatened with a lawsuit when I threatened to withhold in-progress work. (I wanted to go all Rocky 4 and say “Sue me for what?”, and send a picture of my bedroom at the time, which was a bed I didn’t own, a desk I built myself, and a set of Rubbermaid drawers with my clothes in them.)
- Being paid around $4k for that whole project. I don’t know the number of hours, but as an indication of the scale: I have over 600 emails exchanged with the client.
- Having to pay that $4k, and then some, to the overseas team when I discovered my partner had diverted funds for that into a venture of his father’s, with no means to replace it.
- Note at this point I have been a “developer” for almost 2 years and had over $20k of car loan and credit card debt. Consider applying for public assistance.
- Upon moving to California, get my first interview for a full-time Ruby job. It would’ve paid $40k and been in the basement of a porn mansion. Get rejected because I try to describe an algorithm for reversing the letters in a string, instead of saying to use Ruby’s
String#reverse
standard library method. - Get rejected from another job. I’m not sure the reason, but the interviewer asked me straight up in the interview if I was a Mormon.
- Start to give up. Apply for an IT support job at a local college. Attend a pitch meeting for a telemarketing firm at a sketchy warehouse in the Valley.
- Land my first job! Am dumped in a corner with an old CRT and given a Linux user account. Next human contact is a couple days later, when my manager asks me how the project is coming. Quit two days later in a panic.
- Here is where my luck finally turned, and through a recruiter (yes, those awful people we complain about constantly), I got a job that paid almost double the one I quit. I almost botched this one, too, because I was 20 minutes late to the interview after being stuck in traffic. This job was a godsend, but it was a 1.5 hour commute by Amtrak.
- Of the first 8 months on this job, 6 were spent migrating from Rails 2 to Rails 3.
Thankfully, though, this was when my learning curve took off. I had a smart, helpful CTO that valued learning and mentorship and good coworkers to learn from. This was in 2011 – 10 years after starting my CS studies, 4 years after being exposed to Rails for the first time, and 2.5 years after starting to call myself a developer.
Today, I think many bootcamp grads can compress this timeline quite a lot, but I sympathize with their struggles in the current market, where everyone wants a senior dev and/or wants to hire you for free or for peanuts to work on a shitty project that you aren’t confident about and doesn’t align with your interests. Some will be fortunate and get that $70k job right off the bat, but if you’re not one of those, there is still light at the end of the tunnel if you are persistent and enjoy learning enough that you can stomach learning things that might not directly help you in the future.
The struggle will harden you, and you’ll absorb more knowledge along the way than you think.