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.

Getting started

My start in web development actually came as I was starting my career as an Electrical Engineer. When my manager asked if I could create a web application for an industrial device that I was working on at the time, I quickly went to Google and searched “How to make a website”. I jumped into the rabbit hole and I guess you could say that I’ve been there ever since. I taught myself HTML, CSS, and the basics of PHP that I needed in order to make things happen. To truly write a web application, though, I needed JavaScript to handle interactions and much of the business logic for the application.

By the beginning of 2014, I was writing quite a lot of HTML, CSS, and JavaScript for this application that I was developing. However, I was the only one working on this and no one else at the company did web development. I didn’t have many resources to seek advice from when I got stuck or was unsure of the best method. To complicate things, it seemed that every web resource I found had a different approach. I was pretty confused.

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.

Everything is a component

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.

React taught me modern JavaScript

I was in between Angular and jQuery projects for a while. Besides learning the value of component-driven development, I was mostly refining my skills of HTML and CSS. The majority of the JavaScript I was writing in these projects was pretty simple and mostly DOM manipulations: toggling CSS classes and the like. But I knew that I needed to continue to improve my understanding of JavaScript as well as get some experience with the framework that was becoming so popular in the frontend scene: React.

Reading through the React documentation helped me get an initial understanding of how the framework operated. There was a nice tic-tack-toe game that the documentation used as an example. Everything was very component-driven in React and I found that really nice. However, there were many cases when I would come across JavaScript syntax or some code that I wasn’t familiar with. I realized that it was time to learn all the benefits of ES6+. There is a saying that “React is just JavaScript”. While this isn’t quite correct, there is a truth that is echoed by many React developers: React teaches you to become better at JavaScript. I found this to be very true. Developing React applications over the past year taught me more JavaScript and design patterns than about the framework itself.

Learning how to keep up

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.

You don’t need to know everything about frontend development, or even JavaScript. Even if you were able to know everything, you surely wouldn’t remember it all at once. But you do need to know the general areas of the gaps you have, as well as understand the use case of when you might need to start filling in those gaps. Once you are in a place of understanding that balance, it is a lot easier to feel comfortable with the speed in which you are picking up new concepts. Learn what you need for the task at hand and always be learning a little extra in order to conceptually know where your other gaps may lie.

In reviewing the year just past, I realized that this was something important that I had learned. I changed companies this year and picked up a tech stack (Vue.js) that I had never used. However, I had listened to several podcasts on different Vue concepts, had skimmed some introduction documentation, and read a couple articles on Vue. This identification of my gaps had allowed me to pick up some ideas of Vue without having any experience using it. Once I started writing Vue components, it was only a short and painless time before I was productive and contributing to the projects. After all, it's mainly JavaScript at the end of the day.

Looking back and looking ahead

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.

I’m also thankful for the reach and diversity of JavaScript: I’ve had the opportunity to live and work on three different continents by writing Javascript code. My experiences have all tied together because each framework built on JavaScript helps to teach you a little more about the underlying language. In five years time, I won’t be surprised if React and Vue are things of the past. jQuery is on its way out but has almost transcended to become part of the native JavaScript language. Many of the frameworks and libraries that I’ve worked so hard to understand in the past five years are now obsolete. But at the core of it all, JavaScript continues to keep getting better. Brendan Eich confidently champions: “Always bet on JavaScript” and I think he’s right. My goal for the years to come is to continue refining my knowledge of this language and its many applications in web development.

Like what you've read? Give a share:

  • Tweet
  • Share on LinkedIn
  • Share on Facebook