You can't get away from cycles, they're everywhere. Today I'm going to focus on what I believe is a great cycle in software development – the return to meaningful software development.
When I started programming in (gulp) 1979, the world was unencumbered by GUIs. Most interfaces were text-based unless you were using a graphics program, there were no standards, and everybody love 80 columns by 24 lines (or in my case 64 columns by 16 lines, since I started work on a TRS-80). Although ugly as sin and about as user friendly as the inner workings of a 747, it did provide one feature to the programmer above all else - the ability to concentrate on making the software do what you wanted the software to do. In those days it was all about whether your accounting package was good at doing accounting.
The Macintosh arrived in 1984 and the world changed for the better. Windows followed relatively quickly (preceded by GEM and various others), and the users never looked back. Gone was the 80x24 green-on-white text, replaced by hundreds of colors in a fine 640x480 matrix (or, in the case of the Macintosh, 512x384 black-and-white pixels). What this meant for programmers was that the bar had been raised. If you wanted to write accounting software, the debits and credits were going to take a back seat to whether you had your buttons in the right place and whether your software had too many or too few little buttons.
This movement from software development to GUI development plagued developers, and mostly delighted users, for most of the second half of the 1980's and the 1990's. And, if you're developing software for Windows, you're still spending most of your time making the software pretty, as opposed to making the software work.
However, I'm happy to announce that with Cocoa, things have changed quite a bit. I'm satisfied that I now spend most of my time putting in the parts of the software that actually distinguish my program from the other programs out there, such as functionality, as opposed to spending most of it making sure that I conform to the basic rules of the Macintosh user interface.
This has been an extraordinary transformation for development over the last few years (and my friends who were NeXT-heads back in the day will point out that it happened a decade before that), but most of the world hasn't caught up. If you're wondering why this software is being developed exclusively for the Macintosh, here are the two things to take away:
- I don't want to support software running under Windows: it's too complex; and
- the Macintosh has become substantially easier to program than Windows for people who actually have something substantive to program.
I think I can safely say that if I were developing this software a few years ago, it would be a team of 4 or 5 people and it would be much more frustrating than it is.
Thanks, Apple, for allowing application programming to once again center on the application, and not the programming.