... 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.
> 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.
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.
Working with a good designer that knows HTML+CSS is amazing. It is lovely to get delivered working responsive HTML documents to convert into the web site or web app compared to getting delivered photoshop/illustrator files. Apart from anything else a designer that knows HTML+CSS produces designs that actually work on the web. Designers that only know photoshop/illustrator invariably produce unworkable designs.
Agreed. Of course, even if you do get PSD/Illustrator files, the designer should at least make it easy to get the necessary information required to build the page, extract assets, etc. Seen way too many non web designers just hand developers a flat picture with no way of getting the font styles or extracting images and expecting them to just guess.
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.
hell, I'd be happy if the designers I work with used XD instead of PS or AI so that they at least had a change of reasoning about their "responsive" layouts.
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
UX/Product Designers that are using photoshop or illustrator to deliver a full page designs are wasting everybody's time.
They should learn Sketch, InVision Studio or XD.
Agreed wholeheartedly. The whole concept of a graphic designer creating static images of layouts, which are then translated into code by a programmer, should die in fire. It's just another instance of nontechnical people writing specs for applications and having programmers translate them into code. UI/UX design is not graphic design or programming. It is both and neither.
I could not agree more. Iteration time is shortened and I usually get better results faster with a designer that can write HTML + CSS. It's really hard to work differently now.
The product I'm working on just happens to rely on WebRTC, and this means that we can use the tremendous facilities provided by WebRTC-era browsers.
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".
> Social sharing, interactivity, and reasonable-to-high levels of visual polish were all frequent features presented with raw HTML/CSS a decade ago.
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.
Most Wordpress-driven websites these days are essentially temporary marketing assets. You can use Wordpress to build a site that'll be online for a decade, and people have done, but the overwhelming majority of websites don't last more than a couple of years. Using a platform that doesn't lend itself to long-term stability is fine in that use case.
I recently started making a personal reddit clone mostly to learn Grid properly but I'm having no problem making custom controls (checkboxes, search bars, forms, etc) that look "professional" with just a consistent color palette, some borders, shadows, gradients, and linear transitions.
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.
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.
Wait, are we seriously saying HTML and CSS are "useless knowledge" for web development. Wheat is a horrible analogy... it's like trying to be a cook without knowing how to use an oven. "Ovens are useless since George Foreman grills came out." You probably could cook most things on a Foreman grill, but that doesn't make you a good chef.
HTML and CSS aren't useless knowledge even for a total newbie.
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.
if you're working for a company that uses a react stack as a noob - what use are advanced html and css going to be? sure maybe you'll hit a subtle and infuriating bug but usually you'll have someone more senior who'll point out the way. now if you ONLY knew advanced html and css, do you think you're going to get hired at company that's looking for a beginner react dev? maybe but the job market is weird
> Because, today, "real" now means it has social sharing, interactivity, and a certain level of visual polish your web page will lack.
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.
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?"
> A bare bones HTML page still looks like a physics website from the 90s.
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.
Ill suggest notepad. Ill slap together some basic html doctype a head with style and script tags, yes inline, a body with some simple divs and in no time at all it will look as good if not better than the hipster 50 000 line Frankensteins monster of bloat.
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
>and in no time at all it will look as good if not better //
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.
This is what React actually lets you do... It just also acknowledges that UI components must be sufficiently typed and coded that they can accept lambdas as properties in order to provide the expressivity needed. Template languages must be real languages because templates are macros at heart.
I expect Web Components will learn that lesson slowly and painfully instead, as they cling to the broken ideas that got us here.
At first I suspected I was becoming lazy now, only because I believed, against my own unsettling self ridicule I recognise that nervous giggle was, that I should have a pure distilled and faultless prompt / repl / vim / emacs install / ide / visual studio enterprise edition / PGI suite crystallised as if my own personal x-kryptonite shard, pulsing invitingly in my minimalist polar cave.
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.
I agree that old "ramps" are going to die and get replaced by newer ones as part of general technological progress, but your comparison to cooking is just nonsensical.
Using HTML+CSS to build a site from scratch is not at all like growing wheat... let's not make false equivalence fallacies here.
This seems like the whole don't learn CSS, learn bootstrap, foundation, bulma, etc. Don't learn javascript, learn react, or vue or angular. You can do a hell of a lot with css and html(including interactivity), and considering the amount of cross browser support you don't even really need a framework these days.
> I remember reading articles like this years ago.
>... 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.
Anything is leaner, faster than whatever Google does with Android Studio, and their continuously WIP SDK, where stable releases are a synonym for beta.
> important to not idolize or idealize the particular on-ramp you took X years ago.
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? […]
> Those ramps are going to die and get replaced by new ones.
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.
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 appreciate the thoughtfulness you've put into this, but I have to disagree a little bit.
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.
> Those ramps are going to die and get replaced by new ones. It's part of technological progress.
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 am still using the WordPress installation I set up around 2011/12. Complete with custom styles that are messy balls of entwined PHP and HTML crudely hacked on top of existing styles.
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.
Its funny, I'm just setting up Docusign right now, and it bears many of the signs of SPA-done-poorly, even in the most basic, constantly used parts of the UI.
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?
Hey there, I am a product manager at DocuSign. Sorry about your experience. I would love to dig into this - can you drop me a note at bilal dot aslam at docusign.com? Thank you!
> 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.
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.
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.
Out of curiosity: With all your custom hacks... is it still up to date? One of the biggest things that scares me about widely used web platforms is that they have widely known vulnerabilities. I tend to prefer a bit more home-spun code when I can manage it.
The only custom hacks are my own styles. Every so often it sends me an email saying "hey I just auto-updated to the new stable release". It's great.
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.
Same here, my web site went through manually edited HTML in the mid-90s with frames (I know...), XML with XSTL transforms, and now the same XML having those transforms replaced by PHP, it isn't great but does its job.
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 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.
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 :)
While I agree that teaching HTML and CSS well before jumping into frameworks is the right way to go, I can't blame students who're looking for what will most likely get them hired tomorrow.
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 a seemingly never-ending race just to keep up with the state of the art
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.)
“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.”
Whole industry is bit of an exaggeration. I’m implementing features to a decades old product and a new tech stack that grows on it’s side. QR decomposition and a bit of linear algebra never go out of style.
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.
Yeah, that's true, but as a peon you're not at the mercy of the business users. Your career tech choices are mostly determined by the horde of technical managers who spend 8 hours a day brushing up on the latest tech and fuck all of it actually coding anything other than a project boilerplate. Whatever they decide they want to use is what 80% of the industry is going to be hiring for. If you're good you can just avoid all that and stick to the other 20%, but that's probably not a great strategy for someone with less experience.
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.
Agreed. It's hard to believe given how much press all the trendy companies and startups get, but an awful lot of the web development world is nowhere near as flashy and modern as people online like to think it is.
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
To given an example of B, porting a VB.NET application that converts CSV files for their data measurments, done by someone with some VB knowledge thanks to their VBA macros, into C# due to single language policy for internal applications.
Migrating an aging custom Web site into a CMS platform like Liferay.
Is the tech industry at large truly that immature? You are describing a slice of the industry as hype and blog driven ADHD thrill seekers - and probably quite accurately - but is that slice really 80%?
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.
80% might be a bit ambitious, but it's probably not that far off. How much money do you think is in the web industry relative to the more grounded industries you've worked in?
Can't remember exactly what it was about now but it was all over the news here in Sweden. A few years ago there was some new cover tiles for houses. They were widely used because they were new and cheap but now they realized it was a ticking bomb. Turns out the house under the tiles was damaged from moisture or a reaction to the material or some such.
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.
My grandpa was commenting on some tiling that was being done in our house and mentioned that back when he did tiling they had none of these tools they use for tiling now and the result would have been close to impossible to do back then.
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.
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.
"I was sitting here, [reading HN] and drinking my coffee and replaying the [bug reports] in my head, when I had what alcoholics refer to as a moment of clarity."
Probably necessity. It pays the bills relatively easily, and if you live anywhere in an urban area (that doesn't have hackerspaces/shared workspaces readily available) it's going to be hard to find a place to practice a craft like woodworking when software development barely pays the rent on a small apartment.
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 a seemingly never-ending race just to keep up with the state of the art
>> 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.
The foundation of HTML and CSS was separation of concerns, yet the most popular web app framework mixes HTML, CSS and JS together and says that it's fine. That's the first moment of confusion for students who are learning React after doing the basic HTML/CSS courses.
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.
Yet here we are. The internet wasn't "meant" to be the global apex of commerce and communication, yet here we are. People started making more than just static documents because running programs on the web was fun and cool and it still is.
> 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?
Think more in terms of, say, Netscape Composer in the Netscape Communicator suite (or Microsoft FrontPage/Adobe Dreamweaver/HoTMetal as a browser mode or tab environment). Typing JavaScript in the console to create a DOM document that's easier to type up raw in a text editor sans JS ain't exactly the same thing. It's not even the same category of thing.
>If you are of working age, learning this shit is not fun
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.
I think it's fine to jump into frameworks and slowly delve into the fundamentals. I find it's better to build something first, even if you don't understand 100% what's going on; otherwise, I don't end up sticking with it.
The author seems to be resigned to the fact that HTML/CSS are skills that you should use as an introductory tool, 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 would be incredibly hard-pressed to find a long-term job that only wants HTML and CSS skills without a huge additional career-level skill like visual design or various JavaScript frameworks.
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.
Every time I look a restaurant's web page and see delays downloading javascript crap when all I want to do is see a menu I think a person could make a good living just building basic HTML & CSS websites for small businesses. The site would likely be more responsive than some dynamically loaded javascript bloat just to show a few pictures and bit of text. It would also be maintainable by anyone, forever. No framework updates or APIs to learn.
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.
This is exactly what I'm doing right now. Small businesses are being thrown HTML files and told to figure it out, it's crazy.
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.
I think this is a great angle to take. Small businesses don't care at all about modern web development, and I think sites like this best suite their needs. Keep it up :)
Good on you for doing this. I too build what people need, not just stuff the industry says I should. You're doing good work if you're giving people what they need.
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!
How do you get the business to agree to your design?
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.
The problem is that small businesses either don't have the money to pay for a quality static site or don't want to. If you want to get into this industry as a dev you're competing against sweatshops that shit out these garbage websites in 2 days for $200 apiece. They're not optimising for easy-to-use tooling or a quality end product, they're optimising for stuff they can copy/paste as quick as possible. Back in the day when I was learning HTML/CSS, that meant a bunch of shit jQuery plugins. Today I imagine it's React components or something.
Not contradicting you directly -- but many small businesses also value the personal impressions and trust a lot more, and many of them have been burned by those sweatshops.
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.
Which makes the author's pointless aversion to static websites strange. No, you often really don't need to have a database, relational or not, to just do a website.
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?
My understanding was that the author isn't against static websites in general, but rather is against kludging together a functional equivalent to a CMS with backend scripts or third-party tools, when a RDB would be faster and simpler.
To expand on that, sqlite3 will most likely work best for 98% of all blogs out there. You hardly need a dedicated RDBMS service if 2-5 people put new articles few times a week.
> The author seems to be resigned to the fact that HTML/CSS are skills that you should use as an introductory tool
…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.
Most websites could work without JS but they would be in a degraded form. You need JS when you want a select to change the fields displayed on the form. You need JS when you want to make the list resortable by drag and drop. You need JS when you want a page with a list to not reload every time you press delete on an item.
Sure you could make it work with JS but you would be degrading the user experience for no reason at all.
The developer must understand when it's time to use a framework. A small website with few pages doesn't need a frontend framework. But if you have to deal with a large/complex application using a web framework is not a bad idea as they offer a lot of reusable components, you don't need to "reinvent wheels" using HTML & CSS.
> The developer must understand when it's time to use a framework
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.
There's no moral panic about project managers though. Their decisions do not affect the excesses of software development in any way, only those of software developers do. ;-)
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.
Javascript gets begrudging respect from me because of node. I can see the appeal, you can take existing JS developers from 'wherever' that have good fundamentals and crosstrain to be able to do backend and frontend stuff. It's also got a lot of good builtin bits that older languages don't have natively. On top of this you could theoretically go full serverless with S3, API-Gateway, Lambda.
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).
What pisses me off is when people defend javascript with politics-heavy statements like inclusion, gender or whatever and then most of rational people just shut up. Backend tech or non-javascript tech is not gatekeepers. New comers just enter the wrong gate led by wrong people (you know I don't really mean people..)
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.
I blame this on the “appification” of the web. Before we had documents and web applications. The split was pretty clear at that time, one would approach making a website as you would a PowerPoint presentation. Layout stuff, put copy in... maybe make an animation using JS.
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.
One of the side effects of this problem I see is poor accessibility. So many devs learn the latest hottest javascript framework as the way to make a webpage. They end up making pages that are full of div + span soup, with complicated javascript interactions. Careful use of proper HTML elements and stylesheets go a long way that are often overlooked by bootcamp/CS degree hotshots.
Rachel Andrews is a great inspiration to me but the post here is kind of mid conversation, normally she emphasises document structure and accessibility.
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.
Yes, this is so sad to see. The obsession with frameworks and "JS everywhere" pushed the users interests out of the picture.
I really really miss the start of the XXI century when web was improving at a fast pace. All those web standards and accessibility initiatives where are they? Does anyone even use validators any more? Even if adherence to standards does not matter, accessibility still should. Alas.
> "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!"
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.
> 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.
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.
We didn't need bootcamps when companies just wanted html and css. Now that there are companies that want a lot more, we need bootcamps that teach that.
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.
> 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.
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.
> 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.
I think I agree. You don't need to setup an entire modern javascript build-chain in order to build a simple site, and if that's the advice that they received, it was bad advice.
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).
Modern HTML+CSS is way wayyy easier than in Internet Explorer 6 times. Back then you had to understand the box model and float intricacies and CSS hacks to make your page look acceptable in all browsers. A three column layout with a header and footer required a PhD in CSS.
That, and tools like Webflow, make learning HTML and CSS easier than ever.
That was reaction as well. CSS 20 years ago was an absolute horror, not just the browser incompatibilities but the sheer difficulty to achieve apparently trivial designs. You could only teach someone how to build a site in a day by strictly leading them along a golden path, as soon as they wanted to take one step off it on their own initiative they’d be met with an impenetrable mass of contorsions and hacks. That difficulty is a big reason why the utopia of a producer-led web never happened, looking back on it as a golden age, or an exemplar of when the web was intuitive, is in my opinion bizarre. Building a well designed simple, content-dominated website has never been easier.
Html, CSS, and Javascript are so, so much nicer today than the days of "needs to run on IE6". Flexbox is amazing. CSS has variables now. Building interfaces for the web has never been better, or easier, imo.
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.
> 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.
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. :)
>Why isn't the entry point <Ctrl-shift-c> into devTools, for example?
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'm talking about starting with about:blank, which would be the equivalent of writing HTML in an empty notepad/MS Frontpage window in the nostalgia years. Not starting from a heavyweight page.
Whenever I reflect on the "state" of the web the whole thing seems like such a mess.
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.
With a static site generator (SSG) you start with a document, and you end up with a document, using simple HTML, markdown or WYSIWYG editor. What the generator does is basically replacing server side include files, and SSG does a much better job as you do not have to litter your documents with the server side stuff. The SSG can also generate your index pages, sort documents and list them by keyword or topic, etc. SSG is basically the good parts of server side generating and static web sites mixed together. A SSG usually don't hide away your documents in a database, and you can keep your documents independent from your publishing and content management solution. Documents are the core feature of the web.
I'm STILL learning HTML and CSS after 20 years. Constantly surprised by new uses or semantics, or rediscovering a little known attribute or selector. One that comes to mind is background-image is an animated GIF with background-size: cover making it look like the page text is on the inside of a car window as its driving around.
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.
Not sure if I'm a bit behind the times with this one, but I remember that iOS Safari had issues playing inline videos and you'd need to use JavaScript + Canvas to get it working well there (compared to desktop browsers where a simple video tag doesn't go full screen).
So depending on your intended browser support, a GIF may sometimes work better.
>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.
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.
> 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.
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.
> However, 22 year old me would have looked at those things and run away. If we make it so that you have to understand programming to even start, then we take something open and enabling, and place it back in the hands of those who are already privileged.
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'm so glad this people are finally having this conversation.
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.
You're simply inexperienced and the time you've invested is pretty small. Every successful programmer spends years reading, learning and coding. You just have to keep going.
I would really love to have lived in this imagined world where everything was simple, and you could easily learn to do everything and do everything in HTML and CSS.
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.
The web with HTML, CSS and the amazing Javascript was a simplification of previous systems.
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.
Just a musing, but perhaps now is a good time for the resurgence of Flash or something like it. A lot of designers I know learned ActionScript because they needed to gradually up their Flash game.
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.
Funny you should mention the F word... while reading "The Great Divide", I was thinking about the "Flash designer vs. Flash Developer" situation we had before the iPhone :)
This is a tooling problem imo, and whatever tool that is should just output javascript that works on a canvas. There's no reason to cram another programming language like ActionScript into browsers by default.
Anything that installs and runs like Flash/AS is going to raise security concerns though. Please let's not repeat all that bullshit.
> If we make it so that you have to understand programming to even start
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.
It makes much more sense to approach web dev/design from a conceptually high level, outside in (if you consider CSS as the inside).
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.
> 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.
> If we make it so that you have to understand programming to even start [web authoring], then we take something open and enabling, and place it back in the hands of those who are already privileged.
Very much agree with this conclusion, though entry level web devs trained on eg. React might be too invested to acknowledge this.
I guess I'm not sure exactly what her point is, or who she's mad at exactly. If there are vanishing entry points, it's what the market is demanding: more complex applications that look and feel like the big players. Single page checkout flows. Client side form validation. Who wants to have to post a form, wait for the page to reload to see that you've missed a required field?
> 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.
Not sure what apps you are talking about. The modern web loads immediately, then slowly snaps in user controls and buttons. Instead of pressing something and having an immediate response, now you press a button and if you are lucky, the lazy javascript developer who wrote it remembered to add a loading symbol. And you are usually not lucky.
+1. My browser already has a progress indicator baked into it. Thank God those lazy JS developers move all the heavy lifting to a secret place where I can't see what's going on.
My progress indicator indicates fast progress these days!
I am not so sure about "complex applications". More often than not I see sparrows being shot at with a canon. Some web site which is not even an application, but loading megabytes of JS just to show 200 bytes of information. For some reason they call this PWA. Except all already forgot what was supposed to mean.
She's longing for the "good old days" when web development was easier to learn, but AFAIC the good old days were 15 years before that when the "entry point" was C64 basic and there was no world-wide web. I would have written something similar in 1999 when I saw everybody goofing off with HTML and CSS and having important things like ASCII codes and memory allocation hidden from them.
I'm starting to think that the web is just fundamentally not sanely salvageable at this point from a dev perspective. It really does seem to just slowly drive a lot of people insane after spending at least a decade in it.
Not sure about the overall ideas in this one. I am currently writing apps in Angular using Python on the backend. Just got a new contract. My career started years ago with only HTML and CSS.
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.
I work on a pretty huge and old application. Parts of it are written using php/vanillaJs, a large part of it uses jquery, a huge section is backbone/marionette, and we started a new section using React last year.
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
I'd love to go in the other direction. Force it all to be written in Haskell, or some other awkward thing, and have it so that the binary has to run comfortably in under a megabyte. Or heck, it's 2019, let's be generous and make that 10MB! Limit things to people who take their craft seriously, and filter out all of the half-assed woo-look-at-me money-chasing BS.
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.
What were app dev entry-point positions like in the (good? better?) old days of desktop applications, before the many-headed Hydra that is the Web came and ate everything?
If you could build your own hello world WinForms program with some interactions, you had a reasonable chance of getting a junior position if you had some education.
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.
Tools like Delphi still haven’t been matched for GUI development: I was able to use it as a 6/7 year old to create little programs with buttons that popped up message boxes when clicked. And, if I needed help, I just clicked something on screen, hit F1 and got great documentation.
I had the same experience with Delphi and similar tools.
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 agree wholeheartedly. Often these arguments look like the curmudgeons vs the crazy kids, but it's a deeper philosophical point.
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.
This is why Glitch is cool because all the code on there is open and editable. I think HTML and CSS are still entry points, but not being able to see the code for stuff is tough. It's sort of ironic that we have all this open source code now but it's much harder for a beginner to read most of that than just hitting "View Source".
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).
This is part of the reason I enjoy Beaker Browser so much. It makes the web fun like it used to be. You can easily make a site and publish it instantly. And you can just use a markdown file to render the page! https://beakerbrowser.com/
I made a complete editor for a trivia game just using vanilla HTML+CSS+JS in half a day. All of the people that should maintain it asked me why I didn’t at least use JQuery or JS framework du jour.
Mind you, this was a completely functioning back-end interface already.
Can anyone comment on the quality of the CSS workshop at the bottom of the article? I am a bootcamp grad and I do feel like CSS was covered only very briefly...
> 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.
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?
You can, and there's nothing wrong with it if that's what you need to do (using word/google docs).
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.
If you have 2 million academic papers in PDF format and the deliverable is a table of p-score by school. HTML is a compromise between ease of use and keeping metadata in the document.
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.
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.
HTML and CSS are probably the absolute worst thing for document creation and management. HTML/CSS are in fact complex, and suffer major issues with export, long-term backup, sharing/collaboration, revision control, review-workflows, printing, security (encryption and password access) and consistent presentation. This is why you want government documents stored in PDF, ODF, or DOCX and not in HTML/CSS.
I get that it's empowering, as a hobby I spend a lot of time on it! But much like building a ship in a bottle, mastering the unicycle, or running your own enterprise-grade server rack at home, I can't justify such a painstaking and intricate craft with proportional utility.
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!)
Webflow makes HTML and CSS visual, and super approachable while also being a great bridge into frontend JS dev. There are many on-ramps to a coders future.
Are HTML and CSS really vanishing though? 99% of the websites are still built on them. People starts replacing them when they build applications, which is fine imo since HTML and CSS were not conceived to build applications.
The modern web feels a bit like ground hog day. We're running around in circles. I think of it as a collective delusion that CSS/HTML is actually remotely good at what it is supposed to do. It's not. Most of the modern web is a UX disaster shit show. Brutalist design is actually making a comeback because people are just disillusioned with the perpetual inability of web developers to produce things that are both functional, usable, and beautiful. Mostly usability goes out of the window first, soon followed by functional. HN is a fine example of not bothering with any of that stuff. That's why we all love it. But is this honestly the best we can do with the web?
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.
... 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.