Content

Web development and code slavery (programming)

Page is part of Articles in which you can submit an article

written by owen on 2020-Sep-06.

related image

The struggle of software programming is everywhere.  Game programmers have thier own struggle.  Apple iOS devs know it all too well.  But even if you live in an ecosystem where you have to pray to the unseen approval gods - there are programmers who live in a worse kind of hell.  It is a hell of design patterns, tutorials, APIs and your best effort is never enough.  I've been tardy on publishing lately so this might be a long rant.

A dawn of a new age of the modern web

At some point during the early 2000s or thereabouts (no one is really sure when the robots blackened the sky) a new web appeared; a bubble inside the old web.   Simply outputting raw HTML was not enough - a group of people decided that they needed to be more, MUCH MORE!  More layers, more tools, more everything.  So they inserted themselves into the workflow between the web developer and the HTML output.  Trying to solve a problem that they are still trying to solve it to this very day: how do we make everything more complicated?

Yesterday, I was looking at a programmer job posting and was awestruck by the random requirements that were listed.  The job was entitled "software developer" but the requirements with something along the lines of NodeJS, Python, PHP, Bootstrap, Drupal, HTML5, Javascript, CSS3, SCSS, Strong analytical, research and problem solving skills.  Basically a host of random interleaving things that seem to have been copied from a stackoverflow poll.  Clearly they needed a web developer.  In reality the list might have been well thought out but it was hard to tell.

The whole scenario reminded me of a previous article I wrote called "the ideal candidate".  In these cases I always assume that these job postings are written by HR rather than actual project managers in a kind of "let see whats out there" way - fishing for people.  The brave applicants would be wise to focus on their best skills and ignore the rest but who is to tell what is being taught in virtual schools these days.  Of late these job postings are leading me to surmise that "web development" as a profession is no longer about programming.  Web development has become the art of gluing things together, creating numerous beginner tutorials for a ever changing API.  Essentially a modern form of "code slavery".  Web developers are a group of people at the mercy of constantly changing standards and frameworks.  The simplicity of the internet has become an arms race for exploitation.

MVC, Frameworks, APIs are all busy-work

I have talked at length before about PHP composer but essentially package management tools are ways to auto-update + auto-deprecate a bloated ecosystem.  But these web platforms/systems are not simply bloated, they are honey pots for unsuspecting individuals who desire to become programmers.  Some survive, many do not.  Most are subsumed because they spend all their time learning an API that is designed to waste their time, energy and eventually their money on the paid tiers.  You know the API is limited but it will get better in the future - I promise.  We just need to build critical mass, get more stars on git.  A promise is comfort to a fool. This is a new way to use JavaScript inside the MVC framework of a php app. The Model and Controller are in php and the View is in JavaScript.

Simple things are easy, hard things are impossible

In web development the plethora of beginner tutorials is a facade for businesses that surround these web dev platforms.  Web developers start out with a nice simple video tutorial or 6 week boot camp in which they create a MVC todo list - before long they realise they are down a rabbit-hole ecosystem of GIT, Slack, TDD, yaml, cloud servers, serverless platforms, zero downtime deployment, queue management, micro frameworks, microservice architecture, provisioning virtual machines, PAAS, SAAS scaffolding, IDE auto-completion, Asset compilation, billing services, browser testing, authentication services, REPL, caching services and a deep web of magical command line tools.  We went from CLA to GUI then back to CLA why?  because CLAs solve a whole set of cross platform problems.

All these things lead to paid tiers and endless maintenance/upgrade nightmares.  The few who survive encourage others to join them for affiliate points. These cheerleaders/futuregeeks are never available when things go wrong.  Send you to the docs because THIS IS NOT A HELP FORUM!  All these web beginners need somewhere to go when they have problems but none of the professionals want to help them so they send them to google so they can search their way to success.  Imagine creating all these headless chickens and then not wanting to help them?  Do not re-invent the wheel.  Coding your own stuff is strongly discouraged because it is non-standard and how would I write tutorials about it?

Making the web a better place

