Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

July 2003


Untitled Document

July 2003; Volume 4, Number 6
2003 Software Development Salary Survey

A Call for Horror Stories
JavaOne Wrap-up: McNealy vs. the Media
JavaOne Wrap-up: Aspect-Oriented Smack-Down
JavaOne Wrap-up: Branding Before It's Too Late
JavaOne Wrap-up: Hands-on Training
JavaOne Wrap-up: The Black Art of Benchmarking

2003 Software Development Salary Survey
Dear Reader:

Every month, we receive letters from readers thanking us for our coverage of the design-build-test-deploy lifecycle for successful software projects. One of the must-read resources we provide is an annual developer salary survey. Our data is the most trusted and unique tool for anyone—from developer to project manager to chief technology officer—wondering whether they're getting paid what they are worth in the field.

If you work in the U.S., I'd like to invite you to participate in Software Development magazine's annual salary survey. The 26-question survey takes about eight minutes to complete, and can be found at http://www.cicresearch.com/Proj03792.

Please be assured that all responses are completely confidential. This is used exclusively as editorial research for an article to be published in the November 2003 issue. Only aggregate results will be used, and we will not disclose or use your e-mail address for any other purpose than to alert you to next year's survey.

Sincerely,

Alexandra Weber Morales
Editor in Chief
Software Development
CMP Media LLC
600 Harrison Street
San Francisco, California 94107 USA
[email protected]


All Roads Lead to Rome
Three theories to explain three loco LOCs.

A few years ago, I volunteered to re-engineer a Microsoft Access front end. I was eager to get my first really big mission, but I soon realized that I would rather have signed a lifelong contract with the Foreign Legion. The day came when, while scrambling through the vast tangles of spaghetti code that so conveniently hide almost anywhere in Access, I discovered the three lines of code that changed my life as a programmer (or at least changed the way I view other programmers):

Forms!frmMain!txtValue.Enabled = False
Me.txtValue.Locked = True
Forms("frmMain").txtValue.Value = ""

Each line touches the same object in the same form, but is written completely differently. Why would any reasonable person do this? I've been haunted for years by this question, and have come up with three possible explanations for this bit of early extreme programming (extremely bad programming, that is):

The conspiracy theory. Concerned about the Echelon worldwide spying system, the programmer wanted to obfuscate his intentions as much as possible. Indeed, no linguistic system could decipher this code, which looks and smells like Visual Basic, but uses the language in such an obscure way that it makes no sense at all.
The archeological theory. Just as the seas that existed and vanished millions of years ago left layers of limestone and fossils, different programmers modified this procedure, each adding a layer of code—because they clearly could not understand the previous stratum.
The schizophrenia theory. The programmer was suffering from advanced multiple personality disorder. As you can see, the personality switch was very fast: the first line written by Dr. Jekyll, the second one by Mr. Hyde, and the third—well, the third was by Mr. Anderson (who obviously took the wrong pill this time).

I'll let you choose the most appropriate answer. Someone less ingenuous than me might simply call this sabotage.

—David Dossot, Software Engineer and Architect
Thionville, France

This piece was originally published in the October 2002 issue. Do you have a deployment or beta horror story that you're dying to tell? Send your tale of no more than 500 words to [email protected] for possible publication in the October 2003 issue. Submission deadline is July 15, 2003.


JavaOne Wrap-up: McNealy vs. the Media

Sun admits Java has lost ground to .NET, blames marketing.

Sun Microsystems CEO and founder Scott McNealy has the rakish charm and plainspoken humor Americans enjoy in their presidents, be they elected or corporate. He's also got a few extras, starting with a Stanford education and concomitant passion for excellence, both of which make the McNealy keynote at JavaOne in San Francisco's Moscone Center a high point of the company's annual conference. The eighth annual event, in June 2003, was no different. The usual flashy apps took the stage, among them Motorola's digital personal companion, an all-in-one handheld computer, two-way radio, interactive pager and the first wireless phone in North America to incorporate Java 2 Platform, Micro Edition (J2ME).

