What is the future of coding for us developers? If we look at our industry, nothing much has changed at the root since the 70's. We are still reliant on loops, switches and constants. The syntax of languages might have changed but the underlying design is still the same. GUIs for creating programs are the same; we still drag on a control and wire up events - apart from the look of these GUIs, is there any really difference from say VB6 and Expression Blend?
As long as our industry continues to rely on these methods then it's always going to be a niche industry; where the majority of people see it as too confusing and geeky.
So is there any hope for our industry?
Recently I've come across two amazing examples that for me shows the potential of what we can acheive.
This first is a presentation by Bret Victor. Bret Victor designs experimental UIs; just visiting his site will show you how he thinks differently. His website has an amazing layout and a flow that I've not see before; it just shows that how, with a bit of thought, something as simple as an HTML page can be changed into a dynamic, flowing, enriching experience.
His presentation (see below) shows experimental UIs and how it can enrich the developing experience by providing feedback to the developer in realtime. Such an experience for any developer would improve their output, as realtime debugging as you write code alone would take hours off your working week.
Implementing such an experience in any IDE is going to be difficult but anything that helps the developer to release software quickly and bug-free is a bonus.
The next improvement our industry needs is simpler GUIs. Looking at Expression Blend, for example, it has a confusing menu system for any newcomer, whereby menus are hidden behind menus, and functionality is not known unless you randomly click away, guessing what things might do. Expression Blend is not the only culprit; XCode, Visual Studio and Photoshop are also to blame along with many more.
Luckily a company has already released a GUI interface that is simple and elegant. It takes the complex nature of creating a 3D world and simplifies it into an elegant UI, whereby context menus exist for each item without needing added hidden menus. It's intuitive to use and powerful at the same time.
The software I'm talking about is the Perpetual Testing Initiative (the map editor for Portal 2). As a level editor this is head and shoulders above the rest of the current crop of level editors (if you've ever used UnrealEd and then use this you will know what I mean). As a piece of software this is also far superior to the current crop of IDEs. For me, this is what Expression Blend should be doing, it should be a simple drag and drop interface with the ability to easily link controls and events.
Although as an industry the tools that we currently use are not quite there in terms of usabilty and the feedback they give, there is light at the end of tunnel. Innovators are working on improving the tools we use and are looking at more experimental features to help us in our jobs. NCrunch is an amazing tool for Visual Studio that provides automated continous testing, giving the user feedback on passing/failing unit tests without needing to recompile the project. This is a good start for helping developers become more productive, and the future can only be better.