Is it harder or easier to build a website now than 10 years ago? Has the bar gone up or down? I don’t have any data for you, but I can shell out some loosey-goosey opinions.
HTML
HTML5 was the only big HTML change in the last decade, and it wasn’t particularly dramatic. It’s cool it’s the looser variant (instead of getting XHTML3 or something). More compatible this way. Maybe I’ll close my <br />
and maybe I <br>
won’t. Having better semantic tags (e.g. <article>
) is great. Input types are wonderful. But none of this pushes HTML to be significantly easier or harder.
Same.
CSS
CSS has gotten easier. We use way fewer “hacks” all the time. I can literally feel it. The CSS we write today feels so intentional and direct. 10 years ago I feel like every other element had some kind of weird hack on it, and today, almost none. If CSS feels any harder, I’d wager it’s because the sites we’re building are bigger and more complex so the styling systems for them need to be all the more robust and the dangers of getting it wrong more stark.
Easier.
JavaScript
I’m sure there are strong arguments to be made both ways here. The language, perhaps, with all its recent syntactic innovation… perhaps easier. But what JavaScript is being asked to do, and what we’re doing with it, is so astronomically larger that more difficulty comes along for the ride. It’s similar to CSS in that way, but even more pronounced since we’re not just doing what we were before on a new scale; we’re building entire interfaces with the language in a way we just weren’t before.
Harder.
Domains
I mention this one because it’s such a crucial step in any given person’s ability to go from zero to actually having a website.
I don’t think buying a domain name is any easier. Domain names are a commodity market, so the companies selling you them are selling you them for some other reason, meaning the incentive is very high for them to push other products on you. For someone entirely green, I can imagine the confusion is either high or they don’t know enough for the confusion to settle in yet. Do I buy it through this page builder thing? Do I have to buy it through this page builder thing? Do I need the WHOIS protection? Oh god, what even is DNS? I guess I do want email, right? Or is that like some weird special hosted email? Ughjakd. I’m gonna call it a wash. Nothing has made this any easier or harder in a decade.
Same.
Hosting
There is so much money in hosting it kind of blows my mind that we don’t see deeper innovation here. I might argue it’s a little easier these days. But commodity low-end hosting isn’t terribly different or being any more or less helpful than it was a decade ago. We’re still largely stringing together our own bespoke build and deployment processes like we were 10 years ago.
Large-scale stuff might have seen a lot of innovation, a la AWS, but nobody is going to argue that stuff is anywhere near easy.
The most innovation we’ve seen is from companies like Netlify and Zeit who are looking at the developer experience wholistically from helping you run things locally, to testing builds in staging, to immutable deploys. I’d love to see all hosting companies realize that every single one of their customers needs to get their code onto their platforms and they have a massive opportunity to help us do that directly.
Slightly easier.
How people actually do it
I like thinking about HTML, CSS, and JavaScript. But of course, precious few people actually start with those technologies to build actual websites from scratch. Really they end up being treated as underlying technologies you dabble in amongst a slew of other tech.
You can build a website from just an index.html
file. I’d argue more people should. But people reach for more “complete” solutions and customize from there. I know I did. The first websites I ever created were WordPress because it was a whole website in a box (with its own struggles) and I customized it. People still do that today, probably more now than 10 years ago, and I don’t feel like it’s significantly easier or harder. Or they reach for something familiar. I made a one-page index.html
site not long ago, only to have it picked up by another developer who turned it into a create-react-app site but otherwise changed nothing. They just didn’t know how to work on it without React.
Or they use WordPress.com, or Squarespace, or Wix, or Shopify, or BigCommerce, or you know what I mean. This isn’t about what people can do, it’s about what people do do. And for most people, these apps significantly lower the bar of creating a website.
So, for the average person, is it easier or harder to go from zero to having some kind of website?
Much easier.
Can people actually do it?
If we’re talking about creating from scratch, it’s interesting to see who feels like they even hold those keys anymore. The whole idea for this post came from a conversation I had with someone who has been a front-end developer and was asked to build a website by a friend. They declined because they didn’t know how.
Chatted with someone who’s been working at a company as a front-end developer for 3 years. Their friend asked them to help build a website, but they had to decline. They didn’t know how.
— Chris Coyier (@chriscoyier) October 14, 2019
Some part of that doesn’t surprise me. As I write, the world is awfully full of React-specific developers working on huge sites (partially due to boot camps, partially due to market demand). They understand that very specific ecosystem and are perfectly productive within it, but don’t have a wider understanding of how it all comes together to make the complete site.
Specialists are specialists!
Them: What do you do?
Me: I’m a web designer
Them: Cool! Can you help me build my website?
Me: [laughing] Oh god no, I have no idea how to do that— Karen McGrane (@karenmcgrane) October 14, 2019
Another part of me is surprised. You know an index.html
file with “Hello, World!” in it can be a website, right? Even React devs are generally highly aware of create-react-app and how that scaffolds out a ready-to-rock site. Tools like Stackbit slap together a JAMstack site for you that can go anywhere. For developers, it seems to be going from zero to website is a heck of a lot easier these days.
Much easier.
Were we still dealing with Netscape/IE or maybe it was just hacks for IE.
So, we had to worry about browsers.
Now, it’s iphone, small ipad, normal ipad, laptop, superlarge.
I’d wager that CSS is much more difficult. In principle it’s about the same; if you created a single CSS file and adhered to the cascade but nobody wants that anymore. It’s all about cross-platform/device. Responsiveness. Tooling (Sass, etc) CSS variables, the list continues.
10 years ago, I never needed Sass, a transpiler (eg webpack, gulp or grunt). I’d just get in and start coding a site. These days, there’s a few hours of tooling setup and that doesn’t include the research I do to ensure I’m up-to-date on the latest tooling.
Development in general is much more difficult when you go beyond the basics.
With you here – some of our layouts tools now are easier to understand and implement (and you don’t need to learn a load of hacks and gotchas…), but working with responsive layouts adds a lot of complexity on it’s own.
Completely agree! It has become terribly time-consuming… just the fact of setting up the environment to get something simple done. The counterargument is that eventually you end up building a more scalable, maintainable and sophisticated application. (sigh)
In terms of building a full website from scratch, I think the answer is “both.”
On one hand, the barrier to entry is a lot higher than it used to be because of how many more things you have to take into account. A website has to scale from a huge desktop screen down to a mobile phone and everything in between. You have to account for keyboard and mouse interaction vs. touch interaction. You have to consider accessibility. For anything that’s even remotely complex, you’ll want to use a CSS preprocessor, a package manager, etc., which means setting up a build process, which means working with the command line. You’ll want to set up a git repository. Etc., etc.
On the other hand, once you get past this initial learning curve, things are SO much easier. The combination of something like Bootstrap + SASS preprocessing + npm + git is incredibly powerful and flexible. CSS has improved significantly and is so much more capable than it used to be (flexbox, grid, etc.), and can do so many more visual things natively that used to be take huge amounts of manual work (shadows, gradients, transitions, etc.). Browser support for all of these features is much more thorough and consistent.
On the whole, I would say things have improved tremendously. But you have to keep up with the changes as they happen. I’m trying to imagine what it would be like if I quit web development shortly after I got started (early 2000s) and then tried to jump back in now – everything would be so different it would practically be like learning everything again from scratch!
You know Chris, although I wasn’t really digging into web design 10 years ago, These days it seems that page builders would make things easier.
That being said, I’ve learned the hard way that it’s more than just slapping some text and images on a page and calling it done. But, that’s the fun part! I have loved being forced to learn CSS and Java is next on my list (well and more .php).
I think while things may be easier, there’s also (at least for me) a good bit of learning I have left to do as the web changes you know?
You’re missing whole tiers of conversation for this reflection to be relevant.
Build tools, animation, performance, accessibility, multi device, component architectures, graphQL querying from front end.
Things are wildly more complex on the front end than they were ten years ago.
“Hosting” has some ongoing, experimental innovation . The Inter Planetary File System (IPFS) is possibly going to make hosting much more cheaper and accessible and invert the current logic of the web of “the more visitors you have, the more server costs you have”. In IPFS, the more visitors you have, the less servers costs you have.
Also in IPFS, files are required to be signed (because the private signing key controls the version of the file), so you get some security against impersonation for free.
Even a decade ago there were still people relying on
<table>
as a layout structure rather than CSS. So I would say that as support forflex box
andgrid
have grown it’s made CSS, and as a byproduct HTML, a lot easier.JavaScript is probably harder overall. There are even more framework options, there is the new ES6. The popularity of JavaScript libraries like React or Vue have placed JS in the forefront so we’re all more likely now to more strongly consider performance.
The only way in which I would qualify domain purchase / hosting as easier is that there are more options. Because there are more options it’s a little easier to do things a la carte if you prefer, and if you decide to jump ship it’s a lot easier to manage those transfers than what I had experienced even a decade ago.
…
And if we’re talking outside the scope of developers and how a layperson would setup their website? I’m going to go with a LOT easier with an asterisk. There are a million options from installing WordPress to any number of pretty impressive visual editor services out there. Any layperson can pretty easily set up something… it may not be as customized as they would prefer but they’ll be able to get something up that looks professional and does the job.
The asterisk though? There are a million options from which to choose! That can be a daunting task… picking one that meets your needs, understanding what those needs are and will be.
…
For a developer I’d say the “How we actually do it” hasn’t really become easier. It’s just become more diverse. Which honestly is a great thing. Install WordPress, custom-write your own backend, power it with PHP, ASP, React, or something else entirely. Or make it accessible completely offline. It’s all good, it all works. The only limitation is your ability to execute the code or your willingness to learn how to execute the code.
recently, when I was hunting for a job, one of the guys interviewing me asked me about front-end frameworks (mixing up javascript frameworks, css frameworks, etc.) and if I was familiar with them. My response was that I don’t really care about frameworks, but having strong foundations. Anyone can effectively learn [insert framework here] on a given # of days, provided he/she has strong foundations. imo, to invest time in learning a framework, that framework better be around and relevant for years to come…
I think that the program language is getting more easier than
But the difficulty is that thousands of websites getting online everyday
And to build a website you have to be a unique
Hi Chris – love your writings
HTML -> same
How do you rate web components, shadow dom etc. ? Have no experience myself but it does represent an html change
Progressive web apps ? Too soon to tell ?
Web assembly ?
Best of wishes for new year
John
HTML… well, yes. We can’t say it is easier or harder now, is just bigger. We can do more, but if I think the case of someone that just started with FED, it can be too much compared to before HTML5.
I keep having to expand my brain to stuff everything in it. I thought it was easy decades ago when I was using vanilla editors. It’s not really hard now. What is different is there is so damn much to know! Just when I think I have something mastered, I google and discover I totally missed out on keeping up with something else or even knowing something else is now a thing. Wheh! I’m racing into old age withing this world and not even noticing.
On the one hand, it’s easier because better browsers, less hacks, more tutorials, online courses, information everywhere, build tools, quick setups and overall much better tooling etc.
On the other hand, the game is way more up than it used to and the expectations are way higher. Being proficient not only with a specific toolset but with the whole amalgam of accessible HTML, resilient and concise CSS and low-footprint JS, preferred knowledge of specific frameworks and build tools, I guess it got harder. Just keeping track of best practices, new tools and time-to-get-to-play-with-them all is a day job almost.