Great developer tooling is very important when building real and complex systems. Developer tooling can be crucial for productivity, as well as providing important information when fixing problems. Tools can help with building quality solutions using automated checking and best practices support. And finally, tools can help immensely when “fiddling” with the system, when you’d like to fine-tune details of the user experience, for instance, or replaying hard to reproduce bugs.
To me, it seems crazy that after all those years, developer tools still have a very poor baseline. Sure, we got some great code editors now, but they are typically not integrated with the product experience at all, and most information reported is very low-level, requiring a lot of experience and work to find problem-relevant information between the noise. Even worse: a lot of developers seem weary of using tooling. They have bad experiences: tools were slow, buggy, in the way, expensive, hard to learn, etc. So a lot of developers only use the most basic of tools needed to get the job done.
Consider this example of a great tooling experience: an Unreal 4 demonstration. Unreal is a game engine, a very complex simulation system, probably much more advanced than a typical enterprise solution framework. Yet it can be edited and debugged fully interactive, while interacting with the running solution:
What if all developer tools would be like Unreal? Seeing and interacting with your solution in context, not in code, and staying in that context while changing it? I’ve been watching a lot of Google IO developer sessions the past few days. To me, the most interesting announcements by far were on all the new tooling capabilities. Google is investing heavily in this area, and use their in-house product development to quickly iterate and improve the tool chain of core Google products.
There are some awesome improvements on the Android developer tools. The visual editor is getting much more powerful and I really like the builtin support for design guidelines and best practices. The multi-layout editing is great when you want to design for multiple form-factors or languages. And the systrace tooling really helps to identify root causes of janky apps.
But the Chrome Developer tooling improvements seem even more impressive. Initially primarily a debugger, it now is combined with really powerful interactive editing features (check out identity preserving undo/redo support) and it can even save directly to source files in most cases. This interactivity extends to mobile web, with on-device native profiling and interactive inspection. Chrome Developer may become the first “Unreal” tooling experience for the web. Check out the presentation for a detailed overview:
Of course, the next step would be to integrate this with back-end developer tools that provide similar, solution first context views for developing. Chrome Developer is only one piece of the puzzle, but I hope others jump in on this vision of “solution first” developer tooling and maybe, provide an integrated Unreal experience across the entire stack.