TLDR; This post is a collection of my personal musings as I have been a working web-professional for a little over 10 years.

Where I was

Ten years ago, I was considered a hybrid designer/developer, which was very unusual at the time. These two roles were rarely combined and most companies tried to hire you as either a designer or a developer. I had enough design chops to satisfy most web design and branding needs for the agencies I had the pleasure of working with. Being able to design and implement designs was a huge advantage in the world of front-end work. It allowed you to predict difficulties, adjust expectations, and steer client asks towards solutions that were within the limitations of the software.

Drupal and Word Press were the main platforms that I honed these skills in. I learned to design in the constraints that these two platforms presented, and build sites that were fast. It was around this time a co-worker pushed me to start adopting "responsive" design and dev techniques.

We cut our teeth on this early idea of a single site for mobile and the desktop, fighting through float position errors, browser compatibility, early reflow techniques, LESS, SASS, etc.. Basically making up our own workflows as we went. After a while I had built a basic set of tools for working in this new world of web.

After my last agency job, I started working mostly on tools and sites for internal development teams, being a part of the engine that enabled these organizations to transact, communicate, delight, and entertain their clients, their customers, their guests. This was the start of a transformation for my own goals. I didn't just want to get approval for aesthetics or functionality for the person paying for the work. I liked improving things for the those guests in a place where every fraction of a second would ultimately change their perception of our service or product.

Build better. Build faster. Build cleaner. The users will come back and stay.

Where I am

The past two years have been another wave of changes for me. I have moved away from doing design work outside of helping other designers discover solutions, or polish interactions. I have taken up more responsibilities as a developer, adopting JS development tools like Next.js, and GraphQL to manage the shape of data in the UI. As the JS tool landscape continues to settle down bit by bit and find its footing, there have been things that feel foreign and things that aren't.

Modern JS development has added a lot of convenience to certain problems, such as expressing lists of things or displaying objects from disparate api requests. At the same time it made familiar things like, build tasks for styles and state into blockers. State management is still something that can lead to a lot of cognitive overhead. In Redux the process was really hard for me to grok but local state in React 16+ is a lot easier for me to keep a mental model of.

Currently, a lot of the front-end JS tools I use are starting to move towards SSR (Server Side Rendering) optimization, which is something that feels like the inevitable solution every web framework arrives at, or a hybrid of some kind that pre-renders some things and hydrates others in real-time(ish).

I am continually impressed with the engineers that I work with. They have what appears to me to be such an easy time making decisions and learning from them to make their future efforts easier. Especially in my current role at IBM, our team sees everything as temporary.

The code you wrote will need revision.
The tool you are using will be replaced.
The design you made is just the first of many.
Everything will change.

This approach to product creation has really taught me a lot. Make the thing well, quickly, test it, and repeat until you have something that has overcome enough learnings and changes that you realize there may be a new way to answer the asks from your users.

Temporary ≠ Meaningless

Temporary tools are there to help you to answer the right questions.

Where I'm heading

The past two years feel like the eight before them compressed. So much experience crammed into such a small space. Sometimes it has been hard to know what I am aiming for while absorbing this new skill set.

I know I still like seeing a project launch. I feel satisfied and successful when being a part of a change inside a team. Sometimes in these larger organizations those successes can feel small. There is a metaphor I've kicked around for years with a buddy of mine to describe this, Glacial Change.

Customers/Clients/Consumers see the tip of the iceberg but rarely do they perceive what is beneath the water's surface. The big chunk of ice can be hard to guide or change, but it is changing. Your efforts on the internal team at your company seem so small but with every commit you are guiding the monolith of frozen water.

My focus is on that space below the water. Making changes that to the user should probably be nearly imperceptible. Dieter Rams would say, "Good design is as little design as possible." I think his same rules are apt for development as well.

See you all in 2021. Cheers 🎉

Updated 12-31-2020 to enhance clarity on some points and improve transitions.Updated 03-28-2021 a kindly editor asked me to push some updates.