Build systems for web applications are great: they give dependency management, code minification, and the ability to use tech like SASS or CoffeeScript that require pre-processing.
However, I find actually using build systems to be ugly and annoying... you need to make sure developers have the build tools installed, that the versions they have installed are compatible with your configurations, and that any dependencies of the build tools(SASS compiler, jsmin, etc) are met. Getting a new developer onboarded now requires a suite of tools to be installed on their local system.
We can fight this by using virtualization: a system like Vagrant can allow the setup of developer systems to be codified. There's a clear series of steps to create a developer environment with all dependencies, or a machine image that's already set up and can simply be installed and run.
My goal is to make the build system non-intrusive. I would like developers to not even necessarily have to be aware of the build system in order to hack on a project. This might be unrealistic.
With Vagrant, you might accomplish this by having a "watch" service of your build system automatically run and re-build the files whenever they change. That's good, but what about a local-system developer who doesn't want to run Vagrant? They have to remember to run a separate process whenever they sit down to develop.
One approach I've not seen is to make the application build system aware. It seems to violate a separation of concerns, however with modern web development it seems we are already tightly coupled to our build systems: without running the build script, will you be able to run your web app and see anything meaningful? Will your static assets be in place?
Is there a compelling reason not to have your application look at its build status and rebuild itself when necessary, when in development mode? When running the development server, the application could be build-system aware and build its assets if needed.
This doesn't get away from the dependency requirements on the developer system. I don't have a concrete idea of what I'm looking for yet, but I feel like build systems for web apps aren't quite "worked out" yet. I hope to can have a good brainstorm here.