Logo

The 439 day Journey that Changed my Life

8 min read · September 10, 2018

Category: Web DevelopmentTagged with: JournalReflections#100DaysOfCode
Timelapse of cars driving through the mountains with starry sky

“A time-lapse photo of road during nighttime” by Ricardo Rocha on Unsplash

Goal setting is best approached by breaking larger goals into smaller approachable ones. Setting micro goals that align with the end goal allows for consistent checkins and celebrating when you achieve them.

Spring 2017: I was beyond displeased with my current work situation. I loathed going into work everyday and being a punching bag for what wasn’t going right in the organization. My closest coworkers were amazing and our relationship was part caring about each other and part informal group therapy. They are all that kept me somewhat stable. But this isn’t about that place, and details aren’t important or beneficial. My work environment was beyond toxic, and I needed an exit strategy.

At first I started looking and applying for another job in the same field. This lead to an interview scheduled for a similar position in a smaller organization. During this search process I also began to question if pursuing this same career path was the best approach. This conclusion was once clear, but continued to grow hazy. Approximately a week before a scheduled interview, I decided to try out modern web development to see if it would be something of interest.

The Start of Something New

After some research I decided to try out Free Code Camp. I didn’t want to invest any money up front in case it was another flighting fancy. Within the first two days, I was hooked. I canceled my interview and decided to focus on exploring this new skill in an environment I was already comfortable in. I flew through the sections on HTML and CSS with ease. Coming up to the foreboding gates of the JavaScript section filled me with unease. Could I actually handle logical programming? Should I stop and turn back? Maybe I should stay in a field I am good at. There are many sources of anxiety when learning new things, and my perfectionism wasn’t helping either. Determined, and with the encouraging words of several friends I pushed forward.

Starting to work with JavaScript was more complex as expected. However, I found the mental puzzles of basic algorithms intriguing. I would parse through options and potential solutions while I was driving. The mental challenge and feeling when I finally solved a problem was invigorating. There was a sense of mental euphoria after solving a problem before jumping into the next one. Within two months of starting I knew that this is what I wanted to do, but I was far from having the necessary skills to be employable.

I elected to continue teaching myself using mostly free resources for a multitude of reasons. Quitting my job to go to a code school was not a financially viable option, as I was the primary income earner for our family of three. Later on, this also ruled out the concept of internships. There are amazing resources available online to teach yourself for free or with minor investment, Free Code Camp being one of them. The downside of this approach is that there is no one watching over you to provide structure or deadlines. There are no assignment due dates, professional grading, or mentorship. This structure and resources must be sought out by the learner. It is difficult and requires a great deal of internal motivation and self-discipline. I thrive best in self directed learning environments where I can pursue what interests me and push things forward at my own level. People learn in different ways and at varying paces. Traditional educational processes can often fall short of tailoring this to each learner.

I continued to push myself and completed the Free Code Camp Front End Certification in the first 5.5 months. This consisted of completing 8 projects and several dozen algorithm challenges. Near the end of this process, I decided that I wanted to learn React. I purchased my first paid course since starting this journey: Wes Bos’ React course. It was an amazing course and definitely helped me to get up and running faster. I used the final three projects to solidify my initial learning of React. After completing the Front End Certificate I began exploring the back end program at Free Code Camp. Soon thereafter, I abdandoned it in favor of other things that sparked my interest.

One of the most valuable experiences during this journey was joining a team project with two other developers that I had never met. Chingu is an organization which helps coordinate developers of similar skillsets around the world to complete a larger project in approximately 6 weeks. This experience exposed me to working on a project in a team environment, and shore up best practices with git workflows. It also forced me to explort how to break down a a larger application into smaller manageable parts. I have written in depth about this experience here. After completing this project in late 2017, I felt more confident in my abilities and started the job search.

Act 3: The Final Mile

On a long hike, the final mile is often the most arduous. So much has been achieved and the end is in sight. However, I’m exhausted from pushing myself and uncertain if this was a wise choice. Did I push myself too far? Everything is aching, and each step falls heavier than the previous. April and May of this year were disheartening. I had built out several projects to show to prospective employers, was active in the community, and continued learning. Despite my best efforts, the job search was going nowhere. I wasn’t surprised, but it was disheartening. I knew that not having a formal technical education or prior work experience in the field would be a significant obstacle. I pretty much gave up applying to jobs posted online, having received next to 0% response rate from job boards. I suspect that the these items precluded me from making it passed the HR screening. To circumvent this, I focused on increasing the attention I paid to networking, as well as presenting on some topics at local meetups.

