DEV Community

Ludovic Fleury
Ludovic Fleury

Posted on

Big ball of mud

Like many passionate people who program, I love progress. I'm fascinated by inventions and hyped by innovations.

I truly believe that professionals in our sector are curious about technology with varying degrees.

Many soft-skills or traits shape our work style. Rigorous, for instance, improves the robustness of our task. Creativity sparks crazy or smart hacks. Determination energizes our tough sprint.

Curiosity powers us, combine it with passion and this premix could kick off any profile into any sector.

Curiosity calls for discovery, innovation and progress. Obviously I never innovated, technically-speaking. Most of my “mind-blowing” or “life-changing” tech discoveries which pulsed my career were in fact established ideas that were theorised decades ago.

Curiosity fertilizes technical debt, risk we couldn’t afford, knowledge we partially understood, patterns naively implemented.

Bringing new tech, the last storage engine, the last framework and the last orchestrator is already a risk and you've got enough rants on Twitter for any of them.

Worse… I’ve witnessed lately that devs would bring in architectures or software engineering principles hyped by the community.

This. Is. A. Nightmare. Behind is a great intention, beyond is a technical debts factor on almost each commit.

Few years ago, when a junior would build and run a Web based application: the code could be spaghetti and the dedicated Debian, a public trash.
Now, imagine the same junior:

  • a backend language/framework with CQRS/ES using NoSQL and SQL, probably some messaging bus.

  • a frontend framework. The whole frontend ecosystem is trying to reach maturity at the moment.

  • a container orchestrator deployed in the cloud relying on 3 to 10 services.

A decade ago, rookies were crafting artisanal mess. Now, they produce industrial disasters. I'm no better and would surely be a 10x on that field.

The problem is always the same: "meaning", the lack of.
In our code, in our commit message, in our acronymized best-practices, in our company, in our team.

Internet is so real-time and crowded that trends are wrongly positioned as standards.

In the last 5 years, php was stormed by DDD (domain driven design). Amazing. Now the reality will be more like a repository that’s totally messed up with the infra layer, app layer, core domain, aggregate root, services.

DDD is trying to solve something so obvious that we missed the benefits of it, while paying the cost of the upfront complexity (+ the debt).

This is one specific example but others crossed my paths regarding dev, ops, data…

Stay focused on the meaning.

  • What's the meaning of what I'm doing.
  • What's the meaning of this feature at this stage of the project in this business context.
  • What's the meaning of this pattern/tech.
  • What's the meaning of these 400 LOC and 300K dependencies for this Hello World.

Iterate on your knowledge as well, failing is learning. Innovation is great: you bring it, you own the risk.

A big ball of mud or a serverless microservice won't define a meaning or express any.

The machine is still stupid, so our job is mostly to give it a meaning, meaningfully.

Thanks to Azurrex for the proofreading

Top comments (2)

Collapse
 
fernando_ayon profile image
Fernando Ayon

Great article! Surprised to see that it was published a year ago and no discussion yet. I fully agree on this. Meaning is everything but at the same time companies keep hiring developers to just develop, like human machines, you just have to produce, this is what is expected from new hirings.

Interestingly, this is also the reason why devs that start asking questions and really get invested in the domain part are more noticed by management and get promotions quickly.

Collapse
 
ludofleury profile image
Ludovic Fleury

Thank you Fernando!

I really like to quote: "people think tech followed Darwin principle, but they don't remember that this theory is based on fitness and not greatness".

I'd also like to question the education system regarding IT. We teach the "how", barely the "what" and never the "why".

As a reminder, Windows 95, a full fledged OS, weighted 15 Mo. Now it's a classic JS bundle size in web frontend...