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 job?like 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 it?it 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 functionality?and 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 code?and 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.
The Last Five
6. Regular Expressions
You search relational databases with SQL, XML with XPath and XQuery, and plain text with regular expressions. For example, you can do things such as find and remove all comments from an HTML document via a single command. The simpler text-searching functions built into the various development languages such as “IndexOf” or VB classic’s “InStr” function or “Like” operator are no match for regular expressions?and every major development language now provides access to a regular expressions implementation. Although the expressions themselves are difficult to write and even more difficult to read (a throwback to earlier days of computing), they’re a powerful and underused tool.
7. Design Patterns
Just as OOP simplifies programming by letting you collect and classify objects, design patterns classify common object interactions into named patterns. The more you use OOP, the more useful design patterns become. The most common patterns have names that are working their way into the common development argot, so you need to understand them at least well enough to keep up with the general flow of information.
8. Flash MX
When you need more client-side graphics and programming power than you can get with HTML and CSS, Flash is the answer. Programming in Flash is much faster and easier than programming graphics applications with Java applets or .NET code.
In its newest version (MX), Flash is not just a drawing and animation package, it’s also become a highly programmable application environment. and it’s capable of consuming SOAP Web services and calling ColdFusion, Java, or .NET code running on a remote server. Flash is ubiquitous; its runtime is on most of the client machines in the world, including handheld devices, set-top boxes, and even the new Tablet PCs, so using it may actually extend your programs’ reach.
Get familiar with Linux. Install it on an old machine?or a new one. Download the GUI interfaces and program some applications on it. Install Apache and write a Web application. The world no longer belongs exclusively to Windows, and that trend will probably continue. In contrast, if you’re a hard-core Linux developer, drop your antipathy toward Windows and see what you can adopt. There’s a reason why Windows is still king of the desktop?and it’s not just that Microsoft controls the market.
There’s no telling when your company may decide to switch from Linux to Windows (or vice versa), or when you might want to switch to a company that uses a different platform?or when you might come up with the next killer application idea?so you should try to gain experience on more than one platform.
Although SQL isn’t as new as most of the technologies discussed in this article, and it’s likely to diminish in importance over the next decade, it’s still an essential skill?and one that many developers either don’t have or understand only well enough to use it inefficiently. Don’t rely on GUI-based SQL builders to do the job for you; write your queries by hand until you’re comfortable with the basic SQL syntax. Not only will understanding SQL now help you learn XQuery later, but you may find ways to immediately simplify or improve your current development projects.
Finally, (and yes, I realize this is No. 11), the most important skill you can acquire is curiosity. Try things out. That new language or new technology may or not be important to you in your present or future job; but not everything you learn needs to be job-focused. Don’t be afraid of failing; it’s always difficult to be a beginner at any new technology. Most failures happen because people expect too much of themselves too fast. Be satisfied with small steps, and don’t let time (or the absence of it) get in your way. Instead, make time to look at, research, and test new development techniques and tools.
You may never need to become an expert in any of these technologies?and my selections here may be way off-base for your particular situation?but by cultivating curiosity you’ll find out the things that you do need to know.
|Editor’s Note: Go to the talk.editors.devx discussion group now to assess Russell’s picks and to contribute a list of your own.