“Why does this have to be so hard?” - it’s a phrase that every web developer has most likely uttered at some point in their career. It seems that after decades of advancement in software development, it still isn’t getting any easier. Maybe this is just the way it has to be?
Back in the ‘90s, there was a real trend for tools that enabled software development without “coding” - all-in-one databases like Access, form builders, and rapid application development environments. We tried it all, and some of it even worked, but none of it seems to have made the jump to the web.
Much of it was killed by the move to open source development tools. Where once our tools were built by businesses and marketed with promises of improved productivity and efficiency, in the new world of web development they were instead built for free by people who loved to code for its own sake, and much to the surprise of nobody, these tools have most often been targeted at the geekiest of software developers who absolutely love coding, not business people or creatives who simply want to get a job done.
One only has to take a look at the world of proprietary software develoment for platforms like iOS to see that visual development is still alive, if perhaps not healthy. Xcode has since its inception shipped with Interface Builder, a graphical tool for designing user interfaces that offers the promise of fast and efficient development, despite perhaps falling short on the delivery.
Xcode’s Interface Builder however is very much a traditional form builder tool from the ‘90s that has against all odds survived to the present day, not much changed from its origin as a part of NextSTEP. Are form builders all there is, or is there something more to look for in the world of easier, more visual, coding? The game development ecosystem provides us with an answer. At the same time that the world of web development and business software went down one path of open source software and tools that are “by coders, for coders”, game development took a different path.
Historically game studios all developed their own in-house engines and protected them zealously to give themselves a competitive advantage. In the last decade, the game development engine ecosystem has evolved and now looks much more like that of software development in ‘90s than it does the open source ecosystem of modern web development. Tools such as Unity and Unreal Engine provide established game companies and hopeful newcomers alike with rich and sophistacted development environments designed to be just as fast and easy for artists and designers as they are for coders. All developed privately by professional tools developers, paid for by licensing fees and royalty sharing agreements.
One such engine, Unreal Engine, has chosen to push the envelope and provide a visual alternative for coding itself. Unreal Engine’s Blueprints are a practical application of an older idea known as Flow Based Programming. It enables the very logic of a system itself to be constructed visually in a way as simple as snapping together LEGO blocks. Much as with form designers, it’s not always easy to construct the complex systems needed in day-to-day development tasks, but Unreal Blueprints gives us a great look at the potential of making programming tasks faster and easier with visual representations of code.
The open source world may not be a champion of visual development, but it’s no stranger either. Most notably the NoFlo project provides a general purpose Flow Based Programming environment for JavaScript. While NoFlo is a fantastic project to see being developed, as far as I can tell it’s currently much more suited to experimentation and learning than to commercial web development, and doesn’t have much focus on web development, or support from the web development community.
What I really hope to see, in order to enable more productive and enjoyable software development in the future, is a modern open-source framework that combines the best of what’s possible with visual form builders like Interface Builder and Flow Based Programming tools like Unreal Blueprints into a single tool with a heavy focus on web development for business applications, of the kind done by millions of web developers around the world.
And that’s why I’m going to try to build it. I’m not expecting it to be an easy task, however I’m confident that it’s at the very least possible. Visual tools for programming can and do exist, and frameworks designed to meet the needs of business web development are also a thing.
It’s my belief that by creating even just one tool in this space, a tool that attempts to take the best of what we know about making software development productive and apply it to the world of open source web development, we can at the very least start a conversation about this, and maybe even save some web developers some time and pain in the process.
Because maybe web development doesn’t have to be so hard.