"Unlike some people, I didn't have to issue a memo to tell my employees that security was important."

Then there was the gloves-off assessment of the ongoing battle with Redmond. But a new contender entered the ring this year: the media. To this reporter, mentions of newspaper and trade coverage of Sun seemed more frequent and biting than in years past, culminating in a tirade about a San Jose Mercury News reporter's article that indulged in the fashionable speculation about whether Sun was an acquisition target for any of its competitors. "I'm going to not vote for anything but an all-cash offer," he joked. "And there aren't too many nonconvicted monopolists with $17.4 billion in spare change."

McNealy made no secret of Sun's lackluster performance in the software market, but he attributed it primarily to feeble marketing efforts that were crushed by the Microsoft .NET juggernaut in the last year. In a humorous bit that presented Java with a report card on such subjects as class participation, choice and branding, he awarded his company an F in marketing. On the other hand, he bragged about Java's security model: "Unlike some people, I didn't have to issue a memo to tell my employees that security was important," he said, referring to the January 2002 Bill Gates directive on "trustworthy computing."

But, in its ongoing competition with Redmond, Sun's biggest gamble is that of eschewing the desktop. "Plastic-wrapped, metal-wrapped, rack-wrapped and gift-wrapped software distribution models are rapidly replacing the standard shrink-wrapped model, changing the very essence of the software industry," McNealy claimed. "Consumers more and more will demand Java-based mobile devices like phones and PDAs—essentially ending the consumer era of software sold separately."

—Alexandra Weber Morales


JavaOne Wrap-up: Aspect-Oriented Smack-Down

Gurus condemn "programming by side-effect," but new tools embrace AOP.

Aspect-oriented programming (AOP) has been touted by some as the next big thing, avoiding the object-oriented tangles by weaving recurring themes that are orthogonal to the main business logic into the code in a traceable fashion. The best known of these tools is PARC's AspectJ, but it's a superset of Java that requires developers to learn new language features and use the AspectJ compiler—and, outside of academia, it's barely on the radar.

"The basic problem here is that services are not generally orthogonal."

In fact, .NET trainer and author John Lam has, in the past week, partially defected from the cause. In his blog he writes: "The canonical examples of AOP [are] tracing, logging, security and instrumentation. What all of these examples have in common is the fact that the aspects are stateless. When you start thinking about how to build stateful aspects, you run into much of the same problems that web developers run into when building web pages: how do I manage the caller's context?"

DevelopMentor instructor Craig Andera is also smacking down aspects. In a recent blog he writes: "The basic problem here is that services are not generally orthogonal. What that means is that it's impossible to simply slap a new behavior onto code without understanding all the other behaviors that are already there ... Sure, some things like logging or security might work like this, but it just doesn't generalize. Does this mean that Aspect-Oriented Programming (AOP) is doomed? Yep. I think it does."

"I think that aspects have failed to catch fire for a couple of reasons, but the major one is that it has not been evangelized the way that objects were or that, say, test-driven development is being pushed now. Where are the aspect-oriented true believers? Where are the success stories? Theoretical or academic credibility means nothing to the market as a whole," offers Larry O'Brien, former editor in chief of Software Development.

Furthermore, "Without evangelism, there have also been critical stories. So even the above-average person, who's heard of aspects and would be willing to consider them, has heard conflicting things. At this point, for someone to use aspects requires a real leap of faith. That's the sort of thing that college kids do all the time, and aspects do have academic credibility. I think that, eventually, AOP will become mainstream."

And the signs of new AOP tools are just emerging. A case in point: At the JavaOne conference, I caught up with Michael Yuan, a graduate student at the University of Texas who was excited about JBoss's implementation of aspects.

