When I first learned what we call web software development I was in middle school. I remember going to Barnes & Noble with my parents where I picked up a book called HTML Goodies by Joe Burns. HTML was magical. It took little effort to write a few lines of code that changes the presentation of your text on the screen. As I hit the limit of what I could do with HTML the arrival of Javascript let me sprinkle some magic into the site. A little learning lead to lots of magic.
In 2014 we got the arrival of HTML5. There were lots of great new features but a main difference is that HTML5 focuses on using semantic markup, tags that annotate the type of content, instead of presentational markup. Responsibility for presentation of the content was largely moved to CSS. Unlike the way the typical user formats their Word documents where they try to make it “look” the way they want, web developers are now responsible for thinking about annotating the content of the type of document and then styling it in a separate language.
The good news about CSS is it is powerful and well documented. It generally improves over time, but as the number of features grows so does the learning curve. The W3C posts its drafts on GitHub. If you want you can read over 20,000 commit messages about how the CSS specification has changed over the years. As you use CSS you need to think not only about what features to use, but whether those features are available on other web browsers. Documentation like the Mozilla Developer Network can help you understand this. MDN documents around 600 keywords you might need to know to style your document, not including pseudo-classes, and 12 pseudo-elements you might need to know to fully understand CSS.
A big movement in web development is accessibility. When I started building websites we did not think about accessibility. Companies like Apple developed screen reading technology and other amazing tools and techniques to make websites more accessible to folks with disabilities and then software developers came up with new ways to break them. Now many developers think about how to make their websites work better with these technologies. This zeal is a boon to folks being able to read websites (and follow the law) but it has created a new tax on development. A developer must not only learn how to make their website accessible but they might need to familiarize themselves with a new series of attributes and develop appropriate content and information to populate them based on content. People used to worry computers would steal the jobs of people, but web accessibility has demonstrated the opposite. Where the machine previously did work to translate simple markup into text that is read aloud, the complexity of websites and this technology has created a new field of work.
While no particular thing may be challenging to learn on its own, the multiplying features of software increases the gap of knowledge between experienced and inexperienced developers. Becoming a developer becomes more challenging, and inequality between top software firms and other organizations grows. I worry that as we innovate our way out of one set of problems we are either creating new challenges or shifting the work from one group of people to another.