Reflecting on 6 years of web development
As 2018 drew to a close, I started reflecting over where I’ve come in my software development career thus far. It's been quite the adventure and the year ended with me settling into a new company and picking up a new(ish) tech stack to work with. In the process of picking things up in a new place, I was actually reminded of many experiences from the past which had enabled me to be at the point where I am today. This article serves in-part as a look back - a kind of origin story of where I’ve come from and what I’ve learned. It is also a look ahead and a testament to the resiliency of a software language that I’ve come to enjoy writing so much.
I asked my manager for permission to attend a web development conference, to supplement my learning, and my request was approved. In the spring of 2014, I attended O’Reilly’s Fluent conference in San Francisco and had the privilege of returning the next two years! In my first year of attending the Fluent conference I learned about node, npm, and a host of other technologies that I was amazed existed. I returned from that conference so excited and quickly started digging into all that I had learned. After the conference, I still made many mistakes but I am thankful for the time that I had then to try, fail, and learn. I learned a lot from that time in my development career and it would position me for more learning to come.
In the summer of 2016, I changed industries and jobs to transition from being an Electrical Engineer, who wrote web applications, to a Software Engineer. I wanted to focus on frontend technologies full time and I wanted the work experience that I was gaining to match. At this point, I had a pretty good grasp of the basics of frontend development and soon found myself employed as a Software Engineer at a digital agency.
My first project was a proof-of-concept, rapid prototype that complimented the components and layouts that the UX and UI designers on my team were producing. It was a small scrum team that worked closely together to redesign and improve the experience of a large airline’s website. Another frontend developer and I used Angular 1.6 to build UI components which demonstrated the responsiveness of the designs and how users would interact with the components. As much as possible, we built our components in isolation, which helped us prototype things quickly. We could then compose the components to form a layout or combine several components into a “widget” or whatever else we might need. As our library of components evolved, the speed at which we could create new layouts for the designers increased dramatically.
I also became involved in a similar project for another portion of the client’s website. This time it wasn’t rapid prototyping but rather building out user-flows for new features and products for deployment. Our team of developers worked with jQuery (due to the client’s requirements) to build out a similar component library that we used to compose the new flows and features. I was learning the value of the thought “everything is a component”. Once we got the core components working well, composing them into more sophisticated components or layouts became much faster.
The Unix operating system has a philosophy: “Do one thing and do that one thing well”. This philosophy allows the system to be composed of many small bits of program logic that are easy to understand and test in isolation, but when combined, form an intricate and powerful system. This philosophy performs just as well in the world of frontend development for user interfaces. I learned that developing small components in isolation made authoring and testing much easier. Once this was done, creating complex layouts by composing these components together was simple and straightforward.
This past year especially, I’ve found it easier to keep up with the changes and improvements in frontend development. This is not at all to say that I know everything, or that I am even close to knowing everything! However, I’ve come to see a value in being able to identify the areas in which I have gaps and keeping tabs on the technologies I haven’t used. Then, at the times that I’ve need them, I know the appropriate resource to turn to in order to learn what I need.
Looking back on my career thus far, I’m thankful for the things that I’ve learned along the way. By far, the most beneficial thing that I’ve learned is how to learn things quickly. There is a saying that the things you remember the best are the things that you teach yourself. I have found this to be true in my own career as a largely self-taught developer. I’ve made many mistakes along the way and have a lot of code that I’d like to re-write. But the beauty of understanding that is in realizing how much I’ve learned from all of the mistakes and successes. Becoming a good web developer is not an overnight process or something that can be achieved quickly, but rather a methodical “learn one new thing every day” approach that bears its fruit as the days become weeks, months, and years.