A guest post by Ingo Steinke. Ingo is a sustainable web developer with over twenty years of professional experience.
Many developers lean towards idealism. Even though we may not all share the same ideals and may argue about perfect algorithms and coding styles, we sometimes surprisingly agree on which projects, technologies, or behaviors are unacceptable. Some values endure trends and opinions. I hope that accessibility, social justice, and environmental protection will soon become as integral to non-functional requirements as code quality, documentation, and test coverage. Currently, however, these are ideals that often fall short in practice.
How Choosy Should Developers Be?
Some developers and designers want to work exclusively with clients who share their ideals. However, only a few of us can afford to be so choosy. But even with suboptimal projects that don’t come from our ideal clients, we can still make them mutually satisfactory. After all, I don’t ask my clients if they value syntactically correct JavaScript.
Page Load Time and Accessibility: Keep It Simple!
Missing requirements can often be tacitly considered and priced in. Large projects with big budgets not only offer such leeways but also the opportunity to effect significant changes through small improvements. If we can reduce two megabytes of data on a website with millions of visits each time, we not only save energy but probably also costs, and end customers are pleased with faster load times. Semantic markup and keyboard navigation prevent unnecessary barriers and, incidentally, increase the number of potential customers.
Many improvements don’t even require extra effort if we, as developers and designers, pay attention to them from the beginning. If I had blind or deaf colleagues on the team as a junior developer, some of those projects back then would have naturally become accessible, with or without official requirements. Now, even as a solo freelancer, I always do my best and run automated audits as regularly as performance tests and static code analyses. While none of this replaces thorough human review, such automation is a significant advancement compared to earlier times.
I still remember the arguments over tabs and spaces or Windows and Mac line breaks. Nowadays, a few configuration lines are enough to implement the respective standards unnoticed. Likewise, page load time and accessibility can benefit from automated guidelines, such as offering image files optimized in modern formats, ensuring sufficient color contrast for readability, and considering media queries like prefers-reduced-motionwhen designing with animation and transparency.
Sustainable and accessible web development is possible even when the customer doesn’t care. What’s more important is that as designers and developers, we pay attention to all relevant details from the outset.
Pragmatism and Intuition in Web Development
Quality assurance can eliminate many but not all uncertainties. Initial extra effort diminishes when quality-conscious work becomes habitual, and typical test units can be adopted from existing projects. Automated tests and audits can easily detect certain types of errors and issues. Therefore, test-driven development is no more an end in itself than clean code or agile methodologies. While requirements for classical programming can easily translate into test specifications, frontend web development inherently evades one hundred percent test coverage. Some element of a website will look incorrect on some older iPhone, and then many forget that websites can be not only viewed but also printed and read aloud. From professional experience, a kind of intuitive sense can arise about which areas I consider non-critical and which I will scrutinize more closely after code review. Adhering to guidelines, artificial intelligence or machine learning, and my human intuition complement each other quite well here, perhaps similar to how chess computers (as early forms of successful AI) combine different strategies to efficiently limit their computing power to relevant solution paths.
Atomic Commits and Pareto Pragmatism
Pragmatism should also prevent us from getting lost in seemingly elegant detail optimization. The Pareto principle postulates that the last 20% of results require 80% of the effort. Therefore, before reaching the 80% mark, we should ask ourselves if we are still on the right track. Atomic commits and trunk-based development are further strategies to always have stable intermediate states that we can present and discuss in a status meeting or during occasional pair programming.
Are you looking for a Web Developer?
Future Topics: AI, Accessibility, Environmental Impact
Artificial intelligence can help me complete ongoing code and recognize typical errors. But it won’t make me unemployed because despite its productivity, it lacks empathy and judgment.
Technological trends are difficult to predict, while legal regulations rarely come as a surprise. By now, all developers have probably heard of the General Data Protection Regulation (GDPR). The Barrier-Free Strengthening Act (BFSG) for implementing the European Accessibility Act (EAA) sounds new, but its content aligns with the familiar Web Content Accessibility Guidelines (WCAG), implementation of which should already be a matter of course. Upcoming ecological transparency obligations and new methods for determining digital pollutant balances will add further aspects to everyday requirements that we currently view as optional ideals.