HTML, CSS and our vanishing industry entry points
rachelandrew.co.uk
rachelandrew.co.uk
... Except that they were lamenting the rise of GUI operating systems and how those eliminated the easy on-ramps that command line OSes had where you could write a simple BASIC program that felt like something real.
It is important to be thoughtful about how people can easily get into computing. But it's also important to not idolize or idealize the particular on-ramp you took X years ago. Those ramps are going to die and get replaced by new ones. It's part of technological progress. As long as new paths come along — and they always seem to — it's gonna be fine.
Frankly, raw HTML and CSS is already a dying path. If you get someone to build a simple web page from scratch, it won't feel like a "real thing" to them. Because, today, "real" now means it has social sharing, interactivity, and a certain level of visual polish your web page will lack.
A WordPress install is a better path because it looks nice. And then they can start tweaking the template and the next thing you know they are learning a little HTML and CSS, but in the context of something that already feels real.
Forcing them to start with an empty notepad document is like getting someone interested in cooking by making them grow wheat.
Social sharing, interactivity, and reasonable-to-high levels of visual polish were all frequent features presented with raw HTML/CSS a decade ago. If you have a decent designer available to you, some of them can hand you a quality original screen design in an day or less in a PSD/Illustrator/whatever file, and it's possible for most cases to convert it to HTML/CSS from scratch in about the same time (at least, it was for me by the time I'd done a hundred or two of them). Responsive may add time depending on the layout conception. All of this can work pretty much the same today.
If you don't have a good designer and/or design isn't going to distinguish you (or you want the benefits from fitting into widely-present framework styles), a template or framework can make a lot of sense. But that's a different proposition from saying HTML/CSS is a dying path.
Interactivity & Sharing: up to a certain point, interactivity via progressive enhancement costs no more time/effort than application-centric approaches unless you're truly building an application over a hypertext document with some added features. Possibly less. Social sharing is usually a matter of dropping the right widget into a page.
> Forcing them to start with an empty notepad document is like getting someone interested in cooking by making them grow wheat.
It's more like having people start with buying/using their own staples instead of a meal kits or deli meals. The latter can be delicious and convenient, but it doesn't mean the staples aren't a viable path.
It's also nice when the designer actually works to a style guide and designs things with a grid in mind rather than some sort of abstract art where even the basic text sizes seem to change on a block by block basis.
Being handed a PSD for "desktop" and a PSD for "mobile" one time is one time too many. Especially when they put fixed height elements for dynamic content everywhere and get surprised once the dynamic content starts doing its dynamic things
Except in extreme cases (2-20MiB SPAs), the frameworks save very little labour on a decent modern browser. Furthermore, the frameworks will distance you from the subtleties that make the difference between a polished application, and a document desperately hoping to be seen as an application. I can't tell you how many times I've interacted with an application and thought it would be infinitely better if some of the elements had "user-select: none" or "user-drag: none".
You and I lived in a very different decade.
>If you have a decent designer available to you, some of them can hand you a quality original screen design in an day or less in a PSD/Illustrator/whatever file, and it's possible for most cases to convert it to HTML/CSS from scratch in about the same time
So, let me unwind this:
- if you have a designer
- some of them can give you some design
- it's possible for most cases to convert them to HTML/CSS from scratch
- responsive may add time
That's a lot of ifs and probabilities and outright unsubstantiated assumptions.
Hence. A decade ago, when frameworks were few and far in between, there were fewer "polished" websites than today just because it's exceptionally hard to create something polished in HTML/CSS. Also, decade ago is 2009. So, no flexbox, no grid, incompatibilities in box models, etc. etc. etc.
Using HTML+CSS to build a site from scratch is not at all like growing wheat... let's not make false equivalence fallacies here.
An excellent chef may know that midwestern wheat makes tougher bread than southern wheat, and that White Lily flower is a great brand for softer wheat with less proteins. But that's useless knowledge--and added complexity--for a total newbie who's never thought about what "rising dough" means.
One of my friends got into programming recently by building netlify-hosted react websites. Yes, his need to learn JSX and the strange capitalization of reactifiedHtmlAttributes is additional mental overhead, but because some onramps have gone away entirely, he won't have to worry about FTPing files up to a server, or Linux file permissions, or configuring Nginx, until he's established.
So whether it's cooking or programming, the "on ramps" have definitely changed, but it's never been easier for anyone to get started building high-quality products.
It's all HTML and CSS in the end. Maybe one day the abstractions will be good enough, but for now they are way too leaky to try to pretend they don't exist, even for total newbies.
The "on ramps" aren't gone, the bar just moves forward.
A lot of it in my experience is because you can use flex / grid almost everywhere to evenly space / proportion content now so you don't have to do as much pixel fidgeting to get things looking right. I'm using .5rem gaps and padding everywhere and it just looks pretty dang crisp out of the box.
At least compared to what you could do even five years ago its lightyears ahead in ergonomics. Still rubbish because its still html and css at the end of the day, but a far cry from floating half the page.
First, I am perpetually shocked to find peers in tech who still use BASIC or other tools that others see as outdated. The last one I found was a food product company; their lead tech guy, a member of the family, had given new meaning to NIH with the system he showed me. His website spec document literally started and ended with DO NOT WANT WORDPRESS, in large part, he explained, because he wanted someone who brought the same mindset to technology that he did: Invent something that fits the problem like a glove. And--that probably will not even closely resemble WordPress.
I've since learned that what really happens to influence a technology decision is not trend or "technological progress" alone. At the root of this stuff is human psychology. And not even individual human psychology, but human _relational_ psychology. In some human relational systems you get things like this: A family that is technologically backwards _by psychology_ sells a high-demand food product. They displace all of their technology thinking onto their son, or whoever is even remotely interested. And _that_ person does whatever they're comfortable with and good at. Voila: The rich and hidden empire of yesterday's tech!
And...you want to work with that person, you want that company to give you access to their funding--you have to kind of protect their on-ramp and you even quickly realize: Gosh, it still works and even surprisingly well! Otherwise they will tell mom and dad: "Sorry, we still have to use yesterday's tech." Well: Mom and dad actually love hearing that.
We will always need students who are ready to work with people and companies like this.
So I disagree that raw HTML and CSS are a dying path in a way that rules them out except for that set of new learners for whom it's less "specific problem solving" and more "build a website as you see them on the web". Clients who ask for WordPress these days are sometimes simply asking for what friends told them to ask for. For those building the websites, it can be a golden opportunity to step in and really bring problem-solving skills to bear, where the client can't be bothered to do so. Otherwise you paint a big target on your back for competition with other "WordPress companies" and the like. $300 gets you a new website, that kind of thing.
I absolutely agree about the overall risk of starting students out with an empty Notepad document too. I got into WordPress and Mambo/Joomla back in 2006 and had a blast right up until I was using gobs of plugins for everything and then they started to die, or get bought out by e.g. a company that tried to spam my clients with telecommunications equipment advertisements. What is there to do but start really figuring out how to solve problems without the plugins, in a situation like this? Then I found Textpattern, which was an amazingly great way to start dipping toes into template design and eventually PHP and SQL. When I taught people web design at our local college, I made sure they knew the advantages and disadvantages of Photoshop HTML Export, and then taught them how to do it in the best way possible. I gave extra credit points to those who would dive into the code a little bit.
Imaginatively my infallible future perfect hindsight convinced me that I would be mad to expect a 10 year old me to build a current development system.
Oh my, how preposterous of me. The lengths I went to to get my mitts on my first very own workstation I think can't be repeated on grounds of antisocial hubris. I was monomanaical. Over years. I ditched a first rate education for which I (to my retrospective surprise) knew I was a second rate candidate by this obsessive proto virtue if nothing else.
I have since learned that this is a universal human counterfactual and misconception: we inevitably one day look around us and fail to find the totemic beautified objects of our youthful ambition. ("Where is my beautiful house?") But we have already grown up, and in so doing, found human cares supplant the material and abstract and idealistic, it happened with the most materially successful people I know even more acutely to my experience.
Whether religious or atheist I think we can all take solace in the drive and determination and inventiveness of the next generation to face the similar issues. Meanwhile, echoing just about everyone who has responded, I think we've reinvented enough prompts and repls and gui libraries and stdios sufficient there likely will be some of them to survive the apocalypse.
Apparently a real website has social sharing and "interactivity" that can't be achieved with raw code! I'm guessing you're not a developer.
> * A WordPress install is a better path because it looks nice.*
That's the saddest statement I've read all week, only topped by..
"Growing wheat?"
Nobody suggested "notepad". A basic HTML structure can be achieved in 5 minutes in your code editor. From there it's about populating that structure with layout components. Yet more minutes coming your way. What, you wanted to have your site made by clicking a few buttons?
"Tweaking the template" in Wordpress is an exercise in extreme patience. A lot of faith in the black box under the Wordpress hood, and a spammy, over-commercialized "do you want fries with that" plugin ecosystem. The fragmented style of adding custom CSS or HTML in wordpress... you end up with a bloated unsustainable, messy maintenance headache. That's how you want people to learn web dev?
> Frankly, raw HTML and CSS is already a dying path
Rubbish. When it comes to doing interesting polished "modern" things with transitions, nested flexbox layouts, interactivity, and custom light-weight modules, there's no better way to control the quality and details of a web product than with raw coding.
In the 80's we knew that a single small optimalization was worthless but if you acumulate enouh of them the sum of the parts blew the mind of even the most sophisticated software wizards. The trend nowadays is to hoard deoptimalizations while arguing it doesnt mater.
I keep wondering why popular modules so rarely make it into the language. I joked the other day that it would be nice to have sortable <table>'s out of the box. Imagine the table code was <table json="{}"/> and that we could do <form json="{}"/> too. The amount of code we could discard. lol
Back in the day, you then tested it on IE and did the other 50% of the work.
Then you basically created a framework to ease that, and include fixes for it browsers too, and then you realised you were making a framework and that it was more optimal to use an established framework that 50,000 man hours had already been spent on ...
Before you know it you're theming WordPress on a shared hosting server, rather than ./configure-ing httpd and writing everything in nano.
I expect Web Components will learn that lesson slowly and painfully instead, as they cling to the broken ideas that got us here.
Senior software engineer at Google.
> Nobody suggested "notepad".
The thing is, if you've never written a line of code in your life, you don't have an editor set up. You don't know what an editor or an IDE is. By "entry points", the post is talking about what is the shortest, easiest path to get someone from "has never done anything resembling programming" to "feels good about their experience creating a software thing".
> A basic HTML structure can be achieved in 5 minutes in your code editor.
I'm currently authoring my second book on the web [1]. Each bit of HTML and CSS was lovingly hand-crafted from scratch. I know exactly how quickly you can slap a web page together. I also know how shitty it looks before you spend hours and hours tweaking the CSS, and that's assuming you already know CSS.
A bare bones HTML page still looks like a physics website from the 90s. No person who is taking their first steps in computing is going to look at that and think, "Programming is awesome! I want to do more of this!"
> When it comes to doing interesting polished "modern" things with transitions, nested flexbox layouts, interactivity, and custom light-weight modules, there's no better way to control the quality and details of a web product than with raw coding.
Quality and polish aren't relevant to this discussion. The article is not "what's the best way for a professional to make web sites?" It's "how do people get into making software as easily as possible?"
No it doesn't. "Bare bones" is a benchmark that has shifted due to easy CSS that can be applied to elements. Beginners are using CSS to make their first pages look nice, from drop shadows to rounded corners. I think you may be out of touch.
> No person who is taking their first steps in computing is going to look at that and think...
If we want to understand what beginners and students are thinking, we should avoid consulting senior software engineers for insight.
> how do people get into making software as easily as possible
Yes, and it's not by giving them a baked cake and the task of icing it. All under the watchful gaze of Uncle Google or Aunty Wordpress.
We're talking about industry entry points, not child learning activities. It's better to reach the point of nice looking page without sign-up to Wordpress-World or "install this collection of mysterious files". The idea with learning is to allow students to get as far as possible ON THEIR OWN, until they naturally or logically hit a wall that requires help from broader tools and services.
>... Except that they were lamenting the rise of GUI operating systems and how those eliminated the easy on-ramps that command line OSes had where you could write a simple BASIC program that felt like something real.
Are you implying, that they were wrong?
"The rise of GUI operating systems" haven't killed off the existing programming paradigm. It still exist, — it is called "back-end". And I can testify, that back-end programming is order of magnitude simpler, faster and leaner than modern front-end or Android development.
That completely misses the point. This makes sense as technology changes, however, HTML and CSS are not dramatically different now than they were 20 years ago. Despite that lack of significant difference the approach and entry points have radically changed and continue to change. This is problematic for a number of reasons addressed in the article.
The article touched on only one of the two biggest problems. The article did a great job talking about the churn every couple of years and the associated disconnect between a former group and a later group of developers. That disconnect is incredibly understated and important.
The article fails to talk about performance. Many sites today are not more performant than sites more than a decade ago even though hardware and JavaScript are orders of magnitude faster. If everything is 10s or 100s of times faster and yet the end products remain the same what got lost? The technology got lost behind layers of abstractions. These abstractions, in almost every case, don't exist to supplement (enhance) the technology. They exist to supplement the developer.
My personal single page app pushes nearly 1.5mb of JavaScript doing really heavy computing to the user and yet the site is still fully loaded in about 1.6s. The techniques I use scares the shit out of younger developers, because they are old and primitive (and yet stupid fast). I can remember the last big dot com I worked at struggled to get back down to 16s homepage load from 24s even though there is very little code doing anything the user would care for on site load.
> 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.
In my experience every framework or technology stack becomes poorly chosen on a long enough timeline by the incoming developers. Consider other solutions before thinking about abstraction, abstract only as an exception to policy, and then document the measured costs.
Consider the current most popular web abstraction: React. There are now numerous abstractions for React. It is only a matter of time before those abstractions over abstractions have their own abstractions until somebody wants to reinvent the framework again. People now spend more time and energy learning the abstractions than I spent learning the base technologies, but then difference is that my comfort with the base technologies allows me to spit out a solution in less time, that is smaller, and performs faster to the shock and disgust of framework advocates. That makes perfect sense realizing that the abstractions are there to supplement the technology but to supplement the developer.
I always find it amusing that we are having these discussions on HN which is about as old school as web technology gets and which doesn't seem to suffer too badly....
I agree tremendously. As I wrote four years ago¹:
It’s not too late in 2015 to get started in computers. People who got started in the 1990’s feel that way because they started in assembly language and compilers and all that, and how could anyone starting now possibly learn all that?
What they don’t realize is that people who got started in computers in the 1960’s feel that since they started with soldering and electronics and radio and circuits, nobody could possibly learn all that.
It’s easy to start in computers at any time. You simply ignore all the stuff that’s too low level to be worth your time to get bogged down in.
And two years ago²:
You were frustrated by Windows 98 because you could not reason about it on the level you were used to. But think back on the earlier electronic enthusiasts who were used to thinking about resistors and voltages – they would have been just as frustrated by your ZX Spectrum because they would not have been able to reason about machine code by thinking about what voltages they mean. The level to reason about Windows 98 would instead be by thinking about installed programs, registry settings, DLLs, etc. If someone came to computers fresh and started with Windows 98, this level is what they would know.
And three months ago³:
[…] Hasn’t it always been the case that the current generation skips learning about useless lower layers used by older generations? How could it be that the layers you grew up are the special ones which are still useful, when all the layers which came before, which people at the time thought essential, have turned out not to be so? […]
1. https://news.ycombinator.com/item?id=8952800#8953744
No. They will be perhaps covered with a shiny rug, but not replaced. Technology is not "changing" there is just more of it. And it's just as important to be aware of that.
It does what I need it to: sits there quietly and builds the HTML for my blog entries and my slowly-growing art gallery and my ongoing comics projects. It is not sexy. It does not check any boxes that will get me a job at a startup. It just sits there and does what I need it to do; I dive into html/php/css about once every year, at best, to do a quick hack to properly display my latest art project, or to improve and polish that quick hack to really nicely present my work.
I doubt I could get a job at a Silicon Valley unicorn with these skills. But that's fine. I get other work with the skills that my basic web design skills help me show off.
I look at the never-ending cycle of Hot Frameworks and the thought of trying to get on that train makes me feel immensely tired. That's two full-time jobs right there just to be able to check the box on an application asking for six years experience with a hot new framework that came out two years ago.
All these frameworks, all these technologies, all these lengthy toolchains, I don't need any of these to do what the Web was invented for: put some text and images online where people can see it.
For example:
1) Sign in and open the page showing templates, and my existing template is not displayed - just a whirring hourglass while some Ajax struggles behind the scenes. Clicking to deleted templates, then back again, fixes it.
2) Click to use the template, and I see no indication that anything is happening - then some seconds later a new page appears.
3) Even when opening a support page, the page doesn't render immediately, like a normal web page. Instead the outside of the page loads, then I need to wait while some Ajax chicanery needs to now load the content itself.
There are obviously plenty of people who can build SPAs well, but there are also plenty of people who have SPA fever, and don't ask themselves the basics first - like why don't I just make this a plain old web page?
At work, it is JEE and ASP.NET with server side rendering and vanilaJS.
Some projects do use Angular or VueJS, but only if they are actually a proper SPA.
I actually felt that (not Wordpress, but a similar CMS) to be going too far. I got fed up of having to patch PHP security vulnerabilities; debug occasional database outages; etc. just for some occasionally-updated content.
Now I just write markdown, convert it to HTML with pandoc and run a bare bones static file server.
and yes I have taken basic security measures to close off a lot of stuff, I dunno if it'd survive an attacker who specifically had it in for me but WP + a decent security plugin does fine.
React has been out for 5 years and it's popularity is only growing. It sticks. Alternatives aren't anywhere close, and the ones that do are just variations on the same pattern. We've learned something real.
The world changes. Most inventions are used in ways that their inventors never fathomed. While it can be difficult at times, and things can certainly be repurposed or reimagined poorly, overall I think it is a very good thing. How else could innovation and technological advancement occur?
We should try to make the most of these changes, and improve their shortcomings where possible. Or maybe even create something new if there is an opportunity :)
If you are of working age, learning this shit is not fun, because you won't have time to build cool hobbyist mini-sites "just for me and my friends". It is a seemingly never-ending race just to keep up with the state of the art, let alone needing to know "just enough" about version control, hosting, redirects, SSL and resisting the temptation of "shiny new tech" that looks great but won't put food on the table today.
With all that said, it's ridiculous to even have to know HTML or CSS, or even a WYSIWIG CMS at all to put up text, audio and pictures on a 2D plane. How is it that web browsers are able to grab my location, turn on my webcam, etc and yet not offer a way for me to create a web page right there in the console?
It is, there is noting seemingly about it. And it's the whole industry, from sysadmin level, through ML to front end dev. You sit down for 2 years, boom, you're so outdated, it hurts.
A regularly I wish I was a carpenter, where you learn something and it may stay valid for a long while. (EDIT: I admire carpenters, before someone thinks otherwise.)
But what's stopping you?
I prefer programming and development, exactly because it's always changing and interesting.
If you don't get gratification from the output of your work as a software developer, why do you continue to do it?
Now if you happen to have a garage or access to a place with tools/equipment, working with your hands is immensely satisfying. But electrons and magnetic domains take up very little space and really only require the purchase of one modestly priced power tool to work with.
>> It is, there is noting seemingly about it.
But if you build a foundation on HTML and CSS then you have something that stays relatively constant in the face of change. All that other stuff is often just fluff and programmers thinking they know a better way.
Someone who can build a static site (not Hugo/Jekyll/whatever) in HTML and CSS and upload it via sFTP will struggle to understand loop functions in a database-driven CMS, which require some knowledge of a server-side language.
Same goes with learning Git; there's a big jump in perceived complexity when you go from coding inside Sublime Text and typing commands into a Terminal.
This was always the case. Because you could never build any reliable foundation on HTML+CSS alone.
The hype cycle is just a gimmick. You don’t need the latest hotness for it’s own sake. Business users pay for solid products that deliver added value even though they are not utilizing the latest buzzword.
That's why I always scoff when some shit new feature gets added to a language or library and the response is always "well you can still use the old stuff". Yeah, maybe if you have your own solo venture, but everyone else has to suffer through it. Even being the lead on a project doesn't spare you from it. If all your devs want to use something new it's probably never a good idea to veto it, unless it's batshit insane.
80% of the industry is hiring programmers to work on some boring line of business app using Java or whatever language they've been using for the last 10 years.
Makes me want to write an article which basically compares and contrasts:
A: What the technical press, Reddit, Hacker News, etc thinks software development and web development is like
versus
B: What it's like for developers outside of the internet trend bubble
Migrating an aging custom Web site into a CMS platform like Liferay.
My own professional experience is from computer graphics and CAD (mobile and desktop) so I've never been directly influenced by the hype machine affecting web development.
I'm happy being a programmer, I just wish that any of the management folks understood that we're NOT carpenters, and their expectations that we learned everything we need to know ten years ago and should never need to learn anything ever again are unreasonable.
Plenty of companies whose main business isn't anything related to software, which are quite happy to have devs automate their infrastructure, they could even be done in BASIC or Pascal for what their sales people and management would care.
One of the builders in that book wrote a book of his own, The Well-Built House by Jim Locke, which I bought and found to be interesting reading.
In his obituary it says: "The revised edition is still in print although Jim dismissed it in recent years as technically out-of-date."
Which is to say that things do apparently change in building industry too. (I think this is another case of the grass being greener.)
Most jobs have a lot of new things all the time, the web industry just have it a lot more. There is always some fresh meat out of school that think the old ways are stupid and we should do it this way instead. The old ones that warns that we tried that already and it blew up in our faces are "Backwards" and gets pushed asside.
var h1 = document.createElement('h1')
h1.innerText = 'Hello World'
document.body.appendChild(h1)
I don't understand your meaning.
I can't tell you how many people (recent grads and experienced folks) we've had to turn away because they can't even pass a basic CSS test.
Well there is your problem. I have been working for quite a while now and I find this stuff very fun. I tried out VueJS last year as my first framework and I found it delightfully simple. Then I got a job working on react and found it a little worse but still nice. Took me very little time at all to go from vue to react.
Frameworks are useful but not nearly as much as people might think. There are many cases where a static site generator (as a simple example, Markdown → HTML converters) or simple templating solution may be "enough", and they're relatively easy to understand as bells and whistles on top of HTML and CSS.
The developer does. Do the project owner/manager/mid level personnel? That's a better question.
…And she's right. It's the perfect introductory tool in web development, because that's what any given framework is going to be abstracting over anyway. A student needs to feel the pain of typing everything a million times before the solution of a templating system really makes sense. Same goes for event delegation, browser inconsistencies, etc.
> and that just this is not enough to be "employable". I maintain that this is not true: many websites would do just fine with just those two (as in, they don't need JavaScript at all!), and I'm sure a very large fraction could get by with some small amount of hand-written frontend code hooked up to a database.
You're right that many websites would do just fine with static sites — most of the (highly paid!) advertising industry is brochure sites. But that's not the market though. You do need more than just HTML and CSS to be competitive in the market, even if you're BSing your way through most of it.
It's doable if you're freelancing, but you'll almost always end up picking up additional skills in the process (or partnering with someone else) because your clients will ask for them.
Though I'd argue that freelancers themselves are a bit of a dying breed (at least in the US) because it's increasingly harder to afford things like healthcare when you're an individual with no company backing.
It would be so simple you could even teach the business owner how to do basic updates, like changing the listed prices on the menu or changing the description of a dish. Sure, you don't get to charge them for these changes, but they'll be delighted they don't have to worry about paying a consultant's minimum fee just to update their menu.
I think the tide is gradually turning and many small business owners would prefer to buy you a dinner and have a good chat with you and if they like you then they'll give you business, albeit small (though you can do 10 of these without much trouble if you optimize your own process).
There is a market niche for practical no-BS small website builders these days, IMO.
It's a sea of people who want complexity for $100. They just go to fiverr and get someone to throw together hacky shit templates.
So I do the opposite and take care of everything. Design, build, deploy, maintain and update. I'm not a designer, but I take cues from their logos, menu, etc. I run it in the nearest AWS region for low latency, optimize all the assets, http2, etc. I strive to follow every best practice, within reason.
For a craft beer pub[0], I pull their current beers on tap from the Untappd![1] API, so the beers are always up to date. I also made a beautiful responsive menu that works great on mobile, tablet and desktop.
Where I'm really lacking is in self promotion. I do great work, but putting myself out there and selling myself is difficult. I will get there, though!
I'm doing this all to land a job doing front-end web dev somewhere I can grow my skills more. I came to programming late, but it is my passion.
Any thoughts on my site[2] would be much appreciated.
Edit: formatting
My latest project involved actually building a Wordpress site but in such a way that someone with no coding/html/css ability can alter it in a virtually unlimited variety of ways to build what he needs.
I actually built the site for the operator, not the business. And in turn that's already having positive impacts on the business as they can react and create things they need quickly.
Some parts I wrote myself but sure I hacked parts of it together with theme builders and plugins. Lambast me all you like but those were right for him as he had ownership/understanding of what they did for him rather than some unintelligible code. And that's what matters sometimes!
I would love to do something like this but when I used to try I always ran into the same problem.
The business owner would rather me follow the poor design choices of their competitors (hard to read text, bloated, random pop ups, etc). I always did it for them but it really killed me inside.
You might want to check your "blog" link at the bottom though. Gives me a 404.
I've seen so many sites dutifully set up with CMS backends and databases that only ever get updated by one person, and which only actually get updated once in a blue moon.
ETA: I mean, damn, how many people first got started just putting up or editing some static web pages, back in the 1990s and even 2000s?
Sure you could make it work with JS but you would be degrading the user experience for no reason at all.
1) Bootcamps teachers. From what I've seen, they are mostly React/js developers making living by things around that, books, courses. And most frontend technologies that are popular because big corps.
2) Big corp and developer mindset. Big corps have money and it's a big factor when developers pick up technology.
3) Javascript, the most low-barrier-to-entry and terrible at long term (They like the term "modern" so much)
Therefore, javascript ecosystem spreads like virus to the point it's eating HTML and CSS too. Imagine the virus was for improving HTML (things like <details> <summary> <datalist> free autocomplete, are powerful, interactive with zero cost) .. unfortunately no one cares anymore so they stay half-ass
Even myself now building a new app, I cannot bear "the platform" and pick compile-to-js lang for highly interactive widgets.
I wouldn't choose to do that greenfield (python backend all the way, webassemblywhen?) but that's usually not my call.
Really, whatever you use, I just care that you can hire for it (sorry Erlang) and that it's not Java (because, as someone who works in Operations and Security land, fuck Java and fuck Oracle).
About hiring, sure, I had to withdraw Elm implementation before I left a project. It's responsibility for what's good for them in hiring new folks. That's sad.
My probably-never-came-true dream was that just improve HTML honestly. 1) Make controls style-able 2) Make more controls
I hate to look like a jerk, but I say it again, big corps are significantly part of this problem. People just pick React and abandon everything.
But nowadays it seems that even the simplest page needs to be some isomorphic react application. I got into an argument with the company we hired to make our website because they made a loading animation for switching between static pages and of course broke the website without JS completely for no reason. Apparently it was “working as designed”. It was not my responsibility so I let it go but it still left me bitter.
I think that web developers are lucky that their “assembler” is understandable and can be used as is. It would be sad to produce a generation of developers that didn’t learn it.
She also is an evangelist for CSS Grid and why that should be the layout engine of choice instead of a framework.
I think a catering analogy is in order for those people that say that this basic stuff is not important and you have to take the frameworks if you work in a large team on these mythical mega projects. The analogy goes along the lines of 'can you cook for yourself' yet it doesn't really apply if you want to work in McDonalds. In a hotel kitchen that does 200 head wedding dinners clearly you need to be able to use the catering supplies and not necessarily know how to do actual cooking. I will work on the analogy, but there has to be a better response to the comments provided by people engrossed in complex build tools, frameworks and esoteric TLAs.
You are right though, and there is no reason why some vast modular behemoth of a system cannot write the proper HTML tags, e.g. aside, section, nav, figure not to mention main, header and footer with people knowing what they are doing rather than using these elements because they might be better for SEO. There is also a problem with the design process that does not put content first and takes a visual mockup as the starting point with nothing on the mockup having semantic value.
I regularly look at 'view source' to see how bad the sea of divs and class tags gets. It all goes against Google's performance recommendations yet it gets churned out by people that should know better. So long as you are with the delusion of grandeur that your website is so much more enterprisey and complex than these little things Rachel Andrews works on then you are going to stick thinking that way - pay cheque depends on it.
I think that there needs to be more of a movement like what happened with responsive design or flat design, a new thing that people understand even if they have no practical skills. The tools are all there but it requires as much unlearning as learning. Few in the industry have the circumstance to forget everything and go to proper HTML with vanilla javascript and CSS that uses grids and CSS variables. But it is a good entry point what we have now, coding for evergreen browsers, with time saving arguments that are compelling.
When I do view source and I see a couple of HTML5 tags and a sea of divs I think that the web page is by a team of people that actually do not know HTML. They have their excuses but when you look at it there is no logic to it. I got told off once for using an address tag around the copyright notice in a footer, as if I was insane. I was told to replace it with a div.
Sure, that might be a problem but it's not The Problem. The Problem is results. That is, despite all these reinventings products are still: coming in over budget, past deadlines, with too many bugs and most importantly end users are as frustrated and dumbfounded as ever.
We keep chasing shiny new objects and ego-driven bragging rights (i.e., "...I use Technology X...") and frankly no one on the outside has noticed., nor cares. They're too busy scratching their heads wondering, "Why doesn't this shit work the way it should?"
Agreed. The organization owning the product also contributes to these things.
And that's where companies like Squarespace come in for their value prop: we'll handle all of the back-end, asset hosting, etc. for you, give you a set of pre-built templates to choose from and allow you to tweak some of the CSS.
Businesses are less interested in pure HTML and CSS skills because they can get "good enough" for a few bucks a month and not hassle with a developer that's charging market rate or get into the weeds themselves.
The bootcamps don't teach the things that you think you can teach someone in a single day? Perhaps it's because those things are so easy they don't waste their time on them. They expect the students to study that stuff on their own.
But in the end, none of that matters. "industry entry points" aren't "vanishing". There are still tons of companies that need entry-level html, css, and javascript. We love to talk about all the companies that want more, and those companies pay more, but the other companies haven't dried up.
Is this really true? It seems like those entry-level people are caught between two trends: the low-level stuff is going SaaS and a growing percentage of the rest is buying into the idea that you need to install 10k dependencies for a brochure site.
My answer is 'no'. I think it's hard to make a living as a html/css website builder. You're competing with students, foreign freelancers, Web CMSes (like Wordpress+themes), and Website builder services (like Squarespace) ... all of which can, in one way or the other, undercut you.
>you need to install 10k dependencies for a brochure site.
You don't need 10k dependencies for a brochure site. Things like Wordpress or Squarespace should be more than enough.
I agree but say you want to create a simple site for something like a restaurant. You read all of the advice saying to use create-react-app and now you have 37,646 dependencies. That gives you a lot of tools but many of them are there to reduce the downsides to having that much complexity in the first place. It's certainly not a simple good-bad call but I do think it's right to ask about barriers to entry and whether we're entirely comfortable with the trade-offs.
Having said that, 1) HTML/CSS even outside of any JS is complicated, and website builders are probably a better approach, and 2) all those JS-based frameworks are there for building web-applications, not web-sites and therefore geared towards solving programming problems (like how to organize and maintain thousands of lines of code).
Yeah, it's probably harder to have an entire career on html and css unless you're also a really good artist.
But for getting your foot into the industry, you've already said it: Plenty of students are doing it.
That, and tools like Webflow, make learning HTML and CSS easier than ever.
My advice to people who want to skip the frameworks, but not necessarily reinvent the layout wheel is: start with the Bootstrap 4 "grid only" CSS option. You get a nice 12-column, easy to make responsive, align it anyway you want, base to start from.
There's the fundamental assumption here that the entry point outhgt to sit atop cruft that publishes the user's content to the world. That may have been meaningful during the utopian days of HTML/CSS on a pre-weaponized internet. Today, it is a bizarre and counterproductive assumption.
Why isn't the entry point <Ctrl-shift-c> into devTools, for example? There you can view, measure, test, and get feedback on anything in the window. Learn a single command or even single url to make the content editable so that you can type, "Hello world" to yourself. Paste an image from somewhere else on the web. Style it, move it around.
Then when you're done, close the window and it goes away, like it should. Because you don't actually know how to publish anything to the world yet. And it's quite possible you don't want or need to do that yet.
This provides a nice self-test because when you next open an about:blank window you have to do everything again from memory to get your content to display.
Who knows, maybe the entire forum will eventually get fed up that Firefox doesn't yet allow you to set svg shape width/height/x/y/etc. through CSS. What a pain, they'll say. And then they'll all threaten to switch to Chrome en masse to force Firefox to implement the most sensible part of SVG2.
The forum may have other priorities in addition to that. :)
Open dev tools in any major web platform like Facebook and you'll have your answer. The DOM of many major sites is increasingly less readable to humans.
Contrast to the MySpace days, where many people did cut their teeth with HTML/CSS via view source.
I can't help but feel that the web's progression to what it is today (framework/spa/webapp overload) was more or less a cobbled together solution using technologies that were never really designed or equipped for the task. The browser has become, quite literally, the kitchen sink--it's how we access nearly all of our applications, and today it's less common for an application to provide a native OS implementation than it is for it to provide a counterpart in the browser which has worked out fine, but is pretty insane when you think about it.
HTML/CSS/JS were never intended for making complex application UIs. The world has done a great job at coercing them into doing so anyway, but I can't help but indulge in alternative histories at times and wonder what things might've been like if javascript never hit the scene.
JS is such a double edged sword--it's great because it has a very low barrier of entry. On the other hand, the same accessibility tends to plague it with misuses, abuses, and overreliance.
It took a while for everything to 'click' and understand how DOM/JavaScript/CSS can really jive together. Using a framework is easier than understanding how something like Bootstrap works by examining the elements, CSS and scripts that all work together. I know there's always going to be more to learn, like any art form.
So depending on your intended browser support, a GIF may sometimes work better.
I take the author's point on this because infatuation with latest micro-frameworks and the lack of long-term support and backward compatibility is well-known aspect of modern JavaScript-based development. I attribute this to the fact that the industry is dominated by young professionals, the web as a platform is still exciting, and the fact that JavaScript is a terrible language that requires custom frameworks to work around its intrinsic limitations.
Having said that, you cannot write web-applications in just HTML/CSS. You can create very nice looking websites, but not web-applications with any sort of complexity.
>If we make it so that you have to understand programming to even start
Sorry. That's the reality. Many websites, and certainly those that are the core competency of the parent company, are really full-fledged applications that use HTML and CSS as the UI layer, and are backed up by thousands of lines of client-side code and thousands of lines of server-side code. You need to be a programmer to meaningfully contribute[1] because however way you slice is, writing and maintaining thousands (or millions) of lines of code is complicated and hard.
There are areas where programming skills are overkill, such as when you're not building a (web) application, but rather a website for your church bake sale, or putting together Wordpress-backed web-page for a local business. But that isn't where the money or need is.
[1] There is obviously a need for non-programmers, such as designers, testers, and UX professionals in software product development. But to actually realize the product, you need programmers.
Your comment basically sums up my feelings exactly even though I agreed with the intent and principle of the article. At the end of the day my HTML/CSS skills alone won't put food on my table. The brochure site market is basically eroded away by squarespace / wix / facebook and whatever else.
Sure, you have to learn programming to build a modern web app. But starting with HTML and CSS can be a good entry point.
I am not sure I understand what exactly the argument is (as is often the case for me when feminist concepts of power, enablement, and so on are involved).
Is she talking about hobbyists (someone who just want to play with technology and make a website for themselves) or people who want to enter web development as a career?
I would expect hobbyists to have enough time and curiosity to be able to start with the basics. There is also nothing preventing hobbyists from building their sites with pure HTML and CSS. These web technologies still work today just as great as they did 20 years ago. And there is no pressure from the lists of required skills on job boards.
If she is talking about people who already know that they want to get into professional web development just starting from scratch, then they have all the motivation in the world, numerous tutorials, online courses, and bootcamps. They have different goals than hobbyists, they need quick results geared towards job requirements. (Although I am having hard time imagining a person who would want to get into professional web development without going through the hobbyist stage first).
The "something open and enabling" argument makes total sense to me only in the context of hobbyist web development. It’s a wonderful thing that everyone who so wishes can learn how to build and publish a website and participate in the global sharing of ideas. But why is this criterion even mentioned in the context of professional web development? Is it incumbent on a profession to be "open and enabling" for everybody?
And what is she arguing as a solution, exactly? Stop using CSS-in-JS or JavaScript frameworks for professional development, because newcomers may find them hard to understand? Even though these technologies may be perfectly suitable for many situations? Why?
I will start by saying I'm not a developer of any kind. I'm learning Ruby and I've been doing that for a few months now. However, back in 2015 I got the itch to learn HTML/CSS/JS with the idea of changing careers. Long story short, I tapped out somewhere between 2016 and 2017. I still haven't changed careers. I was stressed and discouraged about how much I had to learn. I'm not saying this is everyone's experience but it was mine and I'm sure I'm not alone. It felt like trying to catch a train that is gaining more speed while crawling.
Hopefully there's a mindset shift after this, although it is my feeling that it will take another 5 years until there's a complete shift in tool set.
It’s like browser wars never happened. Or float hacks. Or the search for the holy grail. Or DirectX filters. Or box models. Or... Or... Or...
The web never was a place of unicorns chasing butterflies and shitting rainbows. If anything, it’s a much better entry point now just due to the sheer power of tools we have at our disposal.
I’d have killed for dev tools in early 2000 when I was struggling why a particular copy-pasted peace of HTML + CSS wasn’t rendering the same way it was rendering on some website I got it from.
Simplifying is the right way to go. Great engineering is taking complexity and making it as simple as possible.
Somewhere we forgot that simplicity beats complexity.
Lots of this move to complexity is that standards and more are being squashed for lock-in and proprietary control as well as increasing complexity so companies can stay in charge and dictate the internet and standards associated with it.
Unfortunately the simplification phase from the 90s through Web 2.0 has ended. Apps may have helped demolish that but ultimately open standards and simplicity is taking a back seat due to mass specialization choosing complexity over simplicity to squash standards, sell conferences/books, companies taking control of development, job security and unfortunately it is closing entry points and the beginner's mind outlook.
HTML, CSS, Javascript were mostly data-first then presentation layer, now it is framework first dictating all as a monolithic controller.
There is a gradual path into programming, but right now we've built up our frameworks to be tools for devs, not for normal people. I see a lot of apps that dumb it down too much (templates), and not enough that successfully expose you to as much complexity as you want/need. That's not to say they're bad apps, just that there really isn't something on the spectrum halfway.
Anything that installs and runs like Flash/AS is going to raise security concerns though. Please let's not repeat all that bullshit.
I bet a "modern Flash" could probably compile down to JS and work natively.
I really hate how often this sentiment is repeated. Nothing is stoping you from writing HTML and CSS exactly as you could in the 90s. If that is what you like do that. If you can't get a job doing that... so what? There are lots of things I'd prefer to do that nobody will hire me to do. If you want a job learn the skills that are in demand. If you want to build stuff then just do it and stop worrying about which open source project someone decided to offer up for free on the internet.
This means that it's better to create your own project in a niche that interests you, using low code tools (e.g. site builders, visual databases etc.) to get the general overview about how it all relates.
You get to know a bit of everything this way (invaluable experience for teamwork), and the knowledge trickles down much better to lower levels.
Starting to code is then a natural progression in order to customize your system as competition increases, you learn what you need, with motivation, because it makes a real difference to your project.
If you start on the "inside", your knowledge may not flow upwards, a lot of stuff you learn at lower levels can become redundant and abstracted away as you approach environments that are actually used in your niche.
Writing raw CSS is like chopping wood and working with the grain, but people who get into furniture design already have the Ikea experience, like everybody else. Don't start with CSS from ground zero.
I don't think it's true, those people never get the incentive to do their webpages in html and css. Site builders produce some crazy terrible spagetti code btw.
Not all of them, there are more serious ones like Webflow which aren't too bad in that regard.
Very much agree with this conclusion, though entry level web devs trained on eg. React might be too invested to acknowledge this.
> If we make it so that you have to understand programming to even start
Not sure who is the "we" that she's referring to here. Nobody is actively "making it" anything, it is just the changes in people's and companies' expectations as technology develops.
My progress indicator indicates fast progress these days!
This bit makes me think you got her point, but you didn't want to acknowledge it.
Being experienced, I would agree with the thesis here, except for the fact that we hire several junior devs here at my new office with only HTML and CSS knowledge and then gradually teach them frameworks and tools they will need.
Other places I have worked have taken this approach too. Don't know Angular or ember? That's okay...if you are teachable and really want to learn. Those are the real skills you need.
React is a huge improvement, I agree it’s overkill for a lot of projects, but it is objectively easier, less prone to breaking, and more human readable than other front end frameworks. It is a bit overwhelming at first but for mid-large projects it is totally incomparable doing a modern react/redux/TS project vs jquery or something
It's like, has this person even bothered to look at all of the noise in the app stores recently? The weeds are choking-out the fruit-bearing vines.
HyperCard.
FileMaker.
dBase.
It's amazing to me that 20 years after, the Web is still not quite up to par with regards to speed and ease of development as well as performance. I'm not sure we'll ever get there, either.
I knew a guy who worked on a pharmacy application that calculated IV drug mixes that was a Visual Basic WinForms app and written with basically no knowledge of re-use or architecture. Kind of like web development where CSS was only applied via id's and so there was a lot of code repetition.
Those days were not better, by the way. Win32 programming was and is horrible.
The web should be accessible. Accessible to use. Accessible to build.
Related to this, I was heartened to see DHH revert a decision in webpacker to show full source maps the other day.
> I've learned so much from View Source over the years. From structure, to CSS, to JS. That has gotten harder with minification and transpiling. That's a real shame. The web has given us so much. The default should be to give back, in all the ways we can. View Source is a heritage feature that a framework like Rails should go out of its way to pay tribute to.
https://github.com/rails/webpacker/issues/769#issuecomment-4...
The OPs article was pointless but the article the author is commenting on is very interesting (coming from someone who lives about as far as you can possibly get away from Front End land).
Mind you, this was a completely functioning back-end interface already.
Speaking as someone who has spent many hours lovingly hand-crafting CSS, I don't see how this beats using ms word or google docs or any other way to produce a static document. You can even have those editors output to HTML. I can teach somebody to do this in minutes, rather than in a day. What actual deliverable can people produce using html+css that isn't easier to make with other tools?
A word processor or a web publishing framework are more complex and less tractable than HTML and CSS written in a text editor. Even if you manage to export something it will be mangled and you haven't learnt the tools or produced the result that you set out to.
Learning HTML and publishing something on the web is a uniquely technically empowering feeling.
Then again, it's the same in the inDesign/inCopy world as well.
We could use Oxygen and generate all necessary documentation in multiple formats, without needing any Tex typesetting macro magic.
Platforms like wordpress, squarespace, and wix all make a killing by providing a 'good enough' experience with a WYSIWYG interface, and I think that's empowering a large set of people who neither want nor need to learn CSS syntax.
(I do suppose understanding the basics of the DOM is helpful for any internet user, but you don't even need to publish anything for that info to be valuable!)
That's not the point of the author though. She's saying compared to frameworks like React and Angular, making a web page in HTML/CSS is a lot easier.
The subsequent point being, once someone has taken a day to learn HTML/CSS this way, it acts as an entry point to get into more complicated stuff (i.e. js frameworks, or backend coding, etc.) and become a web developer.
You can use word or docs to create a static document. Sometimes that's all you need to do. Then you're done. It doesn't make you want to get into web development because of having done that. (sometimes, maybe, if you're interested enough afterwards.)
Nowadays the industry wants React devs. If you're an outsider, you have to very intentionally put yourself through bootcamps so you can get hired. React is not easy to learn. It's not easy even if you have a computer science background (but never done web dev). Just "picking up React" as an outsider is nearly impossible.
That's why we tried UML to model the relationships of the data as distinct from design choices, like the (x, y) of the image on the third slide. Either party likes stripping all the metadata from the other, so HTML is now the standard so we can share inefficient, festering hunks of shit over the internet.
neither of these has anything to do with privilege.
i left academia because the stench of Foucault and Derrida grew too strong for my tastes. and here it is again creeping in.
The new Packaging systems are the new Maven.
Enjoy, you're now up to date.
It's actually super tedious to develop for the modern web. Mostly it's made somewhat tolerable these days by treating it as a compilation target rather than something you manipulate "natively". Handcrafting CSS without pre processors is just not a thing in modern web development. No variables ... because reasons. Twenty years ago the need for them was pretty damn obvious already. Never happened. Eventually the status quo somehow became handcrafting something that manipulates a super convoluted dom tree with nodes that have manually assigned class and id names that need to line up with LESS/SASS/SCSS/whatever rules that manipulate the browsers ability to transform that mess into something that somewhat matches what the designers had in their heads. You get silly things like using negative margins, various "layout models", and other crazy hacks of the variety "hmm maybe this will work?" that went in and out of fashion over time combined with all sorts of hacks to make IE whatever do loosely the same things that e.g. Firefox does
I have good hopes for WASM steamrolling over this dysfunctional ecosystem in the next few years. It will change two things:
1) javascript stops being the only, or even a reasonable choice. Already, typescript is emerging as the most sane way to transpile to javascript and it's a definite step up. But honestly, it's got nothing on Kotlin/Swift, and many other languages. 2019 looks like a year where several non javascript centric frameworks will emerge that will bypass most of the javascript ecosystem and compile straight to WASM. I know the Rust people are pretty ambitious on this front. Early Kotlin and C# stuff already exists as well. IMHO it will probably take another couple of years of this stuff gradually getting better until we hit the hockey stick curve where suddenly this stuff is everywhere.
2) Having wasm + webgl means that all the stuff that people did with plugins 20 years ago that to this day is super hard/tedious/virtually impossible to reproduce with JS/CSS, is now super easy to do again. And this time we can do it in a safe and cross platform way. This opens the door to doing UI that is not based on DOM + CSS and without all the limitations that imposes on designers. I expect a lot of game, VR, AR, and media content will soon run on top of this stuff and that the amount of 'traditional' web UI around that will gradually disappear or become less important. Right now you see a lot of nice demos and proofs of concept but not much serious content yet. I'm expecting this stuff to become more serious gradually until we hit the before mentioned hockey stick curve where this is obviously the way to stand out from the mediocrity that is the "modern" web.