Hacker News new | ask | show | jobs
by AlexITC 935 days ago
A few years ago, I was involved in a team with less than 10 engineers, we decided to switch to bazel in order to improve the build times, specially the CI runtime.

On the good side:

- bazel forces you to have an acyclic architecture, still, this can feel annoying because every module needs to specify its dependencies.

- bazel does concurrent builds pretty well, optimizing the build times.

On the bad side:

- It took a considerable time to set everything up, we thought to be done but no, there was a weird stuff coming every week and most of the team ended up waiting for the bazel guy to fix it.

- IDE support was poor, in theory, we could just use intellij but most of the times it required help from the bazel-guy, in my case, I got frustrated about the needed maintenance and just accepted that an IDE wouldn't work. - Given the lack of IDE, it means that we couldn't easily execute a specific test from the UI, having to keep notes for the cli.

- In theory, you could use a shared cloud cache so that the builds are very effective but we could never set this up. - talking to engineers from other companies, they admitted that the bazel setup was hard and took a considerable amount of resources, they ended up writing many internal tools to get a effective usage.

Given that you plan to create a startup, do you plan to hire engineers? then, be prepared to the bazel-guy.

Also, as a startup, I bet your code will be small enough that the build times won't be very different with normal build tools.

I'd personally not use bazel unless my company offers a dedicated engineer just to maintain this integration, I think its overkill for small companies.