I guess it depends. Like, you really need to know Gradle to be effective in a non-trivial Java setup.
But Gradle is a beast (over 1000 pages of doc), and it could slow you down.
On the other hand the Go tool chain is superb, but you need to reinvent a few things (until recently Go didn’t have generics) and the libraries out there are just a fraction of what Java offers.
Using Gradle is already the first mistake, had it not been for Google and their partnership with Gradle folks for Android after dropping Eclipse, and it would have fizzled alongside Grails by now.
Boring build tools on Java land would be Ant/Ivy, Maven.
He is just grumpy at Gradle, he does it in every possible thread that even mentions Gradle's name.
Which is especially sad because he fails to even understand what Gradle does (see his comparison with Ant which is just completely inaccurate. Gradle has a proper build graph (actually better than Maven at this - there is never a need to do a clean install in Gradle, but you often have to do it with maven to get the proper output) it operates on)
Not at all, it is a tool designed by those that haven't learnt the Ant lessons that are the reason Maven come to be in first place.
Also they are very keen breaking the DSL language every couple of releases, and before Kotlin based DSL, had to come up with a background daemon to cache Groovy execution, due to its performance, or lack therefore.
I am sympathetic. Declarative programming is _conceptually_ pure. I find in practice, it always makes the core hard things it intends easy and all other trivial matters a torture exercise (see XSLT.) So I can see why you'd reject a goofball imperative programming language like Ant made from XML. I also have had 'sharp edges' experiences with the Gradle Daemon, which struggled to deliver on the build acceleration promises in any case, so I share your frustration there as well.
Gradle and Maven have one rare superpower, maybe you could lump Ivy in there, which is to navigate and cache maven repos to build dynamic classpaths. Java is like a 10-ton elephant hurtling downhill on one foot on a squeaky old rollerskate. Somehow it manages to stays up, but it's always a near run thing whether it crashes. I appreciate that Gradle continues to make incremental advances that keep the elephant up. You complain that Gradle keeps breaking the DSL, but they have to navigate new Java, Groovy, and Maven releases that have relevant feature developments. It's a 16 year old program, it's going to either change or die. I look at JavaExec and consider the power of all it does expressed in such a simple way. Just that one feature makes Gradle tough to beat and worthwhile: https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Jav...
Here are the recent-ish feature adds that I found super impactful and that improved the way I worked with Gradle and the overall quality of my builds:
To me, the fact that Gradle as an organization has been able to keep doing updates over years and make a niche business out of that product has been laudable. I think the way they positioned themselves as thought leaders during the whole Log4Shell fracas was really excellent, and I appreciate that paying them for support mostly means you get their best performance tools and training. I'm skilled enough after a lifetime with the tool that I can do an ok job at performance, but I'm sure things would improve if I could pay.
Bazel is a huge step up complexity wise, and as far as I can tell, it would not be useful for "watcher mode" style builds the way gradle is. If anyone from Gradle, Inc. reads this:
* I like the idea of hermetic builds and reproducible, cacheable builds touted by Bazel, but I also want my ability to use the watcher mode to script hot redeployments and manage local test server lifecycles like I can do in Gradle. Could Gradle be morphed or have a constrained mode somehow to be able to do both those things? EDIT: OMG, maybe you are already headed this direction! https://blog.gradle.org/declarative-gradle-first-eap
* It seems to me that software supply chain in the Java ecosystem could use a package management expert like you. I would love it if Gradle had its own, private for-pay repository that contained a trusted subset of artifacts that you certify and watch new versions and do independent code quality checks and 1st party code reviews (AI-assist ooh la la!) If we can keep our builds to your trusted set, we could have a lot of confidence that our software supply chain is safe. Maybe you could charge customers to add more artifacts to the repo that you approve of quality-wise and then validate and serve going forward.
I don't like the way public maven repos are centralized that we blindly trust and give our telemetry to and would love to point my builds at a private repo.
The claim you make in your first paragraph does not follow from the second paragraph. While indeed a professional / artist / skilled passionate amateur will be limited way less than a random snapshot taker, as they might overcome many limitations in many creative ways, it’s not true that the gear does not matter and it’s not limiting.
If it doesn’t, then why do professionals use gear that’s often worth tens or hundreds thousand dollars? Try to picture wildlife or soccer with a smartphone from 2010. Are you sure it’s not limiting you? ;)
In photography both things matter: skill AND tools.
Also not all photographers are alike and not all photography is art. Event / documentation photography is also professional photography. It requires repeatability and acceptable results, not great results once in a while. That’s why professionals use expensive, sophisticated gear with autofocus, eyetracking, high speed drive etc. They cannot afford getting only 1 shot out of 1000 great. They need all (most) shots good enough.
Btw: Many amateurs who do photography for fun are often way more artistically skilled than professionals so I would not look down on them. It applies not just to photography but probably any discipline. The original meaning of the word „amateur” is actually very positive. Being paid for something does not mean you’re good at it. I’ve seen plenty of terrible quality work from professionals (in photography, in computer programming, in electronics design/rework).
My father was a professional photographer. He was also a professional asshole so his response was always to respond with the shittiest worst lens he could think of and see if they bought it.