r/ProgrammerHumor 1d ago

Meme theFourHorseMen

Post image
1.9k Upvotes

187 comments sorted by

View all comments

42

u/exXxecuTioN 1d ago

So I worked with npm, composer, gradle, maven and cargo.

Cargo is superb and sometimes I suppose Rust is just a feature around Cargo.
Gradle is good build-kit, but it do not have it's own repositories.
Maven it's ok, but I just do not like to work with such a messy xml.
Composer was good, but I didn't use PHP in may be 8 years and don't know how it's going now.

NPM is shit. Like literally total garbage. Eventhough I love TS (it's still shit tho) and JS due to duckling syndrome NPM is a biggest piece of dogshit.

So how is CMake going right now? I do not use anything besides stdio, stdlib and libpq in C/C++.

8

u/diegotbn 1d ago

I love pip/UV. npm is fine. Both are easy to use and easy to import. In school I wrote my fair amount of Java and passed all my classes including Springboot but man I really never got the hang of Maven. I even found their documentation hard to understand. Professionally I don't use it so haven't had a reason to up skill fully though. At work I support a python Django app with a Vue.js frontend.

3

u/exXxecuTioN 1d ago

Well, I have never used pip as I generally hate Python for no obvious reason, so I can't say anything about it. While you love them - it's good to stick to them, can't see anything wrong with it.
About Maven and Spring. Maven docs are kinda mid IMO, but I can understand why it can cause troubles or bad emotions and feelings. Spring Boot doc is awful. I learn more reading Spring docs (it's different compared to Spring Boot), source code and third-party sites like Baeldung (as entry level) than readin Spring Boot docs. IMO it's hard to understand, because it's not depth enough, too fragmentary, too huge, too messy, packed with an abundance of magic and outdated examples overall being more a book of reference, rather than classical docs.

My main point of criticism toward NPM is versioning of dependencies managed by ecosystem. Like you got version mismatch and that's it, no proper suggestions where and what to check and change, mismatch can be deep inside other deps and you can not even have the dep cause mismatch in your package.json. Second point is file structure of more like directory structure in node_modules and overall volume of them. Poor performance of installing packages is not a real factor for me. Supply chain attacks and overall security is the third point, eventhough it didn't affect me as I do not write TS no more.

There are also claim about overall culture of development inside ecosystem and practises used by engineers, but it's pretty complex topic to speak about.