"The Open Source JBoss AOP architecture injects aspects at runtime rather than at compile time, and its Java-based framework is a lot easier to use, with much better development tool support (standard Java IDEs)" he explained. "So, as opposed to developing orthogonal components as reusable aspects and weaving the aspects into the main inheritance tree at the compile or execution time as AspectJ does, JBoss application server uses AOP interceptors to inject aspect functionalities directly into the hosted application bytecode at runtime. In fact, from JBoss version 4.0, all the container services are implemented as aspects." Furthermore, Yuan states, "JBoss provides a very clean architecture that allows developers to develop new container features with ease. The clean separation between components is essential for open-source projects lacking centralized process management. They're the first to use it in a highly successful and production quality system that highlights the open-source community's ability to innovate."

O'Brien agrees that JBoss is "absolutely a technically top-notch solution." But he compares it to Linux about four years ago, before IBM stepped in: "I don't think Linux would be making its server-side gains without IBM's credibility, advertising and support. I'm not at all sure that JBoss has the potential to gain more than, say, 5 to 10 percent of the market—especially with the collapse of the dream that J2EE would provide a fast enterprise development solution."

But Yuan is still bullish: "JBoss is going to be the most popular Java application server in the world. It's converting a lot of BEA customers to their products. So, to use AOP in JBoss is a very strong validation for the AOP programming model."

Has AOP finally graduated from the campus? We'll be watching.

—Rosalyn Lum

RESOURCES
Aspect-oriented programming on the Web

The open-source JBoss AOP framework is available with the JBoss source code. For a more detailed discussion, refer to:

http://www.jboss.org/developers/projects/jboss/aop.jsp

The AspectJ website has many AOP articles:

http://www.eclipse.org/aspectj/

Another AOP-based Java application server implementation (Called Java
Aspect Components) is discussed on JavaWorld:

http://www.javaworld.com/javaworld/jw-03-2003/jw-0307-jac.html

JavaOne Wrap-up: Branding Before It's Too Late
Taking a page from Intel, Sun seeks mass market.

The average consumer probably isn't aware that Java is everywhere, nor does she care. Sun is aiming to change this: At the JavaOne conference, Executive Vice President Jonathan Schwartz announced an aggressive, multimillion-dollar "Java Everywhere" campaign to heighten consumer awareness with a new logo—a steaming cup of coffee, of course. The goal? To remind users that Java is under the hood and drive them to not only buy, but demand Java-enabled devices. Sun is asking manufacturers to place the Java logo on their products, just as the Intel Inside campaign did on PCs.

Schwartz's cited statistics on Java's ubiquity were impressive: Java's in all the Fortune 500 companies, 24 million SDKs have been downloaded, it lives on half a billion desktops, 22 manufacturers use it, nearly 100 million Java-enabled phones are in the field, and 53 carriers are deploying Java services. Another Sun initiative aims to simplify the Java stack much the way the .NET concept has done for Microsoft: Schwartz proposed one community, one Java (combining JavaCard, J2ME, J2SE and J2EE), one platform, a common architecture and one network for interoperability. Over the past five years, Sun has faced more challenges than ever: The complexity and multitude of Java platforms and products are enough to confuse any developer, and many are flocking to Microsoft's .NET. Michael Bouchard, a senior architect with the consulting firm CapTech, agrees: "The different Java platforms confuse issues; clients don't understand them."

While Schwartz stated that the success of Java depended on the simplification and integration of technologies to one new platform, he didn't offer how it would be realized or a timeframe.

Meanwhile, Toronto-based Tira Wireless was ecstatic. "I would love to see people asking for Java and saying 'I have a Java phone,'" said Wayne Seifried, director of product marketing. "It significantly extends our marketing dollars and reach." But smaller companies such as aJile, which offers a unique hardware Java processor, says it's just another Sun marketing ploy to pull in more cash from their partners. "We've had no help from Sun to get our product to market, and we've had to pay substantial licensing fees—this [branding] is just another way for them to make more money," said Application Manager Thanh Nguyen. The consumer doesn't care what language an application is written in, Nguyen believes—only in its quality.

