Everyone is angry about CSS again. I’m not even going to try to summarize the arguments. However it always seems to boil down to the fact that CSS is simultaneously too easy to bother with, yet so hard it needs to be wrapped up in a ball of JavaScript in case it scares the horses. You can read a more sensible take from Chris Coyier in The Great Divide.
These arguments about tools, frameworks and technologies happen throughout the stack. I have watched them go round and round during the 20 years I’ve been working on the front and backend of the web. The de facto standard technology has limitations, we hit up against problems, we want to solve the problems. So often, we decide to solve the problems by throwing everything away. The old stuff is terrible, invented when we knew no better! We can do a far better job now, with all of our knowledge. Let’s reinvent that wheel!
We see it in the world of data storage, people will do anything to avoid a relational database, despite the fact that a relational database is very often what you actually need.
We see it with a drive to static sites, conflating speed with the lack of a database, and ending up recreating the database in the filesystem or relying on a raft of third party services to plug the holes that would have been filled by a more traditional CMS.
In both of the above scenarios, there are situations where the RDBMS alternative is the right choice, the static site perfect for the type of content being published. These are good solutions for particular problems. However I’ve seen many situations where the desire to adopt the latest technology or technique leaves the project in a mess, and ultimately an expensive rebuild or refactor has to be made.
This constant wheel reinvention is something we seem to be wired to do. We can be optimistic and hope that good things fall out of it, but so often what is left is a mess. Teams find themselves with projects that no-one has the skills to fix, due to them being based on a toolchain that only a few people understand how to use. Businesses are handed websites by external agencies, using a technology that quickly falls out of favour, and when they want an update the next contractor looks at it, and suggests a rebuild.
However, when it comes to frameworks and approaches which build complexity around writing HTML and CSS, there is something deeper and more worrying than a company having to throw away a couple of years of work and rebuild because they can’t support a poorly chosen framework.
When we talk about HTML and CSS these discussions impact the entry point into this profession. Whether front or backend, many of us without a computer science background are here because of the ease of starting to write HTML and CSS. The magic of seeing our code do stuff on a real live webpage! We have already lost many of the entry points that we had. We don’t have the forums of parents teaching each other HTML and CSS, in order to make a family album. Those people now use Facebook, or perhaps run a blog on wordpress.com or SquareSpace with a standard template. We don’t have people customising their MySpace profile, or learning HTML via Neopets. We don’t have the people, usually women, entering the industry because they needed to learn HTML during that period when an organisation’s website was deemed part of the duties of the administrator.
As this amazing thread highlights, the entry point more recently for non-traditionally educated people has been the bootcamps. They are typically teaching a framework-heavy style of development which gets students as quickly as possible up to speed with the technologies most likely to get them a job. However, I see from the questions I get from those who have been through that type of training, the basics are often glossed over at best. If those new recruits then head into an environment where those gaps are never filled, or worse one where HTML and CSS is devalued and rubbished, we do them a huge disservice. I can feel comfortable about the way we build the web changing because of my HTML and CSS skills; I know from past experience they allow me to hold the tools built on top of them lightly, to learn quickly and switch easily.
There is something remarkable about the fact that, with everything we have created in the past 20 years or so, I can still take a complete beginner and teach them to build a simple webpage with HTML and CSS, in a day. We don’t need to talk about tools or frameworks, learn how to make a pull request or drag vast amounts of code onto our computer via npm to make that start. We just need a text editor and a few hours. This is how we make things show up on a webpage.
That’s the real entry point here and yes, in 2019 they are going to have to move on quickly to the tools and techniques that will make them employable, if that is their aim. However those tools output HTML and CSS in the end. It is the bedrock of everything that we do, which makes the devaluing of those with real deep skills in those areas so much more baffling.
If you have real-world knowledge of problems you have found when working with CSS, ideas as to how they might be solved, ways you have solved them using JavaScript, great! There are lots of us who work on CSS who want to hear your ideas. However if you start by telling me that you haven’t really bothered to learn CSS, before deciding how you are going to replace it; if you belittle me (or I see you doing that to other people) because I don’t know your framework of choice, I might be slightly less amenable to your suggestions. That said, what I will never do is help you build a world that someone like me would have never been able to enter.