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 officerwondering
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 codebecause
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 thirdwell, 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 PDAsessentially 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
compilerand, 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
marketespecially 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
|
|
|
|
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 logoa 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 feesthis [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 believesonly
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 marketdevelopers
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 fabulousit 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 presentsome 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
meansand 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 |
|
|