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.
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!