The 10 Technologies that Will Help You Stay Employed/帮你免于失业的十大软件技术

          by A. Russell Jones, Executive Editor          December 11, 2002 
I 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.

1. XML
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.

5. JavaScript
Despite the similarity in their names, Java and JavaScript are unrelated. Why is a scripting language so important? Consider that all the major browsers use JavaScript. If you need to write Web applications, that's enough of a reason right there. But you can also use JavaScript as a server language for ASP or ASP.NET or as a functional language for extending XSLT. Javascript is the preferred language to activate XUL-based interfaces in Mozilla/Netscape, a derivative, ActionScript, is the programming language for Flash MX applications, and JavaScript is highly likely to be the scripting language for new devices in the future, as well as the macro language for major applications.

In contrast, VBScript, although well supported in Microsoft applications, is a poor relation—and probably a poor choice for future development work. Even Microsoft tends to write its client-side code examples in JavaScript (or its own derivative, JScript) these days. When you have a choice of scripting languages, choose JavaScript.
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.

9. Linux/Windows
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.

10. SQL
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.

Cultivate Curiosity
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.

帮你免于失业的十大软件技术

    罗素·琼斯,执行编辑

 

    能跟上关键技术的发展,是你在就业市场和未来保持优势的最佳手段。你对我们列出的十门技术精通吗?哪怕是大略精通?

我 不知道你的具体工作是什么。如果你是某冷门领域的专家而变得不可或缺,或者你们的公司十分稳固,以你现有的技术就足以安度你的职业生涯,那我不知道你是否 有失业的危险。不管怎样,请你先不要急着寄出那些告诉我你们的公司对用VB3十分满意或你们除C以外永不用其它语言的信件,并保留起那些讲述.NET将如 何把Java扫地出门、XML将如何取代关系型数据库、或你怎样能用汇编语言或C写任何软件而任何其它开发工具都不重要的信件。

现在,想象一下如果你像很多受裁员和公司倒闭影响的同行一样失去了工作,那将会怎样。如果你突然需要搬往它处该怎么办?如果你的公司突然做了技术转向又怎么办?

在目前的就业市场,经理们是根据当前和未来的开发需要招聘雇员。作为开发人员,你所掌握的知识是你找工作和保住工作的关键。你要了解技术的发展方向,跟上技术的变化,这一点十分重要,即使你永远不用再找开发方面的工作。
这里是我选出的当前最重要的十大开发技术,最重要的排在前面。看完本文后,请务必加入talk.editors.devx讨论组,提出你选出的十大技术。

1. XML

首 先,你要了解XML。我不是说仅仅是XML规格本身,还包括一系列相关的基于XML的语言:最重要的是XHTML、XSLT、XSL、DTDs、XML Schema (XSD)、XPath、XQuery和SOAP。那些在过去5年内从未碰过键盘的人,可能不知道XML为何物。XML是一种文本文件,使用与HTML类 似的标记。XML能定义一个树状结构,并能描述所含的数据。

XML最好的一点是既能存结构化数据也能存非结构化数据。它既能存贮和描述“规格的”(regular)表格数据,也能容纳和描述“粗糙的”(ragged)文件数据。

XHTML是现今写HTML的首选方法。因为它是形式完好(well formed)的XML,比起古老的、通常是畸形(malformed)的HTML文件,XHTML格式的文件更容易处理。

XSLT和XSL是用于把XML文件转成其它格式的语言。可转换的格式包括:文本文件、PDF文件、HTML、以逗号为分隔符的文件,或其它XML文件。

DTD和XML Schema描述XML文件所能包含的内容的类型,并让你“验证”XML文件内容的合理性,而不用写特殊代码以确保内容符合规则要求。

XPath和XQuery是用于从XML文件中抽取单个项目或一组项目的查询语言。XQuery扩展了XPath,因而更重要。XQuery与XML的关系正像SQL与关系数据库的关系。

SOAP是Web服务之间的一个标准通讯协议。尽管你不需要对SOAP标准一清二楚,你应该熟悉一般的schema和它的工作原理,以便能应用这门技术。

2. Web服务

Web 服务是XML流行后的一个直接产物。因为你能用XML描述数据和物件,因为你能用schema确保XML文件内容的合理性,因为XML是基于文本的规范, XML为跨平台通讯标准提供了一个极其方便的基本格式。如果你还从来没碰到Web服务,你可能很快就会碰到,在未来5年内,你几乎肯定会碰到。熟悉Web 服务十分重要,因为它是目前所有跨不同机器、不同语言、不同平台和不同地点的通讯协议中最简单的一个。不管你需要与否,Web服务是迈向互用性的重要一 步。

XML 工作组主席John Bosak曾说XML“给Java一些事做”。实际上,Web服务让所有语言都有了一些事做。Web服务让在大型机上运行的COBOL应用软件能调用在手 持设备上运行的Java应用程序、能让Java applet与.NET服务器交谈、能让微机软件与Web服务器无缝连接,并提供了一个相对容易的方法,让企业不光能向外界提供数据,还能提供功能,而且 是一种与语言、平台和位置都独立的方法。

3. 面向对象的编程

很 多程序员仍认为OOP是象牙塔里的技术。但如果你想一下是什么语言在过去的10年里占主导地位,你就会理解OOP不是象牙塔里的技术。OOP从 Smalltalk开始,传到C++和Pascal (Delphi)。Java使OOP大踏步地迈向主流,几年后的VB.NET和C#则完全确立了OOP的优势地位。尽管这些语言中的多数并不要求你必须会 OOP,但我觉得如果你不了解OOP的基本概念也不知道如何应用这些概念,你能找到的编程工作将越来越少。