Best practices, design patterns have become quintessential in web development - they are everywhere.  The gish of it is that web developers are sheep to be led.  The simplicity of the web brings the teachers out of the woodwork. There is a best practice for basically every backend, middle or frontend feature that can possibly be created now or in the future.  Best practices are the Chinese telephone of web development; someone will read some article somewhere on the internet that will say this code will make your project/framework more maintainable/faster/better/stronger.  There is a whole consultancy business around these design patterns, instructing web developers on how to be a success.  These consultants jump in at the start of the project and disappear before anything gets complicated.  The key feature of design patterns is that they make grand promises but neglect edge cases and hard problems.  If things go wrong it's the fault of the developer, client or wrong tool for the job, etc.  I've also written about the thought process behind design patterns but essentially they exist as memes.  One of the most noteworthy examples is the history of the Angular framework.

Lean, Agile, professional, functional and easy to use

It is a crazy world out there.  It can take you 3 weeks to change the colours on a login screen.  Web devs will write code that is 19 times the size so that they can meet standards set by other web devs.  Look at this code;

$timeUntil = CalendarTime::fromDateTime($until);
        while (true) {
            $now = $this->clock->now();
            if ($now->isAfter($timeUntil)) {
                break;
            }
            $this->announceTime($now);
            $this->clock->elapse(new Seconds(1.0));
        }
    }
This is modern web development.  This is a fully testable, mockable OOP API for managing clocks and its open source with camel case function names.  This will be on LTS in 6 months i.e. if it even gets one star.

My Open source project, library, API is compliant with this design pattern

A subset of web developers who have survived the beginner stage take it upon themselves to enslave other developers by creating even more layers and APIs.  There is no real problem to solve but merely wrapping stuff inside other stuff and calling it open source.  These modern devs just want to be middlemen.  Core language features are not safe/risky so here is this open source clock/date/threading/file/google/single-sign-on wrapper with 10k lines of code that you can include in your project.  It will save you 10 years!  oh this feature is missing?  Because its open source you can write an extension / send a pull request! sign up to our discord server so we can form a community and discuss your pull request!  I have seen APIs written to wrap other APIs that were written by first party companies that require API keys that expire every 3 months.  fml.  If we want the web container and the message consumer worker to be able to access the same mount, we need to create a file service

The future is untold and we are not going to tell you

The modern web is a moving target -  entire sections of web development are slowly created and destroyed like volcanic islands in the middle of the ocean.  A cosmic soup of "stuff", segregated into various communities, newsletters, lists, slack groups, reddit boards that turn a blind eye to each other hoping to not distract their loyal followers.  This is the modern version of a chain gang;

a group of prisoners chained together to perform menial or physically challenging work as a form of punishment.[1] Such punishment might include repairing buildings, building roads, or clearing land.

Except in the web development case these people are unpaid bug testers and R&D.  If you look into these groups there will be thousands unanswered feature requests and bug reports by fools, consultants and early adopters.  After a few cycles these web developers become emotionally, financially and absolutely dependent on the virtual ecosystem and hence lose all objectivity.  They will retweet and upvote any press release as if food was thrown into a pen of hungry pigs.

Check out this new tutorial

Major versions of web platforms are being released like clockwork on schedule.  Get ready for 50k tweets on release day then messages stating project is on LTS and insecure/technical-debt only 6 months after the code was written.  This is not a help forum.  Tutorials are rendered pointless as all the version numbers have changed.  Worse yet little things about the platform API has also been deprecated because guess what?  PUSHING THE WEB FORWARD!  Of course tutorials authors like this churn because it gives them a reason to regurgitate content in a new updated form.  Someday the web will solve world hunger but it is unlikely.

Conclusion

I have seen API code go from 5 lines to 10 to 200 then back to 50 lines in as little as a year.  The code gets shifted around, wrapped and hidden for various reasons mostly related to OOP scaffolding, and annotations.  I do not know how modern web developers get anything done.  I am seeing fewer and fewer completed projects while an increasing number of renamed APIs and patterns.  I have seen web devs release stuff that are at best spawns of satan - 50 fonts, 10 meg landing pages, 64 bit websites that spin up client CPU cycles on every scroll of the page.  You can probably save them server costs by not using it.  Web devs now have squarespace personal websites because having a personal website is so complicated and keeping up with the release schedules is impossible.  Some dont even have a website at all but live on gitpages or on social media.  Why risk building a website and paying for hosting when no one will visit it?

Of course this is all the fault of the poor lazy web developer.  Sucks to be him/her.  Get good.  Use Rust.

permanent link. Find similar posts in Articles.

comments

    Comment list is empty. You should totally be the first to Post your comments on this article.


comment