What We Should Teach Up-and-Coming Developers
Post from August 31, 2017 (↻ December 19, 2019), filed under Web Development.
On a recent return to Istanbul I wondered, what’s actually important to teach new web developers these days? And I thought, evidently, learning is important, and learning strategies are, too, and how to generally work on ourselves, absolutely, but what else to aim for apart from understanding computer science fundamentals, reading the specs, and—coding?
I believe we absolutely need to keep on pointing to basics and to specs, the latter because they are such great sources. But then we need to teach great principles. And also great ethics.
Great sources are sources that are accurate, of high quality, reliable, and that have the big picture in mind. An ad hoc definition (it’s 7:41 am on a gray Wednesday morning here in Hamburg). Great sources are about learning our craft.
The big picture is most important, perhaps more important than accuracy. Why? Because our field, web development, consists of so many sub-disciplines that when only one of them just thinks of themselves, the whole field suffers, and web developers learn whack.
A quick example: When in 2009, performance evangelists (back then, that usually referred to Steve) measured the performance of selectors, we discovered that the universal selector is most expensive performance-wise. What did everyone start doing? Freak out, spell out a TSA-style universal ban on universal selectors, and thus make everyone write more complicated, less understandable CSS code. Now, Steve had done amazing pioneering work there, but great sources become even greater when they caution about conclusions and side-effects—here, because performance of selectors is largely irrelevant (about which Steve did caution). The occasional universal selector doesn’t hurt, and by the time our style sheets contain those slow-making tens of thousands of selectors, we typically have different problems. That is one example, and I’ll write more about this issue elsewhere.
The importance of reliability of a source should be obvious as should be, I venture to say, the importance of quality as well as accuracy itself.
What and where are those great sources? This is a little trickier to answer. I’m a skeptic (that’s why I sometimes seem a little strict or non-committing) but technical specs are one prime source for us, because they normally meet all demands from our list. (Big picture thinking may suffer there, too, however—we’ve had some troubles with CSS for that reason—but try writing even a small draft without looking into neighboring territories.) And then there are some great publishing houses and publications (mentioned first because they can exercise more power to cross-check the information given) and some great experts to consult. Which ones these are? Not for a single individual to answer, perhaps. (On my end I’ll update my list of sources to call out tech sources.)
Great principles are important to teach because they are structuring and guiding our work without making us too strict and uninnovative. They help us “counter complexity and trends.”
This is really important. Great principles are about our craft, too, but also about developing a vision. They are even more important to learn if one feels one would need to violate our very principles, for “the young man knows the rules, but the old man knows the exceptions.” That’s a bit misleading, for focus here is on that we can only break the principles effectively (for our benefit) once we know and understand them.
Now, as our field and each of the related disciplines keep on maturing, we actually have a great set of principles to teach. The greatest overview is probably maintained by Jeremy (including higher level principles you’ve known from this site) so to give a good taste.
Great ethics are increasingly important, but existing materials are scarce here as I’m also a bit demanding. As web developers we also have responsibility. In the past that responsibility may not have amounted to much, because what is it to firing up and clicking around in Dreamweaver and uploading some .HTM files through WS_FTP (that was my agency work like in 1999).
But here are two responsibilities that would be good for us to exercise and teach.
One is that we, no matter that we are not politicians or celebrities from whom we’d desperately wish greater character and better guidance, should lead by example. I don’t deem it out of bounds to ask us, as more experienced developers, to become better role models, both professionally and socially. It’s time we stop glorifying nerdiness to conceal social anxiety and lack of courtesy. It’s time that we step it up so that strong character and social skills are much part of a great expert in our field as are having a website and, sarcasm, collecting commits on GitHub.
Two is that we actually display more awareness of the actually ethical aspects of our work. What are we doing? This is easy to tell when we’re working for a governmental agency that builds a criminal, undemocratic surveillance apparatus and we’re doing the UI for the intranet homepage. It’s hard when we’re working for an agency that just so happens to build a marketing page for Krauss-Maffei Wegmann. No, we have no professional obligation to do something about immoral things. Yes, we absolutely do have a professional obligation to do something about immoral things. Speak up. Refuse. Leave. Do a Snowden.
❧ Great sources, great principles, great ethics. I believe these should be paid most attention to in a web development and design curriculum. It’s probably easy to agree to this, as it reminds of the old Lippmann story of “support our troops”; quoting Chomsky, “the point of public relations slogans like ‘Support our troops’ is that they don’t mean anything… that’s the whole point of good propaganda.” But here I’m not writing as a scholar, as someone who offers up curricula. I’m writing as someone who likes to inspire others to think about these issues with me. And I’m writing as someone who realizes he cannot change much without other developers and tech managers. Developers and managers like you. Thanks 😊
In the manuscript of a new little book I’m working on, on CSS optimization, I’ll argue that teaching developers certain mindsets is even more important. I don’t see that as a contradiction to the points made here, but rather as summing them up—the striving for excellence through the best sources, the strongest principles, the greatest ethics seem to converge—or result!—in particular mindsets, on web development. I strive for but don’t claim perfection in the posts on this site—otherwise I couldn’t publish a thing—, so I’ll ponder the matter a bit more, and if you have thoughts on this, please share them, too.
If you have a question or suggestion about what I write, please leave a comment or a message.
Have a look at the most popular posts, possibly including:
Perhaps my most relevant book: CSS Optimization Basics (2018). Writing CSS is a craft. As craftspeople we strive to write high quality CSS. In CSS Optimization Basics I lay out some of the most important aspects of such CSS. (Also available in a bundle with Upgrade Your HTML and The Web Development Glossary.)
Looking for a way to comment? Comments have been disabled, unfortunately.