Wednesday, October 03, 2007

Paint It White

The Register recently reported that, according to boffins, it is dark times for application development.

Just when I thought everything was getting better. Way much better.

  • Writing code has never been so fun: we have great IDEs, loaded with refactoring features, enriched by a wealth of plugins that turn them into tailored productivity platform.

  • Our tool boxes are now loaded with pragmatism-driven frameworks, multi-threaded building blocks and a panoply of libraries for everything and whatnot.

  • Testing has never been so easy: we have a great variety of tools for testing applications at almost all levels and in fully automated ways.

  • Testing has never been so rewarding: funny colored lights give us instant reward on our efforts while test coverage tools provide us with an exciting challenge.

  • Source control management is now accessible to mere mortals: no need to be a command line guru or a sysadmin to store and manage code in repositories anymore.

  • Collaborating on-line is now a reality thanks to tools designed for sharing idea, tracking issues and progress and authoring content over the Internet.

  • Making reproducible and automated builds is a piece of cake: dependency management and library repositories combined with continuous integration platforms produce a sense of velocity and fluidity that makes development thrive.

  • The tyranny of modelling and the myth of big design up front have been debunked and relegated to the museum of toxic ideas.

  • Industry luminaries have risen and their voices have encouraged the inception of methodologies that promote communication, honesty, courage and elevated professional standards.

  • Hype and buzz words are consistently derided and exposed to their true natures by the same thought leaders.
Of course, we face clunkiness, bugs and disappointment every day: does this make our times dark ones?


Andrew Binstock said...

David: I definitely agree that software has never been more fun to develop, and for precisely the reasons you give. In particular, the great IDEs, the advent of unit testing (in lieu of debugging), and the wide availability of needed info on the Web.

Nonetheless, the complexity of modern software has risen enormously and writing anything but trivial software is a true project. This complexity undercuts the enjoyment. Many programs that should be straightforward become complex because of the need to incorporate secondary technologies that are either required or expected today. And this aspect adds a fatiguing dimension to development that did not use to be there, IMHO.

David Dossot said...

Andrew, I was trying to show a candid and positive view of the situation, to counterbalance the pretty gloomy article from The Register.

This said I agree with you.

On one hand, I have never felt so empowered by the tools I am using and the practices I am following.

But on the other hand, having a look at any stack trace from the simplest of my applications, shows me how complex everything is under the hood.

Applications are now layers of proxies, abstractions and indirections of all kinds, which come most of the time from the secondary technologies you mention, and when something goes wrong, you end up wading through swamps of code that is not yours.

Then you enjoy your great tools to sort things out and wonder what great things you could do with them if you would not have to spend so much time struggling with complexity.