Tool Managed Development

One of the various complaints about JSF is that it's tool centric. Many would prefer a framework that didn't "need" tools to work with. Regardless of the merits of that particular complaint, I've been thinking about the larger question of "is using tools a bad thing?" Many people prefer to work with systems that are simple enough to work with without needing to rely on tools. Others praise the "productivity" gains garnered by the use of tools. Certainly the complexity complaint is valid one but, on the flip side, "so what?"

Perhaps it's possible that the industry is beyond the days of simple applications that developers can contain entirely inside their heads. The demands on software are increasingly complex and the problems we're solving are also fairly complex. So perhaps relying on tools is a way to better manage that complexity, drive down development time/costs, and reduce defects along the way. Case in point, work with any EJB application and you have tons of XML documents to keep in sync. The same is true of a "simpler" struts/tiles apps. And it's not just configuration files. There are supporting classes to keep in sync as well. Sometimes a tool is the better choice for managing these dependencies.

On the other hand, perhaps we've painted ourselves into a corner here. Most webapps are not complex applications, per se. A lot of configuration files and the like are there because the frameworks are not smart/sophisticated enough to figure some of this stuff out. Some of it's there because someone thought it'd be a great idea to specify page flow via XML. (Honestly, I've never had someone ask me to change the flow of pages once an app was built that didn't need some code rework. YMMV.) With frameworks like ruby on rails, we can see that is possible to build frameworks and applications that don't need 4 XML files for every Java and HTML file in the system.

To be honest, I'm no sure how I feel just yet. I enjoy using IDEA. It's helped me out quite a bit. But I could go back to gvim if I had to. Are we just making things harder than they have to be? Or is all this complexity really required?