Novice Newcomer to Professional Programmer
"Have patience. Find a mentor."
Backend Software Engineer
"Don’t be afraid to ask for help."
"Done is better than perfect."
Full-stack Software Engineer
"Create projects that solve actual problems in your life."
Front End Software Engineer
"Veterans who have been in this field for years will have the same questions you have."
I am what many would call a 'self taught' software engineer. I'm a full-time, backend software engineer at Venmo, and yet I don't possess any formal education in computer science (or anything even close to it). As a self-taught engineer, I frequently get asked how I successfully transitioned into engineering without any formal training. I get this question so frequently that I decided to pose it to five other self-taught engineers. I found their stories informative, inspiring, and perhaps most importantly, validating. Read on to learn how these five individuals transformed themselves from the novice newcomers that they once were, to the professional programmers that they are today.
Q: What inspired you to learn how to code?
Dave: I visited a start-up incubator in New York and watched people design web and mobile apps. It was exciting. I wanted in.
Krystal: Honestly, it was my husband. We had just started dating. As a software engineer himself, he told me that he thought I could program, and program well. I never liked math in school, and I thought math would be connected to basic programming, so initially I laughed at his suggestion. For a year, he repeated: “Hey, I think you can do it.” Finally, he found something that piqued my interest. I’m a huge art fan, so he bought a Typography of the Web course. I ate it up. I wanted to create something with code. He told me about codecademy.com. I finished their HTML & CSS courses and felt inspired. From there, I begin to seek out other resources to continue coding. It was fun!
Shoaib: In short, back in 2014, I had a side business making websites for small businesses. Since I was not a developer (yet), I shipped the development work overseas. On one project, the developer started B.S.ing me —saying 'Oh this part of the site takes 3 months to make...' I was not a programmer, therefore, I could not verify if the job really took as long as he was claiming. Ultimately, the project failed and I had to return the client's money. The fact that I didn't know enough to manage a technical person angered me, and I decided to start learning how to code myself, so that I could have more control over the development process next time.
Richard: I actually learned to code when I was around ten years old. I taught myself BASIC, and then Pascal. I don't remember exactly what drew me into it except that we had a computer (this was 1980 —we had one of the first Apples) that my dad used for telecommuting, and I liked video games and wanted to learn how to create them. Then I got really into theater in high school, and stopped programming around the age of fifteen. Twenty-five years later, I was doing theater and working in New York as a production graphic designer at a newspaper (I did print layout —we used computers, but not the internet), and I slowly began to gravitate back to my early love of programming because:
- I began to crave having a day job that would stretch my brain more than the one I was in.
Abby: My senior year in college I took a Web Design course that introduced me to programming. It was an enlightening experience, but it was way too late to change my major to computer science. After college, I saw friends, previous classmates, and co-workers who had already stepped into the software engineering world. I saw what they were creating and contributing to and I wanted to join in the fun too!
Q: How did you learn how to code?
Dave: I had taken courses in C++ and Java in high school. After that, I didn't code for the next 10 years. Then I enrolled in a 3-month web development immersion course at General Assembly in New York.
Shoaib: I started learning online, first from W3schools, then from CodeAcademy. Eventually, I also took part-time evening classes at the New York Code & Design Academy, a comparatively new coding bootcamp at the time back in 2015. This bootcamp was a door opener for me. It gave me the opportunity to meet other coders for the first time, and it gave me a community of people who I could ask questions of when I was stuck.
Abby: Books, friends, self-study, and Meetups.
Q: When did you start learning how to code?
Dave: I took the 12-week General Assembly bootcamp in the Winter/Spring of 2014.
Krystal: I entertained the idea of going into development towards the beginning of 2014. I didn’t seriously start learning to code until mid 2015. Yeah, it took a while for me to realize I wanted to do it (that’s OK!).
Shoaib: I think I started the coding bootcamp in May 2015.
Richard: Round one: Around 1980. Round two: It was a really slow process with a lot of stops and starts. I began around 2007, doing hobby projects and small scripting tasks at work. Some time after that, I remember a two-year period there where I gave up on the idea of actually doing it for a living, because I didn't want it to colonize my mind. Then I changed my mind and started thinking seriously about doing it professionally. At the beginning of 2012, I committed myself to that path by going down to half-time at my job, in an irreversible way. I got a friend of mine the gig of doing half my job, and told her —and only her —what my ultimate plan was, and that she could have my whole job eventually if she could stick with the part-time gig for a while. I felt I needed the extra time every week to ramp up my skills, but once I took that step, I was on track to either run out of savings or land a software development gig.
Abby: Fall of 2016.
Q: How long did it take you to secure your first coding job, from the time you started looking, to the time that you received an offer that you accepted?
Dave: Within a few weeks after finishing the course, I took on a full-time freelancing role for a startup that lasted for two years.
Krystal: Three months of actively looking. FYI, I’ve since realized this is unusually fast for someone transitioning into their first coding job. It's a normal timespan for your second, third, etc. coding jobs.
Shoaib: So I came from a very non-technical background. After I completed the bootcamp in the summer of 2015, getting a coding job was not even my priority. I was not confident enough to apply for a technical job. I was happy enough being able to make static websites and understand code a little better. However, right after completing the coding bootcamp, I started teaching others how to code in a small paid setting. That gave me the teaching experience that I needed to get hired by CUNY in 2016 to teach TLC laws. Meanwhile, I started my Master's in Computer Science in 2016, and graduated in May 2018. After I graduated, I started actively looking for a development job in September 2018, and then finally accepted an offer in December 2018.
Richard: Six months, although I only applied for a few random things for the first three months, during which time I didn't feel that I was really ready. Once I did feel I was ready, I got more systematic about the job search, and it took me another three months from that point.
Abby: Around a year.
Q: What's the most important thing you wish you knew/understood when you first started learning how to code that you know now?
Dave: Programming is hard. Early on, you may get frustrated or overwhelmed. Remember that even the "experts" have knowledge gaps. They too rely on StackOverflow, and occasionally create bugs :)
- Don’t be afraid to ask for help. Sometimes you need to try something for hours on your own. Nevertheless, there will also be times that you need another pair of eyes. Don’t be afraid to reach out if you’re stuck.
- Make sure you google your problem/error message before you ask for help. Typing 'stackoverflow' after your question generally results in better results.
- Git isn't as scary as it seems at first. Whenever you find yourself frustrated trying to figure out what it's doing, go to this site. It won't help you with your immediate issue, but it will make you feel better.
- It is very common for people to be unable to imagine themselves as "real programmers". The lack of ability to make that cognitive leap definitely affected me for years before I got the confidence to get serious. And I am literally a while male who started coding in the 80s, so you know if someone with all my pre-existing privileges and advantages had a problem with that, it must be a common issue. Now that I have been getting paid to program for the past five years, I cannot stress highly enough that there is NO SUCH THING as a "real programmer". There are only gradations on a continuum of experience levels. Also, read this. It's a great article about what "real programmers" look like, with a plot twist in the middle.
- Don't be intimidated by the jerks that you meet in this business (and there will be a few). You can safely ignore them and their advice. The very best programmers are often nice, humble people. If they didn't know how to listen, they would never have gotten to where they are.
Abby: Success doesn’t happen overnight. When you first start learning how to code, it's frustrating and confusing, but over time it becomes a little less frustrating and less confusing. Some days will be easier than others, but as you'll see, veterans who have been in this field for years will have the same questions you have. Coding is always evolving. Maintain an open mind, keep learning, and be kind to yourself.
Q: What advice would you give to someone who is considering transitioning into software engineering?
Dave: Start playing with programming. There is no shortage of free online resources to start learning. See how you feel after giving it a shot. If you are the type of person who is an effective self-teacher, consider a free intensive online course or sign up for a paid course. If you prefer an in-person traditional learning environment, you may want to consider a short-term bootcamp. While some of them require payment upfront, there are others that allow you to pay down your "tuition" over the course of your eventual employment. Have patience. Find a mentor.
- Honestly, think hard about whether this is what you really want and whether you’re willing to put in the work. It will be incredibly frustrating. It’s a field where you constantly have to learn. It may not be for you and that’s OK. I recommend reading this reddit post to help with your journey of self-realization.
- If you decide to do it, make sure you have support and attend Meetups where more seasoned professionals and/or other learners will be. It will be hard and you will have questions. Give yourself the best chance of success. Also, don’t be too hard on yourself. Learning to code takes time. You will get there; stay strong!
- APPLY EVERYWHERE! With most jobs, it’s first and foremost a numbers game. I recommend applying through these job sites.
- Prepare for the interviews! I recommend LeetCode and Interview Cake for beginners. The classic Cracking the Coding Interview is great, but not beginner friendly. Still, if you’ve got the patience for it, power to you!
- Though not necessarily advice, here are some helpful educational links on APIs, and the differences between frontend, backend, and data engineering:
Shoaib: Done is better than perfect.
- Give yourself a solid foundation in computer science and programming basics. Take classes like this one, and when you get some programming under your belt, take classes like this.
- Don't worry too much about the framework of the moment, or even the programming language of the moment (although you do have to learn at least one programming language well to get started!). You will have to constantly learn so many details about frameworks and systems every day on this job, that the permanent things you want to store in your brain are the fundamental concepts —all the other stuff will end up being crowded out and replaced by similar but different arcane minutiae on your next project anyway.
- Create projects that solve actual problems in your life, which gives you a feeling for what programming can do. For instance, I created an attendance website for my soccer team, because all of the existing solutions at the time either didn't do what we needed, or came with too many annoying bells and whistles.
Abby: It’s not just about coding, but also learning the fundamentals of it all. It's easy to get carried away with shortcuts like ES6, jQuery or frameworks. You'll take things for granted and never really understand how or why they work under the hood. Take the time to learn the fundamentals so then you'll have the solid foundation to move around from language to language. Dabble in some C++ and you'll see what I mean :)
Q: Any additional thoughts about your transition into software engineering?
Dave: I would not have learned as much as I did in a 3-month period had I not joined an in-person bootcamp. And five years later, I'm still in contact with classmates.
Krystal: It will be hard. Figure out what calms you and helps you get your head back in the game. There will be frustrating times. You will have anxiety and impostor syndrome. Know that. Own it and prepare for it. Exercise works for some people (e.g. taking walking breaks). I found out meditation works best for me and it’s one of the reasons I chose to work at my current company. I recommend this meditation for frustrating times.
Shoaib: You can get there by envisioning yourself as already being there. Our brain can barely distinguish what's really happening and what's just happening in our head. That's why we get scared when we watch a horror movie, even though we know we just paid to see what we know is fake. See yourself as hired and successful, and you will be.
Richard: While you're in the initial learning phases, make sure to work on projects you enjoy, not just ones you think you should work on in preparation for some future job!
Abby: Coding is only the beginning. Learn computer science fundamentals. Be nice to yourself. Everything takes time. Self doubt is real. Power through those moments and don't give up! You can do it and remember to study study study and practice practice practice!