Developer Michael Yuan voiced yet another concern from the open-source community: "It's quite obvious that Sun is determined to ensure maximum compatibility for any product with the Java logo. Compatibility means that all vendors must stick strictly to the official specifications created by the Java Community Process. While all vendors are invited to participate in the JCP, this 'specification first' development paradigm does create friction with the open-source community. In the world of open source, people develop products that address immediate needs and then expand them with additional features. Specifications become necessary only when multiple projects start to fragment the market—developers rarely find it fun or cool to build to an arbitrary and complex specification developed by a committee. How to reconcile the JCP with the open-source development paradigm is a big issue facing the Java community today."

—Rosalyn Lum


JavaOne Wrap-up: Hands-On Training

Code Camps come to the conference.

"Turnout was fabulous—it was as good as we hoped it would be," said Frank Curran, a manager of the Technical Evangelist Group about the popularity of JavaOne's inaugural Hands-On Sessions, helping developers adapt to emerging technologies. Three day-long programs were offered in J2EE, Java Web Services and Mobile Computing, giving developers new to programming in these environments a walk through the process.

Although new to JavaOne, the concept of hands-on programming has been a Sun signature for years and, Curran boasts, has had a direct impact on sales. Smaller-scale Code Camps packed with technical content, programming exercises and sample code are conducted throughout the world for ISVs, generally tailored for classes of no more than 20 participants. "The feedback has been tremendous," Curran gushed, "and we're ready to roll the program out on a larger scale."

At JavaOne, participants had to preregister for the Hands-On classes that met throughout the day. The four-hour program was divided into three parts, kicking off with an hour-long technical presentation/tutorial for all registrants. Participants were then split into three groups, each attending a two-hour programming lab, and manuals guided them through the program. A one-hour evening birds-of-a-feather discussion wrapped up the day.

All skill levels were present—some programmers were not as strong as others, and a few of them left frustrated; others felt that they could have gone faster and packed more into the lab without the tyros dragging them down. To remedy this, Curran offered that future sessions may include beginner, intermediate and advanced programmer tracks.

—Rosalyn Lum


JavaOne Wrap-up: The Black Art of Benchmarking

How to tell the truth about your system with statistics.

Just as test-driven development embeds testing in the programming process rather than as a separate function, Sun evangelists Tom Marble, Senior Java Performance Engineer; Timothy Cramer, Java Performance Engineer; and Menasse Zaudou, Java Performance Engineer, expounded on the virtues of tying micro-benchmarking to the project plan and product development cycle. In their JavaOne session, they explained that though benchmarking success is still a what-you-make-of-it approach, developers can make results more meaningful and less of a black art.

Micro-benchmarking is the measurement of a large number of parameters in localized areas to guide thoughtful design. "They are generally easy-to-understand, much abused by marketing and used for high-level decisions. Best of all, they ensure that you don't get fired," says Cramer. For example, micro-benchmarks can be used to tune applications, the Java virtual machine and the operating system, or to sniff out hardware conflicts. Benchmarks can also be used for non-invasive monitoring of real product behavior.

Want to write meaningful micro-benchmarks that are more than just marketing fodder? First off, the speakers recommend, know what your measures are really measuring. Understand the number of observations and what the variability means—and if you're not clear on those statistical terms, you may wish to pick up a refresher textbook. It's also crucial to collect enough data from various platforms and systems for a representative sample. When evaluating multiple measures (threads, memory, IO and so on), change only one variable at a time. Visualize your results with scatter graphs, plots or a chessboard. Create profiles and monitor them to better visualize changes over time. Be consistent and keep raw logs. Most importantly, link your benchmarks to the project plan. Ignore these guidelines, the speakers warn, and your numbers will continue to have no more credibility than a deck of Tarot cards.

—Rosalyn Lum


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.