4. Java、C++、C#和VB.NET

我把这些语言列在一起,并不是建议你成为每一种语言的专家。我的理由是:学习编程最有效的方法之一是看代码,而你能看到的大量的代码很可能不是用你所喜爱的语言编写的。

在 过去几年,各语言的能力越来越接近。现在,你可以用VB.NET写Windows服务、Web应用程序或命令行程序。即使你只使用一种语言,你也应该学一 些其它语言,以便能看懂那些样例,并将其翻译到你所用的语言。这4种语言是基本核心,还有其它一些满足不同需要、颇具用途的语言,如FORTRAN、 COBOL、APL、ADA、Perl和Lisp。

5. javascript

尽 管名字有些相像,但Java与javascript并无关联。为什么一个脚本语言会如此重要呢?因为所有主流浏览器都用javascript。如果你需要 写Web应用程序,你就有足够的理由学javascript。javascript可以用作ASP或ASP.NET的服务器语言,也可以当做用于扩展 XSLT的功能语言(functional language)。javascript是Mozilla/Netscape中用于激活基于XUL的程序接口的首选语言。javascript的一个变 种ActionScript是Flash MX的编程语言。将来,javascript很可能成为新设备的编程语言,以及大型应用软件中的宏语言。

与javascript 相对照的是VBScript。尽管Microsoft的软件对VBScript有良好的支持,但VBScript在未来的开发工作中很可能是一个糟糕的选 择。就是Microsoft也倾向于用javascript(或Microsoft自己的变种:JScript)写客户端程序。在选择脚本语言时,请选择 javascript。

6. 正则表达式(Regular Expressions

查 寻关系数据库可以用SQL,查询XML可以用XPath和XQuery,查询纯文本文件则可以用正则表达式。例如,你可以用一个命令从一个HTML文件中 查找并删除所有的注释。各种开发语言内置的一些简单的文本查询功能,如"IndexOf"函数或VB中经典的"InStr"函数或"Like"操作符,根 本不能与正则表达式相提并论。现在,各种主要的开发语言都提供使用正则表达式的途径。尽管正则表达式本身既难懂更难读(是回到早期计算机时代的一种倒 退),但它却是一个功能强大而且未被充分利用的工具。

7. 设计模式

正像OOP通过把对象分类以简化编程一样,设计模式对一些普遍的对象之间的交互进行分类,并赋予一个恰当的名称。OOP用得越多,设计模式就越有用。一些最常用的模式的名称已经变成了软件开发领域共同使用的术语,所以要跟上信息的主流,你就要对设计模式有相当的理解。

8. Flash MX

如果你需要在客户端得到比HTML和CSS更多的图形和更强的编程功能,Flash是你的答案。用Flash编程比开发Java applets或写.NET代码要快得多,也容易得多。

在 最新版本 (MX) 中,Flash不仅仅是画图和制造动画的工具,它已经成为一个编程功能强大的开发环境:能调用SOAP Web服务,也能调用远端服务器上的ColdFusion、Java或.NET程序。Flash无处不在。它的引擎存在于世界上大多数客户端计算机,包括 手持设备、置顶盒、甚至是新的书写板电脑。所以使用Flash能大大扩展你的程序的应用范围。

9. Linux/Windows

熟 悉Linux。在一台旧机器或新机器上安装Linux。下载图形用户界面,在其基础上写一些程序。安装Apache,写一个Web应用程序。这个世界不再 仅仅是属于Windows,这种趋势可能还会持续下去。如果你是一名中坚的Linux开发人员,那就抛弃你对Windows的憎恶,看看你能否做一些 Windows编程。Windows能继续在台式电脑上称王是有其原因的,这不仅仅是因为Microsoft控制了这个市场。

没人知道你们公司会在什么时候决定从Linux转向Windows(或从Windows转向Linux),或者你想跳到一家用另一种平台的公司,或者你想出了开发一个杀手软件的好主意,所以你要争取拥有在不同操作系统上的编程经验。

10. SQL

尽 管SQL不像本文讨论的其它技术那样新,而且SQL的重要性在未来10年内很可能降低,但它仍然是一项基本技能。很多开发人员还没有掌握这门技术,或掌握 得不够,不足以有效率地使用它。不要依赖具有图形用户界面的SQL生成器替你做事情,你要自己手工地写查询命令,直到你熟悉基本的SQL语法为止。了解 SQL不仅能帮助你日后学习XQuery,你还有可能马上发现能简化或改进目前项目的方法。

培养好奇心

最后,(对,我意识到这是第11门技术),好奇心是你最重要的技能。要去尝试各种东西。新语言或新技术对你当前或将来的工作可能有用,也可能没用,但并不是你所学的每一件事都是为了工作。不要害怕失败,万事开头难,学新技术也是如此。大多数失败是因为人们希望太快地学到太多的东西。要对每一点进步感到满意,不要让时间(或缺乏时间)妨碍你。相反,你要安排时间留心、研究、试验新的开发技术和工具。

可能永远也没有必要成为这些技术的专家,而且我的选择可能根本不适合你的特殊情况,但通过培养好奇心,你将会发现你应该了解的东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值