don't know anything about your specific job. I don't know whether you're in danger of losing it, if you're a guru in some niche technology and therefore indispensable, or if your company is so staid that your present skills will be sufficient for the rest of your tenure there. So please hang onto those letters telling me that your company is perfectly happy with VB3 or that you'll never ever have to do anything except C development. And save those missives about how .NET will wipe Java off the face of the development map, or how XML will replace relational databases, or how you can write anything in assembler or C, so no other development tool is even important.
Instead, speculate on what might happen if you didn't have a joblike so many of your development peers who have been affected by layoffs and closings over the past couple of years. What if you suddenly needed to move? Or, suppose your company were to make a sudden technology turn?
In this job market, with managers looking to hire for current and future development practices, what you know, as a developer, is key to finding work and keeping it. Just as important, you need to know where technology is headed so you can keep up with changes down the road even if you never have to look for development work again.
Here are my picks for the 10 most important development technologies today, with the most important ones first. After you've read my list, be sure to join us in the talk.editors.devx discussion group to submit your own technology top 10 list.
First, and above all else, you should know about XML. I'm not speaking only of the XML specification itself, but also of a family of related XML-based languages: the most important of which are XHTML, XSLT, XSL, DTDs, XML Schema (XSD), XPath, XQuery, and SOAP. For those who have been hiding in the basement slinging code without looking up from the keyboard for the last five years, XML is a text file containing HTML-like tags that define a tree structure and describe the data that they hold.
The nicest thing about XML is that you can store both structured and unstructured data in itit can contain and describe "ragged" document data just as well as it holds and describes "regular" table data.
- XHTML is the preferred method for writing HTML these days; because it's well formed XML, you can manipulate XHTML-formatted documents much more easily than the older, usually malformed HTML documents.
- XSLT and XSL are languages that transform XML documents into something else. That something might be text documents, PDF files, HTML, comma-delimited files, or some other XML document.
- DTDs and XML Schema describe the type of content that an XML file can contain, and let you "validate" the contents of XML documents without writing custom code to enforce the rules for that content.
- XPath and XQuery are query languages that let you extract single items or lists of items from XML documents. XQuery is particularly powerful because it extends XPath queries and essentially is to XML what SQL is to relational databases.
- SOAP is the standard communication protocol between Web services. While you don't need to know the SOAP standard inside and out, you should become familiar with the general schema and the way it works so that you can use
2. Web Services
Web services are a direct outgrowth of XML's popularity. Because you can use XML to describe data and objects, because you can use schema to ensure that the content of an XML document is valid, and because XML is a text-based specification, XML makes an extremely convenient base format for a cross-platform communications standard. If you haven't been exposed to Web services yet, you probably will be soon, and you almost certainly will be within five years. Web service familiarity is important because it's the simplest way anyone has yet invented for applications to communicate across disparate machines, languages, platforms, and locations. Whether you need them or not, Web services are a major step forward for interoperability.
John Bosak, chair of the XML Working Group, once said that XML "gives Java something to do." Well, Web services give every language something to do. Web services let COBOL applications running on mainframes talk to Java applications running on handheld devices; let Java applets talk to .NET servers; let desktop applications interact seamlessly with Web servers; and generally provide a relatively easy way for businesses to expose not only data, but also functionalityand do it in a language-, platform-, and location-agnostic way.
3. Object-Oriented Programming
Many programmers still regard OOP as an ivory-tower technology, but just think for a second about which languages have become dominant over the past decade and you'll begin to understand that it's not. Starting with Smalltalk, OOP spread to C++ and Pascal (Delphi). It made a serious mainstream leap with Java, and a few years later to VB.NET and C#, completing its ascendance. While you don't have to learn OOP to use most of these languages, I suspect that there are a diminishing number of programming jobs that you can get if you don't know the basic concepts and how to use them.
4. Java, C++, C#, VB.NET
I've lumped these together not because I'm recommending that you become a guru in every one of these languages. No. The reason is that one of the most efficient ways of learning to program is by looking at codeand a huge amount of the code available to look at is probably not written in your favorite development language.
Over the past few years, language capabilities have become increasingly similar. You can write that Windows Service, Web application, or command-line app in VB.NET these days. Even if you only write in one of these languages, you owe it to yourself to learn enough about the others to be able to read and understand the available examples, and to translate code from them into your preferred language. While the four languages listed here form the basic core of a strong developer's toolbox, there are others that may prove just as useful, depending on your particular field, such as FORTRAN, COBOL, APL, ADA, Perl, and Lisp.