I love being a web developer, I really do. Every day is different, and it is such a rewarding, enjoyable and mind-tickling job. The past 24 months - including an unmentionable 2020 (you all know why…) - have seen a pivot in where I want to focus work - and where I find enjoyment.
I still see myself as a full stack developer, and still love working with PHP, making web sites and web applications… but I’ve also had my eyes opened to how to be a more productive, happy and engaged developer. Not that I wasn’t productive or engaged before - but the web has changed… and I feel that I let myself fall behind the change, muddling around with platforms that have not evolved, platforms that just make me miserable, and platforms that make the simplest of tasks mind-bogglingly complex.
So where do I stand now?
For any web dev project, Laravel is now my go-to foundation. Hands down. As an experienced PHP developer, I’ve found it so refreshing to on-board myself in to the Laravel world, and while it has opinions, it also backs them with logic that makes sense.
But what has been so thrilling is that my first Laravel project went live in early 2021 - a rather large full single page application (in Vue.js) built on top of an API in Laravel. Ambitious for the first project, hey? It has the basics - reading and writing data - but also exposed me to UX-improving features including web sockets, broadcasting and events, plus exploring the Vue.js ecosystem with Vue Router and Vuex stores.
Oh, and better yet (I think this is cool at least), I used web sockets to help update Vuex stores as someone else changes data so it doesn’t become stale. How freaking cool is that?
Ooh ooh ooh, and better yet… the client is so thrilled! Since then I’ve had another project go live, and two more in the works.
The Laravel way of things is logical and makes sense - from authentication to its file structure to its helpful under-the-hood work. It is so enjoyable to work with and makes me a happy coder. And who doesn’t love a happy coder?
Statamic has been the most reviving breath of fresh air. A content management system that is made for developers to make it work for web content authors. That doesn’t need a database. That is lightning fast. That is modern, flexible and extensible. Sounds too good to be true, hey? But it is true - and has been so mind-blowingly impressive to work with. And now is my go-to CMS - not only for me as a developer, but for the structured approach to content for authors.
There are so many standout features - including performance, flexibility, image processing and asset management - but the Bard editor (and Sets) is workflow-changing for me. On the surface, Bard looks basic. Really basic. Too basic. But when you start building Sets, it becomes a clean and customisable editor to help authors create complex layouts without knowing anything about the underlying markup. I hate the term “page builder” - actually, I hate page builders for their nasty markup and bloat, but that’s another thing - and I feel Bard gives developers the freedom to create Sets for different layout components, and manage their underlying markup with bite-sized, manageable and intelligently-located template files - it gives authors boundaries to work in (leaning to clean template-based code) but also flexibility to use these components to structure their own layouts - really good for content-based pages that need a bit more “pop” than just a slab of text.
When a new Set needs to be created (or tweaked), it is as simple as building a new Set Blueprint, and an associated snippet of HTML for the template, and bang, done. Pair that with git-based deployment and it is a streamlined development experience that is great for distributed team work too.
We re-built the Mity Digital site with Statamic. And it’s damn fast. It also gave us freedom to create more free-form page layouts but not have to worry about complex templates or markup - and when adding new pages, it’s all about content, not about code. But the joy that I get from building in Statamic has seen a shift at Mity too - we’re now looking at using Statamic for our recommended CMS for most new projects. Not only for the development experience, but the tools that help us create an authoring experience that works for the client, their site, their layout and their content needs. Without the need to get stuck in to code at authoring time.
I’ll admit that when I first saw Tailwind CSS I thought it was hard to read (in the markup) and didn’t “get” why you would use it. So I started to build things with it - not just reading the documentation, but trying to build layouts to see what it was all about, how it worked, and whether it made sense. And yeah, my mind was changed - definitely one to play with for it to “land”.
I’ve fallen for Tailwind CSS for a few key reasons - the first of which is the output file size (and lack of writing custom CSS). Using PostCSS during the build process, the output CSS is minuscule - especially when gzipped. Compared to my old site, the CSS for this site is less than a third when gzipped.
The next key reason is its standardised naming conventions - which is superb for team work. From configuring colours (and their shades) through to base utility class names and responsive controls, we are all speaking the same language. Looking at the markup, you can easily see what classes are actually in play, and not need to dig through lines of custom CSS and varied or inconsistent class names to find the spot to change or culprit to fix. When working as a team, when everyone speaks the same language, everyone is on the same page - and Tailwind CSS’s approach to naming makes sense and helps define that language.
Just ask Cady Heron. She gets it.
Occasionally I need to write some custom CSS - but its for that extreme edge case of something really unique. Other than that - using first-party plugins like Typography, Aspect Ratio and Forms, paired with the core Tailwind CSS framework, everything you need is there, ready to go, and so descriptive. Tailwind’s configuration - and extensibility - is superb to also allow you to extend the classes on offer while staying with the same terminology: need a new grid layout, set the font family, a height-based media query - all configurable within the Tailwind CSS config file. And again, we’re all speaking the same language, so the entire team are instantly on the same page.
This is a new area for me - and I have an internal project in mid-build using Inertia.js - and Laravel, and Tailwind CSS. I feel like it is a capable and streamlined tool for building a SPA without the complexity of building the underlying infrastructure (including routing and state management) from scratch. Pair this with Laravel Jetstream and you can get authentication, with 2FA, up and running in minutes. This then gives me more time to actually write the app, not the underlying infrastructure.
While I’m only dipping my toe in at the moment, I can see an upcoming project that will most likely end up in Inertia.js: it’s a perfect fit for an admin-style portal, and from my experience with Inertia.js, it is a streamlined, focused and time-efficient approach.
What I really like is that I’m not tied down to a specific UI library or set of components. I can continue to write my own Vue.js components to help make my apps do exactly what they need to do - and do this with ease too, not needing to try to break out of Inertia.js’s ecosystem.
It’s the balance of helpful tools vs freedom that makes development such a joy - there are features and components to help get up and running and get building, but also freedom to extend when needed. I love opinions - but also love some degree of freedom. And Inertia.js does just this.
This shift in my own mindset is coming through at Mity Digital too, with teaching Statamic and Tailwind CSS to the team to allow us to streamline our own development, work more effectively on shared projects, all the while continuing to produce user-focused websites and web applications that meet our high standards of uniqueness, performance and author usability.
It’s definitely a very exciting time, and I’m a very happy developer.