this post was submitted on 07 Jan 2026
861 points (97.8% liked)
Technology
78511 readers
2999 users here now
This is a most excellent place for technology news and articles.
Our Rules
- Follow the lemmy.world rules.
- Only tech related news or articles.
- Be excellent to each other!
- Mod approved content bots can post up to 10 articles per day.
- Threads asking for personal tech support may be deleted.
- Politics threads may be removed.
- No memes allowed as posts, OK to post as comments.
- Only approved bots from the list below, this includes using AI responses and summaries. To ask if your bot can be added please contact a mod.
- Check for duplicates before posting, duplicates may be removed
- Accounts 7 days and younger will have their posts automatically removed.
Approved Bots
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments

I have. Go is verbose
Can you elaborate? To me, Go seems to have less boilerplate.
Yeah, Go is nice sometimes. It shines in codebases that are not quite large and not very small. Also it's great to write a cli tool in it, though I prefer Rust because I hate myself. What I personally missed in Go (maybe skill issue, idk):
Metaprogramming. For big projects it's inevitable. You need to have SPOT which generates documentation and headers (e.g. xml document, openapi spec). Otherwise you die. The fact that the source should be a git repo is cancer, as in this case artifacts are added in git, which results in merge conflicts.
DI. In JVM world it is a must. If you don't have it, you fucking should have a reason for that! If your logic spans across multiple layers of factories, onboarding of a new developer creates friction.
For small web services that are not constrained by memory I would choose spring + openapi, as it really requires only model description and the endpoint, yielding you a client in any language you want.
If err != nill. Don't let me started on importance of result and either monads.
Aspects and (usable) reflection. I want a codebase that has actual decoupling. I want a security code to be in a completely different place, away from the business logic, just as I want traces with serialization to be pluggable I don't want to have a single place in code that has a sequence
auth -> validate inputs -> trace -> business logic -> validate output. I strongly believe that it's faulty, untestable and prone to errors.In reverse order:
Further, meta programming in go sucks donkey balls. Sure, it finally got generics but also they suck. Last I checked it still didn't even support covariance.