Frontend Dogma

5 Questions for Craig Buckler

by @craigbuckler@x.com and @j9t@mas.to (@frontenddogma@mas.to) on , tagged , , (toot this?)

Craig is a freelance full-stack web developer based in the South West of England. He started programming in the 80s and built his first site in 1995, so the Web has been a significant part of his life and career. According to him, Craig has been fortunate to work on numerous projects with great teams using interesting technologies.

Craig has also written a number of books and around 1,500 articles and tutorials for SitePoint.com and other sites over the past 15 years. You can find links and contact details at craigbuckler.com and GitHub.

Jens: What are you working on these days?

Craig: I work for a variety of clients on a range of projects. I’m in a fortunate position that I can choose work which interests me and have some influence on the technical direction.

I’m still writing but a little less prolifically. I always write for myself as a reminder of a topic I’ve learned or want to learn. They’re a useful resource—I often Google my own tutorials!—, and I’m glad they’ve helped others, too.

Writing has led to mentoring, training, and speaking. I’m currently preparing a talk for a local conference about new browser features that will revolutionize web development and reduce the need for build tools.

In whatever time remains, I’m working on my own Node.js static site generator. I know they’re plentiful and options like Eleventy and Metalsmith are great, but I always end up writing too much custom code or working around template syntaxes. My own solution will be small, fast, and use native JavaScript template literals. I’ll release it as an open source product but I expect to be its main user.

Jens: What is your #1 topic at the moment, and what has you excited about it?

Craig: It’s difficult to choose just one topic, but I’m glad native web components are finally getting the recognition and attention they deserve. They took some time to arrive so it’s not surprising web developers were cautious. We’ve reached a point where anyone can develop their own useful HTML tags and slot them into any site, app, or framework.

If you permit me one other topic, there’s been some great advances in CSS over the past year: nesting, color mixing, view transitions, container queries, scroll-linked animations, the linear() easing function, parent selectors, anchor positioning, etc. There’s less need for complex JavaScript and DOM manipulation.

I also think the move toward better performance and less complex (or perhaps no) build tools is a step in the right direction.

Jens: You’ve been working in web development for a long time, and covered many topics, e.g., at SitePoint. What was the most interesting trend, period of time, controversy to you?

Craig: Yes, I’m very old—thanks for the reminder, Jens!

The explosion of HTML5, CSS3, and ES5 around 2010 was one of the most inspiring times in recent memory. Web standards had been held back for much of the previous decade, but increased browser competition from Firefox, Opera, and Chrome finally ended IE’s dominance. HTML5 marketing was over-hyped much like we’ve seen with blockchain and AI, but we now have capable modern browsers without a need for plugins like Flash or Silverlight.

One of the biggest advances for developers was Firebug in 2006 which influenced the DevTools we have today. Pre-Firebug development was a barrage of head-scratching frustration with modal error messages such as “Object not an instance of an object at line 0” (yes, seriously!).

Finally, Node.js changed the industry after 2009. It wasn’t the first JavaScript server runtime, but it was fast, open-source, cross-platform, and provided the npm package manager. We could finally use JavaScript everywhere and features such as websockets became far easier than before.

Of course, there have been plenty of controversies.

IE6 was used as an excuse for bad code, bad apps, and bad practices. The browser was a pain, but the bugs and workarounds were well understood. It only became a problem when you coded solely for IE or avoided IE testing until the end. Personally, I found IE7 worse: Microsoft fixed many IE6 issues, but introduced others which were impossible to target!

We should also be concerned about the unrestrained influence of social media platforms. Looking at them solely from a Web perspective, these walled gardens have replaced variety and creativity with manipulation and conflict. There may be fewer technical constraints, but the Web seems a less dynamic place than it once was.

Jens: What are you most concerned or excited about in web development?

Craig: Web technology is always improving. Features and effects which required significant JavaScript a few years ago can now be achieved in a few lines of HTML and CSS. That’s exciting, but the downside is that it’s increasingly difficult to keep up. I consider myself fortunate to have been around in the early HTML-only days. I could learn and adopt new technologies as they arrived. Today, we have hundreds of CSS properties and JavaScript APIs—it must be daunting to new developers.

I also think we’ve become obsessed with frameworks and build tools. It’s not necessary to install 200 MB of npm modules to create your first web page, but that’s often how it’s taught. I recently found a site I developed in the 90s—it looked awful, but it still worked. Yet sites built six months ago break with obscure dependency errors.

Perhaps my biggest concern is woeful performance caused by unnecessary web page bulk. 100 KB was considered excessive in the dial-up days. Thankfully, that’s behind us, but it’s common to encounter multi-megabyte pages with three lines of content. Can they be used by those with limited bandwidth? Do they offer better features or accessibility? Do they improve on 100 KB pages?

I’m beginning to sound like an old man shouting at the cloud, but web development is better than it’s ever been. We’ve progressed a long way from the early days of table layouts, spacer GIFs, and Java applets to handle roll-over effects—as implemented on my first site!

Jens: What would be your recommendation(s) for new web developers these days?

Craig: I recommend you only start web development if you’re interested in the technologies and want to build sites and applications. Programming jobs can be well paid, but you’ll only learn by making things—often for yourself over a long period with no payment. Knowledge won’t come easily if you don’t enjoy coding.

Start by learning the basics of HTML and CSS on a few simple—and achievable—websites. You can get a long way and that experience becomes invaluable when you eventually delve into JavaScript for more advanced in-page functionality.

You’ll encounter hundreds of techniques and APIs on your journey—and that’s before you consider server-side development and databases. Don’t worry about learning every aspect of the web platform. Make notes so you can remember features if they ever become necessary. No developer knows everything, but knowing something exists is half the battle.

Finally, frameworks promise programming magic—so avoid them! You may find plenty of React jobs, but starting web development with React is like learning to drive by jumping on a train. You may reach a destination quickly, but you won’t know how you got there.

In essence: Learn the fundamentals and stay curious. It’ll make you a better developer.

Jens: Awesome to have you here, Craig—thank you so much!