Why am I writing this post? Not because I hope for something or believe in change. These are just words. I could write this at the end, but then you would be looking for answers for me while reading, and I don’t need them. They won’t change anything. So here it is. I don’t claim to be a software development guru or a C language expert. I’m just a simple developer.
-
Why are we looking for new technologies? Why do we want to be part of a community that is buzzing with new projects? Why do we think that this new programming language will definitely help us create something amazing and truly great and, of course, will make us rich and provide us with a comfortable old age?
-
Why are we offered so many courses in so many programming languages and frameworks? Why do we teach what is required for companies that make money from us?
-
Why are there a lot of conferences on banal simple things, such as *** framework or ### technology (so as not to offend anyone), and there, with a smart look, newly minted gurus tell us how important it is to be able to transfer the value to the client and how to use certain templates?
-
Why do computers become more and more powerful, but programs continue to lag?
-
Why, when applying for a job, do we look for a vacancy based on knowledge of a programming language, but find it only based on knowledge of certain frameworks? Is it really difficult for a professional programmer to learn a framework in a week?
-
Why do we go into software development with the enthusiasm to create something great, but end up in a situation where we are developing some other catalog or some other digital yo-yo to make money?
Reason: because we want our passion for programming, our interest, to also bring us income.
Result: we do not earn this money for ourselves, but for companies whose main goal is to quickly receive income from the software they sell.
I look at how programming has changed over the course of 25 years, what they teach at universities, and where they start. And I came to the conclusion that on a large scale, it was all for the benefit of giant companies or the government.
We must protect the “intimate” knowledge of the foundations and water the roots ourselves. Because they don’t realize, they don’t see that if the roots are not watered, the branches on which they sit will dry out. Therefore, who, if not us?!
Yeah, but that’s the thing: it’s not fast. And that’s actually even more baffling.
All those rewrites cost money. All the shoddy software somewhere in the background of every corporation was written using these shitty libraries, frameworks, APIs. And that means cost.
I’m explicitly not talking about the newest crap Amazon or Google push, they operate under different principles, I’m talking about the data plumbing stuff. The eight billion Spring Boot apps, the PHP sites, the Python pipelines.
Writing and deploying a simple CRUD app, that just takes data from a request and saves it into a DB should be done in a few minutes. The actual “payload” is just input schema, DB schema, transformation rules, maybe auth. That’s it. However, if you want to do that in Spring Boot and K8s, it takes often hours or days to get everything right. Not because Spring Boot is hard, but because you forget a network policy in Helm or the dateformat between JSON/Java/DB is different or that library is outdated or there’s CVE somewhere or you have to look up that shitty mappedBy thingy from Hibernate again (that’s maybe just my problem, I can’t remember that crap) etc. etc. etc.
The basic problem behind is, that we have to take care of so much. Network, business logic, framework detail. You have hardly any layer or platform that is really solid.
That’s the reason why I like C#, ASP.Net Core and EF Core so much. A simple CRUD app can be written in under 10 minutes and easily deployed in any form from a self-contained binary to a docker container to whatever eldritch horror lurks behind Azure or k8s. Personally, I run docker swarm mode for my stuff because it makes automated deployment super easy, kind of like a leaner k8s but if I wanted, I could just drop a binary on any windows, linux or macOS machine without needing to install any major dependency apart from my database.
Edit: of course, ASP.Net Core has its downsides too. Especially when it comes to auth stuff. I wish I could have something as simple as devise + cancancan in old versions of Rails.
I remember Netbeans IDE used to have an auto-generator of CRUD java server pages if you fed it with a ready database. No idea if that feature is still there, but it saved my ass during a final assignment once in college.