This month, I've started a new position as an Android Engineer at American Express, and I found myself reflecting on how I got here. I have no college degree, and didn't participate in any coding bootcamp or anything like that, so I figured I'd share my story in case it's helpful to anyone else out there looking to get into development. For me, things started when I was still in elementary school, around age 10 or 11. My parents upgraded the family computer and gave me the old one to use as my personal computer, which I mostly used for gaming. Back then the games I spent most of my time playing were Star Wars games, like Republic Commando, Knights of the Old Republic, and Battlefront, which to this day are my favorites. I liked these games so much that I started looking into their online communities, and quickly discovered modding and level building. While I never got very far into those, I did start to get into basic web development with HTML, CSS, and JavaScript, to build and modify custom pages for my various interests. Admittedly, most of the "coding" I was doing back then was just copying and pasting snippets I ran across on the internet, with little-to-no modifications of my own. My curiosity grew though, and by middle school, around age 12 or 13, I was hanging around on some hacking forums. My parents weren't very big fans of this though, so my computer use was dialed back a bit and I took a long break from anything beyond simple gaming.
Fast forward a few years, after I graduated high school, and the story continues. I planned on studying computer sciences in college, but wanted to travel a bit and so I decided to take a gap year and go down to Mexico for a little while. My girlfriend at the time (who is now my wife), is from there, so I moved in with her family so that we could spend some more time together. Shortly thereafter I started teaching English to make some money, but I wasn't very fond of the work at all. Thus, while working as an English teacher, I spent much of my free time learning how to code. It's been a couple of years since then, but I'll try to link some of the resources I mention where I can find them.
Initially, I wanted to learn how to do Android development. I had an Android phone and an Android tablet, and was fascinated at the idea of being able to build apps that could run on them. Java was the only supported lanugage at the time, so I attempted to learn it with a book called Head First Java. The book specifically states that it's not meant for beginners, and won't cover basic programming concepts, but for some reason I thought I could work through it regardless. Much of the book didn't make sense to me, and I quickly got discouraged and almost dropped programming altogether. Instead though, I googled around a bit and found that many people recommended Python as a good first language to learn, due to its vibrant community, relatively natural syntax, and beginner-friendly content. I decided to try again, this time with Python.
One of the resources I found that was recommended for learning Python was Learn Python the Hard Way, by Zed Shaw. The book was free to read online (and may still be), so I naturally started there. Alongside the book, I also relied on a website called CodeCademy, which had a pretty great free course on Python (and it may still be free). Once I had finished these beginner materials though, I quickly ran into the issue of what now? I couldn't just do tutorials forever, and so I needed to find a new way to challenge myself. I found some people on online forums suggesting coding challenges to force you to try new things, and so I did a few of those, like writing a tip calculator or a pretend store (think like in a video game) or things like that, but I eventually decided to work on a personal project to try something a little larger. I settled on writing a workout generator.
After a few months of learning about development, a coworker that had a small business asked if I could help him take his website off of Wix, and reproduce it on another host. This was technically my first paid gig as a developer, and it helped me get my foot in the door to development as a career. The website is no longer live, and I don't have any archives of it, but it was quite simple, basically a static website written in pure HTML/CSS, with minimal JavaScript. I didn't really know what I was doing but I sort of figured it out as I went. Once that project was complete, I knew that I wanted to do that kind of work full time. I had no degree, basically no experience, didn't really know what I was doing, but I was determined to make it happen. I searched all over the job posting sites like Indeed, Monster, and even Craigslist, applying to jobs and offering to accept minimum wage payment if they'd just give me a shot. Eventually, one of the places I applied to gave me an interview for a PHP developer position. I had never written a line of PHP, but after doing a couple of interviews and a basic CSS change to a Ruby on Rails app as a sort of coding challenge, they gave me the position and paid me \$10 an hour for fulltime work. This was my first big break into the tech industry, and really what helped launch my career into development.
Nearly a year into my first development job, I got a bit arrogant because I'm a quick learner, and felt that I should be paid more. I attempted to negotiate a raise but didn't get as much as I had hoped for, so I lined up another job as a freelancer and left. Over the course of the next few years, I took on several different jobs, doing mostly web development with PHP, but also branching out into Linux system administration from time to time. I wasn't a huge fan of doing web development though, and so I decided to try getting back into Android development. I knew a bit more about general development terms and methodologies, and figured I could try giving it another shot. I worked through a few of the chapters in the Head First Java book, but then switched gears to focus more on Android specifically, by enrolling in a free course by Udacity for building Android apps. After completing the course, I built a simple number guessing game to practice the new skills I had learned. I also went and got the Associate Android Developer certification by Google. With a sample of my work, and a new certification, I felt confident enough to take on contract work as an Android developer. I did all sorts of odd jobs, from live wallpapers, to dating apps, and anything in between. Sometimes I was responsible for starting a new project from scratch, and other times I was only hired to do some bug fixes or add a new feature.
My journey began back in 2015, and now, 4 years later, in 2019, I have started as an Android Engineer at American Express. I still haven't gone to school for computer sciences, but I do take the time on my own to study things like algorithms and data structures and other sorts of topics that I would have otherwise learned there. If I could go back in time, I probably would have tried to find a way to study, because I'm quite certain it would've made my life a lot easier when I was looking for jobs and I would've hopefully made fewer mistakes along the way, but I'm happy to be where I am regardless and I don't really have any major regrets. I would caution anyone who wants to attempt to go down the route I did though, for the very reasons I just stated. You will have a much easier time finding work, keeping work, and negotiating pay if you have a degree. I hear college is also quite a bit of fun for most people.
If you are unable to go to college though, then please don't hesitate to reach out to me if you have any questions or just need help fixing a bug. I don't have a ton of free time but I would be more than happy to lend a hand to someone who needs it. I owe much of my success to online forums and friends I've made along the way, so I'd be happy to be there for others who need help getting started as well. With that said, best of luck and happy coding!