After almost two years since starting on freeCodeCamp, I began this week my first job working as a software developer for a large company. Up until the end of 2017 I was a university instructor teaching language and literature. I got started on fcc in August 2016 when I decided that I wanted to make a career change into software and web development. Although I used several other resources along the way, freeCodeCamp remained the backbone of my re-education strategy throughout the career-change process. No other resource on the internet comes even close to giving you such a comprehensive roadmap on how to move from complete beginner to web developer.
At many stages of my journey from humanities instructor to software developer, the skills I learned on fcc were crucial. I’ve outlined my journey below. I do this to encourage and help others and to express my deep gratitude for the freeCodeCamp community. I find it so amazing that freecodecamp manages to be both completely free and the best resource out there. I’ve donated to them, and I encourage others who have profited from the organization to do so as well.
- I have a bachelors and a PhD in literature.
- As an undergraduate, I also took many economics courses, and one computer science class, Introduction to Java.
- When I started freecodcamp, I knew not a single thing about html, css, etc. My only prior programing experience was the Intro to Java course I had taken 12 years ago in college.
How I worked on freecodecamp:
- I worked for 1.5 years on the fcc curriculum. There were a few months when I did nothing, and then some months I did a lot. I ended up completing the FrontEnd certificate, all the projects in the DataVis certification except the DugeonCrawler game, and then all the smaller projects on the BackEnd Certification and one of the Dynamic Web projects, namely the Voting App. (Note: fcc has since changed the curriculum, so this description applies to the older curriculum).
- The first projects I did (like my profile site) felt quite overwhelming, like I was juggling all at once many brand new technologies that were all strange to me (i.e. html, css, jquery). After a while, things very gradually seemed to become more manageable, and things that earlier had been tough became second nature. There is a gradual snowball effect, where the more you know, the better your intuition becomes on how to fix problems and learn new things.
- I started to feel ready to apply for jobs once I completed the Voting App. This project tied together everything I had been learning (frontend development, React, data visualization, as well as MongoDB, npm, node, etc). I also felt that with this project I had essentially surveyed the entire landscape of web development. Of course, there still exists mountains of things I don’t know, but I had the feeling that I now had a rough sketch of all the terrain one generally might cover in building web apps.
Other resouces I used:
- I audited a university course on Haskell. Haskell has become my favorite language. It is a difficult language, but it is so well thought out.
- I took a Coursera course: Algorithms Part 1, Princeton University. The assignments were deliciously challenging.
- I took Stephen Grider’s Udemy course “Node with React: Fullstack Web Development” in preparation for doing the Voting App. This course was amazing and really helped tie together my knowledge from the fcc curriculum.
- I worked part time at my university’s ITServices, and for part of that time, I was programming. The things I learned on fcc came in incredibly handy here. For example, I was using jQuery to modify the html and css of web pages, and I was working with a website written in React.
My favorite parts of the freeCodeCamp curriculum:
- Learning Heap’s Algorithm for the “No Repeats Please” algorithm challenge.
- React! It turns the chaos of programming a webpage into object-oriented programming. Pretty cool! It’s also a very hot technology right now, which means that you can go to a lot of interesting meetups, or read a lot of interesting articles about how it is used in the industry.
- The Voting App project. It tied everything together.
- I’ve seen this on the fcc forum before, and it became my motto: It’s a marathon, not a sprint. Getting to where I am now required a lot of time and persistence. I definitely had days when nothing seemed to worked, and then others when things worked better than I expected. The projects also require a lot of time. Luckily, my day-time job often wasn’t very demanding, so I sometime had hours in the day to devote to fcc. The last four months before getting my job, I was unemployed and working full time on fcc and related programming courses.
- A lot of learning how to program is about dealing with frustration. When things don’t work, you have to learn how to keep a level head and calmly find a path forward. Dealing with frustration is part of the learning process.
- Find the resources that work for you. Retraining to become a developer is about taking your education into your own hands. Fcc is a wonderful guide, but don’t expect the fcc curriculum, or another other resource, to spoon-feed you everything you need to know. You need to learn where to get help: use the fcc forum, look at other courses, use stack exchange, talk to people, etc.
- Note on paid coding bootcamps: I looked at several bootcamps along the way, but decided in the end that they were overpriced, and that I could learn on my own what they were teaching. I value patient learning and personal persistence over the fast-track spoon-feeding that I saw bootcamps offering. I would be really careful about making sure that the bootcamp you sign up for is a good one. Good bootcamps do offer at least one fanstastic resource: their career-advising and alumni network. One bootcamp, the now defunct DevBootCamp, gave me the contact info of a former alumn, who I contacted. This alumn then gave me the bright idea to apply to work part time for my university’s ITServices. This was a crucial linchpin in my career change strategy.
- Make sure to meet up with and talk to people who are programmers so that you can keep your career-change strategy fresh and perhaps even find a contact that leads to a job.