Journey to Software Engineer: Chapter 2

I recently concluded what I consider to be the second chapter (of many) of my journey to become a software developer. I finished the second part of Lambda School’s full-stack web development coursework, which was focused on front-end development by learning React. Although the coursework was focused on React, I ended up learning more about JavaScript than I expected. I started to fully understand how to read documentation, and how to understand the mindset of the developers that created different libraries and frameworks. I originally went from copy and pasting boilerplate code and figuring out how to make it work to reading documentation and figuring out why it works. This helped me gain confidence, because now I could learn anything I wanted and fully understand it!

I think learning React really helped me understand how the front-end should work. The idea of the “Virtual DOM”, state, component lifecycles, and functional/class components are all powerful ideas that are fundamental for the front-end. I came across many instances where I found myself trying to pass data up to a component, so Redux made my life a lot easier as well. It was also pretty fun working with single page applications via React-Router, which was different from what I previously knew about routing (which was via an Express back-end). Something I’ve been thinking about is the impact of having all of these libraries within the application, and if there should be a limit. While the functionalities of all of these libraries are amazing, I feel like it could be too much if we’re adding library after library. I’m scared the application may slow down and cause longer load time, which could potentially cause accessibility issues for people without fast internet. Maybe I’m overthinking it, but it was something to think about as I was adding package after package. I’ll look into this later on, but for now, it was fun learning the different libraries.

For our project week, we made a note-taking application by interacting with a Notes API that the school built for us. It was a week long project, but I ended up finishing in a few hours, so I had a lot of time to play around with new technologies that I had been reading about. On my last chapter, I said that I was learning GraphQL. Well, I decided to do something with that!

I created a full-stack application of the same project (note-taking application) by writing a simple GraphQL back-end with Express and MongoDB and added simple authentication integration using Passport.js. I used React+Apollo for my front-end. My original front-end code consisted of Redux for state management, but I replaced that with Apollo after realizing I wouldn’t need state management for my app due to the power of Apollo. I saw a lot of similarities with Redux and Apollo (connect vs graphql functions), and having good fundamentals in JavaScript helped me learn Apollo pretty quickly. There were a lot of “Gotchas” that I faced with Apollo, but understanding how React works and how the component can be updated helped me maneuver through the issues and problem solve! There was pretty little documentation of some of the features I was trying to integrate, so I referred to some pull requests of the Apollo Client repo, which was interesting and fun compared to just reading documentation. I was pretty proud of creating a full-stack application, albeit very simple, in just two days!

I can definitely find myself getting better as a developer, which is honestly a rare feeling. I feel like the more I learn, the more I learn that I don’t know. But, I gained a lot of confidence in my learning abilities and my skill-set, and just want to keep learning more! I’ve been learning bits of a lot of topics, including OS, SQL, DS&A, and Django! I’m excited for the back-end portion of our coursework, where we’ll be learning Node+Express with SQL. Because I had previous exposure to Node+Express, I’m going to try my best to create a few small projects with Django, a framework that I’m less familiar with. I’ve also been slacking on learning more algorithms and doing code challenges, so I’ll try to focus more on that as well.

Most importantly, I realized that I really love doing web development, so I find myself wanting to learn more and more. I’m super glad that I switched into this field, and I’m excited for what’s to come!