28 Jul 2023

Custom software development

You receive a new task to start a brand new project.

Your eyes light up. You're epic software developer.  And you finally have the opportunity to use the perfect dev stack you've always wanted - you decide to use every new shiny framework, library etc....

Of course there is no better preexisting battle tested framework/system. You neeeeeed to build everything yourself.

Who needs already successful cms'es with extensible dashboards? Are you nuts?

Django cms? LARAVEL + Nova? Typo3? Joomla? OctoberCms? It's all a joke!

You see, all these giants are just way too generic. Using well written ORMs to retrieve data? Are you crazy?

We need GraphQl to get custom data types for specific needs. We want backend to be more flexible by overloading it with fancy woodoo abstractions. Writing bindings for our favorite Postgres and MySql databases is a joy!

On a FE side, the custom React front-end will contain all the best new graphql Apollo version! And queries. And you only need to update all of it every month! The configurability is the key! And it will not make your FE bundle size too big! That's Reacts job!

Ooooh all the abstraction levels! So helpful and beautiful. Global React context for main user data, specific contexts for themes. Maaaan it is great being a software dev!

But in reality, it's all wrong.

I have to admit. In the last 5 years attempting to write dashboards and configuration managers I started to understand that single page applications are not worth the hype anymore.

In fact it is so common to refresh the page when something goes wrong. I feel that (re)loading entire page without any animations is convenient. Actually you don't need to manage complicated state change anymore! You always have newest BE state representation on FE ... that's it.

As for dynamic UI components. Most of the times simple inputs are all you need. I am not against css libraries, but I tend to be more against overcomplicated javascript heavy state handlers for these ui components.

There's a balance, and I feel like we don't strive for a simple solution most of the time.

As an example of a better system(e.g. ui form creators, campaign editors, product list management) let's look at Django framework. Most of data management is done in the admin, where you expose your models in simple forms. Don't like existing inputs? Create a widget for a specific model field. E.g. Json editor with a jsonSchema validation. Don't like the styling? Adjust some well documented css for your admin pages.

It may seem stupid, but yeah ... it's custom admin pages that take most of the time in any project. Why not use a behemoth with a well established community and follow some rules? It saves so much time and there's less arguments about naming conventions or file structures. Most of that is handled by community best practices within Django ecosystem (insert other cool project).

It is an important choice to DUMB down your app and make it more usable with less frustration vectors.
Dynamic Ui using React or Angular? Or maybe all you need is a simple html template? There is ways to avoid complicated UIs.

Database? Well... I am sure non of projects I participated in in the last 5 years benefited from Postgress or  Mysql as we never reached many users.
Yep. A sad fact, many times the client comes up with a failed concept and outsource companies are happy to help them waste lots of money by managing huge DBs for little cause.
So sqlite would really be suited for 100% of projects I worked on. Maybe it is dumb for me to think that way. But have you seen Turso Db? Check it out.

Anyway, I feel like the 'not created by me syndrome' is to blame for the 3x code size and people switching jobs so frequently.

For sure, if you look at any projects code you will see sections where different people used work to do their personal project investigations. And they pollute everything with hyped up approaches where it's impossible for colleagues to make any sense about what's going on.
And then they leave! Leave to avoid consequences.

Use the behemoth!
Enough rants. Cheers.

No comments:

Post a Comment

Custom software development

You receive a new task to start a brand new project. Your eyes light up. You're epic software developer.  And you finally have the oppor...