My Journey as a Self-Taught Engineer
In the 7th grade I convinced my Grandma to buy me a student copy of Visual Studio. I used to lug the accompanying Visual Basic book around at school. After getting kicked out of gym class I would sit in the office for that period and read it every day.
I don’t remember actually doing much programming in those days, but I had a passion for learning more about tech and became obsessed with hacker culture. I read 2600 magazine, watched Hackers and WarGames, hung out on BBS’s, downloaded lots of W@R3Z, and would spend days downloading Linux distros over our 56k modem only to brick my computer trying to install them.
In high school I had the chance to take some web programming classes mostly taught in Perl, though I think the teacher let us play Grand Theft Auto during class, so I don’t remember how much coding we were actually doing.
First Website
As a senior in high school, a friend of mine helped me land a tech support job at a local ISP / web hosting company called VServers. As part of my training they encouraged everyone to build a website on their web hosting platform. I decided to build one for the local punk and hardcore music scene and called it nwhardcore.com.
That job exposed me to so much about Linux, Apache, SQL and networking. I even took the initiative to write a Perl script to automate DNS migrations, but I mostly learned to code by adding features to this website. First written in Perl and then in PHP it allowed bands to post updates, upcoming concerts, MP3s and pictures.
When the dotcom bubble burst in 2001 the ISP was acquired by a number of companies and I was left with two weeks severance and only vague ideas about what do with my life. I decided to continue my community college education enrolling in women’s studies, sociology, English, and environmental studies classes. I eventually graduated from University of Washington with a degree in Community and Environmental planning and exactly 0 job prospects. I ended up back in tech support, this time at Real Networks helping people who ran those latency-filled video servers.
I stayed at Real Networks only a short while, leaving to serve a 2-year mission for my church at age 23 (old by most people’s standards). When I got back I briefly attended BYU’s Master’s of Public Policy program only to realize both BYU and grad school were not for me. By this time I was engaged to be married and needed some kind of steady job.
A Full-Time Job
I had done some part-time work on a couple of Drupal sites after my mission and figured I could try and get a job as a PHP programmer. I already knew how to program. I had been doing it for years on my personal sites, but somehow the thought of doing it for a full-time job felt like some great leap that I wasn’t prepared to take. Needs must and I went for it.
After talking with a few recruiters I was able to land an interview with an internet marketing company called Marketecture. They needed a mix of PHP and Perl experience, which was perfect for me. In the interview the manager asked what my favorite PHP function was. I think I said print() and still got the job by sheer luck.
As the newest engineer with basically no experience I was heckled mercilessly. My boss called me “junior junior”. Still the $40k/yr salary was enough for us to buy a great big house in Utah. After about a year on the job I stopped making so many mistakes and started to figure out what I was doing. I still got heckled, but even without doing much outside of the 40 hours I put in the office each week I was able to learn enough from my co-workers to become a competent engineer.
Enter JQuery
Learning jQuery allowed me to get a leg up on my co-workers. They were great at processing transactions in our SQL database and building efficient PHP classes, but the most important skill none of them particularly cared to do was building interactive UIs. This was becoming more important at the time with the rise of AJAX and I quickly became the go-to person for complex user interfaces.
With a little over a year of experience, but a ton more confidence I left Marketecture and joined a digital agency. My salary was now 50% higher than where I’d started a year and a half earlier. The projects at this place were hard and my co-workers extremely talented. At the time digital agencies were entrenched in flash and the iPad had just come out. Most of my colleagues were seasoned ActionScript pros, so I decided to learn the things they didn’t really care about: mobile web, HTML5 and JavaScript.
As more and more customers were demanding HTML5 applications, large-scale JavaScript applications were starting to become the norm. Positioning myself as the internal leader in these areas brought my skills in higher demand. The pace at the agency was furious and I read books like HTML5 for Web Designers and Hardboiled Web Design and shared what I learned with my co-workers.
Transitioning to Node.js
The agency had encouraged me to get on Twitter to keep track of current trends in technology. That’s where I found out about node.js and quickly fell in ❤. I remember enthusiastically telling a co-worker, “Imagine querying the DOM with jQuery, on the server!” The other thing that struck me was the ability to do things in real time across multiple devices and wrote a blog post about this in Nov. 2010.
Startup Woes
With basically no experience beyond the aforementioned blog post I managed to land a full-time job building node-based APIs for a mobile TV guide app startup. Though I’d only been coding professionally for about 3 years I’d now doubled my starting salary in the field and was using tech that I truly enjoyed.
The startup had about 10 people and we were all very ambitious but basically clueless. Because I’d read JavaScript: The Good Parts I thought I understood how all programming worked and was way too critical of my co-workers work. My quick rise up the career ladder had inflated my ego and the lack of real structure or leadership at the startup didn’t help. I definitely wasn’t my best self there.
A Mentor
When a recruiter from oDesk reached out on LinkedIn about a remote-friendly job for their bay area freelance company I responded positively. I liked the mission of the company and was excited to get out of the tiny startup rat race. It was a much more established company and I’d have the chance to lead a team of remote engineers in building a UI framework for the entire company. The pseudo-management role seemed like the obvious next step for my career and was rewarded with a nice bump in salary.
While the job and team were interesting, the biggest thing that the oDesk job gave me was a mentor. My manager believed in me. She trusted me. She corrected me forcefully when I stepped out of line. She helped me change the way I thought about my career, encouraged me to get involved in public speaking, fill-in gaps in my knowledge and helped me smooth a lot of my rough edges. Having a great boss was incredible for my career and for me personally.
A year and a half later we decided to move to the bay area. My manager helped me negotiate a fantastic cost of leaving increase and ensured the company helped pay for the move. She also told me she was leaving.
Discouraged, after moving to the bay area, I contacted Netflix and interviewed for their mobile team. I landed the interview, but was absolutely crushed by it. (Who even knows how to design a data structure for a Rubix cube!?!?) A few weeks later my former manager invited me to meet some of her colleagues at PayPal.
Big Tech Life
PayPal had just begun the process of replacing their entire C++ and Java web stack with node.js. It was an exciting large scale process. The interview was purely JavaScript, HTML and CSS questions. No data structures or computer science. It was stuff I used every single day.
My manager helped me start at a very senior level (MTS 2). I was only 5 years into my tech career and landed a really sweet position at PayPal. Yes, it did play into my strengths quite a bit, but I was so lucky.
One of my first early accomplishments at PayPal came after getting annoyed at the pixelated animated gif loading spinner used all throughout the PayPal site. I thought, “Hey, what if we could swap it out with a new CSS3 spinner?” I had to dive through the special C++ code browser to find where it was being set in the legacy application. I contacted probably a dozen people, made my case, etc. Eventually, I convinced them to make the change. It took about two and a half months and it had absolutely nothing to do with my day job.
And that experience sums up what it’s like working at a big tech company. You can have a big impact, but it often won’t be part of the regular work you do and the biggest skill required is not be technical competence, but the ability to communicate well and persuade others to help.
Life at PayPal has been challenging and rewarding. I spend a lot of time training and mentoring devs, have been on teams I’ve loved and organized internal conferences and trainings that have been incredibly valuable. At no time has being self-taught been a burden or even remotely limiting.
A Conclusion
If you are a self-taught engineer and thinking of pursuing a career in tech here are a few thoughts on how to get started and how to make the most of it.
- Learn from Everyone After landing a tech job learn from absolutely everyone. Ask a million questions and read as much as you can.
- Work Hard & Take Breaks Work as hard as you can without burning out. Don’t sacrifice your family or health, but stay focused and determined.
- Become an Expert Find something your coworkers don’t like to do and get really good at it. This will help build your value, your confidence and potentially open up new job opportunities.
- Share What You Learn Once you learn something new, share it! Your insights & experiences matter and learning to communicate those ideas well will help you throughout your life.
- Find a Mentor If you have the opportunity to work for someone you respect that can help guide your career, take it!