Schooltijd

I was in Amsterdam last week. Usually I’m in that city for an event like the excellent CSS Day. Not this time. I was there as a guest of Vasilis. He invited me over to bother his students at the CMD (Communications and Multimedia Design) school.

There’s a specific module his students are partaking in that’s right up my alley. They’re given a PDF inheritance-tax form and told to convert it for the web.

Yes, all the excitement of taxes combined with the thrilling world of web forms.

Seriously though, I genuinely get excited by the potential for progressive enhancement here. Sure, there’s the obvious approach of building in layers; HTML first, then CSS, then a sprinkling of JavaScript. But there’s also so much potential for enhancement within each layer.

Got your form fields marked up with the right input types? Great! Now what about autocomplete, inputmode, or pattern attributes?

Got your styles all looking good on the screen? Great! Now what about print styles?

Got form validation working? Great! Now how might you use local storage to save data locally?

As well as taking this practical module, most of the students were also taking a different module looking at creative uses of CSS, like making digital fireworks, or creating works of art with a single div. It was fascinating to see how the different students responded to the different tasks. Some people loved the creative coding and dreaded the progressive enhancement. For others it was exactly the opposite.

Having to switch gears between modules reminded me of switching between prototypes and production:

Alternating between production projects and prototyping projects can be quite fun, if a little disorienting. It’s almost like I have to flip a switch in my brain to change tracks.

Here’s something I noticed: the students love using :has() in CSS. That’s so great to see! Whereas I might think about how to do something for a few minutes before I think of reaching for :has(), they’ve got front of mind. I’m jealous!

In general, their challenges weren’t with the vocabulary or syntax of HTML, CSS, and JavaScript. The more universal problem was project management. Where to start? What order to do things in? How long to spend on different tasks?

If you can get good at dealing with those questions and not getting overwhelmed, then the specifics of the actual coding will be easier to handle.

This was particularly apparent when it came to JavaScript, the layer of the web stack that was scariest for many of the students.

I encouraged them to break their JavaScript enhancements into two tasks: what you want to do, and how you then execute that.

Start by writing out the logic of your script not in JavaScript, but in whatever language you’re most comfortable with: English, Dutch, whatever. In the course of writing this down, you’ll discover and solve some logical issues. You can also run your plain-language plan past a peer to sense-check it.

It’s only then that you move on to translating your logic into JavaScript. Under each line of English or Dutch, write the corresponding JavaScript. You might as well put // in front of the plain-language sentence while you’re at it to make it a comment—now you’ve got documentation baked in.

You’ll still run into problems at this point, but they’ll be the manageable problems of syntax and typos.

So in the end, it wasn’t my knowledge of specific HTML, CSS, or JavaScript APIs that proved most useful to pass on to the students. It was advice like that around how to approach HTML, CSS, or JavaScript.

I also learned a lot during my time at the school. I had some very inspiring conversations with the web developers of tomorrow. And I was really impressed by how much the students got done just in the three days I was hanging around.

I’d love to do it again sometime.

Have you published a response to this? :

Responses

Richard Rutter

@adactio “They’re given a PDF inheritance-tax form and told to convert it for the web”

I’m curious to know if they had the opportunity to optimise the user experience of the form for an online environment, eg. splitting it up into a sequence of questions, using progressive disclosure, branching based on inputs, etc?

Roel Nieskens

@adactio I had the privilege of making nice things in CSS with these students, just a few days before. Unfortunately I had to be back home when you were there, I would’ve loved to absorb the vibe that teaching and learning puts in the air. Like you said, some of these exchanges are very inspiring. It both drained and recharged my own battery! :-)

1 Share

# Shared by Vasilis on Thursday, March 21st, 2024 at 1:34am

3 Likes

# Liked by ✏️ Erik on Thursday, March 21st, 2024 at 1:30am

# Liked by Krijn Hoetmer on Thursday, March 21st, 2024 at 1:33am

# Liked by Bramus on Thursday, March 21st, 2024 at 1:34am

Related posts

CSS Day 2022

Excellent as always.

The datalist element on iOS

Some buggy behaviour has been fixed in iOS 18 but now there’s a new bit of weirdness.

Declarative design

Defining the inputs instead of trying to control the outputs.

Good form

Science, the web, and user experience.

Mind the gap

If you’re making a library or framework, treat it like a polyfill.

Related links

Progressive Web App Dev Summit 2016 | Home

Google have asked me to moderate a panel on the second day of this event in Amsterdam dedicated to progressive web apps. Very brave of them, considering some of my recent posts.

Tagged with

The New Digital School - An Alternative to Design Education by Tiago and Cláudia Pedras — Kickstarter

You can back Tiago’s excellent New Digital School. It’s a fantastic project with the web at its heart, and I really hope it gets funded.

Tagged with

Code Club

This is an excellent idea: get a whole bunch of after-school code clubs going to teach kids how to code in Scratch.

Tagged with

Introducing TODS – a typographic and OpenType default stylesheet | Clagnut by Richard Rutter

This is a very handy piece of work by Rich:

The idea is to set sensible typographic defaults for use on prose (a column of text), making particular use of the font features provided by OpenType. The main principle is that it can be used as starting point for all projects, so doesn’t include design-specific aspects such as font choice, type scale or layout (including how you might like to set the line-length).

Tagged with

New magic for animations in CSS | Chase McCoy

Hallelujah! We’re finally getting our two wishes for CSS animations and transitions:

  1. Animating to and from display: none; for the sake of enter/exit animations.
  2. Animating to and from the intrinsic size of an element (such as height: auto;).

Tagged with

Previously on this day

5 years ago I wrote Nice

The meaning of life.

12 years ago I wrote Placehold on tight

Getting consistent browser behaviour for the placeholder attribute.

13 years ago I wrote Of Time and the Network and the Long Bet

Matt has accepted the challenge I threw down in my Webstock talk (which has now been transcribed).

18 years ago I wrote Twitter… again

Even if you don’t like it, let us have our fun.

20 years ago I wrote Split personality

I realised something while I was at South by SouthWest: I’m an online introvert.

22 years ago I wrote Uncle Alan

Alan Keith OBE passed away yesterday.