Presenting on technical topics can be an intimidating endeavor. Not only can the fear of public speaking come into play, but imposter’s syndrome can further stoke that anxiety. My first real presentation I didn’t have time to get nervous. 3 hours before a meetup, someone asked if I would be interested in talking about Gatsby. I had built out my site using Gatsby and loved the process, so I was happy to talk about it in an informal setting of 10-15 people. When I arrived later that evening I found out it would be recorded. The presentation went well, despite having no time to prepare for it, and was well received. Later on, I would find out that the recording was shared with the developer team at the company I now work for. The presentation on Gatsby was the ice breaker that dispelled the anxiety of talking about technical topics. After building my site with Gatsby I became mesmerized by GraphQL. I dove into learning as much as I could about it, and have since given 4 presentations of the topic. I have written more in depth about confronting the fear of technical presentations here.

In early May I started the interview process for the company that I am now working at, Phase2 Technology, thanks to an introduction from my networking at meetups. I went through a couple rounds of conversations and interviews with different team members, and joined the team on June 11, 2018. 439 days after starting this wild journey I became a professional developer.

Lessons Learned and What’s Next

During the course of this journey, I have found several key concepts that are beneficial when learning new skills. These concepts are not exclusive to software development.

Be Consistent and chip away at your goals: This is a crucial lesson that often gets overlooked. A more experienced developer put this into perspective for me when I was stuck on a larger problem. It is easy to look at the end goal in the distance and become disillusioned of the possibility of traversing the trail. We don’t get there by mentally willing it to be. Goal setting is best approached by breaking larger goals into smaller approachable ones. Setting micro goals that align with the end goal allows for consistent checkins and celebrating when you achieve them. Always be in the mindset of setting goals, working towards them, and adjusting them if needed. If a goal no longer becomes applicable or is clear that it is in not in the direction you want to go, feel free to leave it by the wayside. Consistency helps maintain inertia in achieving these goals. For development, I recommend the 100 Days of Code challenge and local meetups to immerse yourself in the community.

Exercise motivational learning: Road maps are great in the sense that they can help keep a pulse on what technologies are in demand or popular. However, I recommend tempering that with what you desire to learn. What excites you? What is a problem you want to solve and what technologies do you need to get you there? It has been my experience that the time I have spent focusing my learning on something I was passionate about, the more engaged I was. There is a correlation between my engagement and the progress I make. This was a primary reason why I stopped following a specific program after understanding the basic fundamentals of web development. Internal motivation is more impactful than external motivation.

Always be building: Internalizing concepts comes from implementation and discovering the various subtleties to navigate. This is hard to achieve through solely reading documentation and watching tutorials. When setting out to build a project, it is important to determine an appropriate level of complexity. When embarking on a new task, it should always seem barely out of reach. If it is something that seems easy you likely are not challenging yourself enough. Likewise, if it seems insurmountable, the task at hand is likely too complex. Fail fast and fail often, for it is in examining our failures that we can make necessary course corrections and come back stronger.

Network and engage with people in the community: I’m an introverted person, and it takes a lot for me to go into a room full of people that I don’t know and socialize. Meetups and the associated networking can be a very valuable aspect of learning experience and job search. Recognizing this importance, I pushed through some of my introverted hesitations. I learned so much from listening to other people present on things and engaging with them. Consistent attendance to a smaller meetup was one of the largest benefits. I felt comfortable asking people to review the code that I had written and give me feedback. This helped to confirm some things that I was doing well and some anti-patterns to correct.

Don’t underestimate the importance of soft skills: It can be easy to become enraptured with a list of technical skills which a job may need. Technical skills are important and are necessary. However, soft skills are as important if not more so. The ability to talk to people, engage with different perspectives, and display empathy are of crucial importance. We work with people and the products that we make have the opportunity for a positive or negative impact. A person with amazing technical skills, but poor soft skills can be disastrous to a team environment.

Never stop learning: There is always more to learn, especially in software and web development. We can always be pushing ourselves further. Always be curious and dive into things that are intriguing to you. I have been focusing on static typing within JavaScript and am starting to get into ReasonML. More to come on that in the future.

There are many great resources available to those interested in learning web development. The proliferation of these resources are the main reason I was able to learn a new skill while still working a full time job and maintaining family time. These resources need some extra considerations and engagement by the learner, but they are an amazing way to learn new skills. I hope this article and lessons learned proves helpful in pursuing your own journey.

Related Posts

Three Lessons Learned from Overcoming the Inertia Against Technical Presentations

Fear of speaking and feelings of an inadequate technical knowledge base can often be a paralytic combination, especially to those newer to a technical field. Imposter syndrome and feelings of… Read more

2017: A Year of Rediscovering Myself and My Passion

2017 was the start of the journey from the directionless doldrums to an unbridled creative passion. I started the year looking for a job in a similar field as what I currently am employed in… Read more

Top 5 Things I took away from Completing #100DaysOfCode

The first round of the 100 Days of Code challenge has completed, and it served the exact needs that I was looking for. Primarily, I was hoping for added motivation to keep pushing the needle forward… Read more