The holiday season should be a time of rest and relaxation. If you're a developer, hopefully you'll get some time away from the keyboard this week to spend with friends and family. It's not always easy in this business.
Mind you, software development is a lot less painful than it used to be. I'm old enough to remember when performance-critical routines meant hand-coded assembly language and sometimes even keying in machine code as hexadecimal digits.
[ See if you can pass InfoWorld's programming IQ test, round 1 and programming IQ test, round 2. | Go deep into HTML5 programming in InfoWorld's "HTML5 Megaguide Deep Dive" PDF how-to report. | Get software development news and insights from InfoWorld's Developer World newsletter. ]
We've come a long way since those bad old days, and not surprisingly we owe a lot of our progress to technology. So for this Thanksgiving, here are just a few of the modern advances for which I, as a developer, give thanks:
Open source tools
Developer tools have benefited more from the free and open source software revolution than any other category of software. When I was learning C programming in the early 1990s, Borland's offer of an integrated MS-DOS C compiler, editor, debugger, and linker for $150 came as a revelation. Developer tools for commercial Unix systems cost thousands.
Then Linux brought Unix to the masses, and with it came the Gnu Project -- compilers, libraries, editors, linkers, debuggers, and all for free. The days of paying for access to header files were over.
In a way, it was bad news for tools vendors. The market basically evaporated. But it was great news for developers, particularly students. These days, you'll scarcely find a language for which no open source compiler, interpreter, or VM is available. Even Microsoft is getting in on the act -- last year it released its F# compiler under the Apache license.
Online documentation and support
Programming manuals were an essential part of my early education. But despite how tasteful the woodcuts on the covers of O'Reilly books were, dead-tree documentation was bulky, was hard to navigate, and went out of date quickly.
These days, I keep a reference or two handy for when I need a moment away from the keyboard, but all the real documentation is up on my screen. Through the Web I have instant access to thousands of pages of tutorial and reference material -- whether I'm in my office, at the coffee shop, or on a plane -- always current and readily searchable. (And O'Reilly's been no slouch here -- in fact, it's leading the field with its Safari service.)
Even more significant is the impact of social media. Mailing lists, message boards, wiki-based documentation, and crowdsourced Q&A sites like Stack Overflow give access to on-the-spot training and insight like never before. Finally, developers can move as quickly as technology does.
Back in the day, we used to scoff at any programmer green enough to need an IDE to write code: "Whatsamatter, kid? Can't remember how to spell 'main'? Real hackers use Notepad!" (Just kidding. They used Vi.)
Today that kind of braggadocio just seems naïve. A modern IDE offers far more than just a text editor or integration with a compiler and debugger. It's your partner throughout the development process, from application design to coding, debugging, and maintenance.
Where would we be without code completion for boilerplate-heavy languages like Java? Remember how difficult it was to refactor large projects before we had context-aware IDEs? Automatic error checking, class browsers, instant documentation -- the list of advantages goes on. Stick to command-line tools if you prefer, but if you've never learned your way around an IDE like Eclipse or Visual Studio, you're probably not as productive as you could be.