| 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. |