The State of Software Development
In the world of Microsoft, the last year has been all about .NET. Is it an improvement?
I EMBRACE with great satisfaction the opportunity, which now presents
itself, of congratulating you on the present favourable prospects of our
public affairs.
—George Washington, the first State of the Union Address, 1790
While the state of software development is of somewhat less import than
the state of a new nation, I can’t help but share some of old George’s
optimism about the way things have been going lately. In this, my annual
roundup column, I’m going to look back over the last twelve months,
and perhaps peek a bit forward.
It’s All About .NET
For me, at least, software development over the past year has been
all about .NET. Sure, I’d worked with Visual Studio .NET starting
with very early betas, but it wasn’t until I signed a contract to
write three MCAD training guides that I dug in seriously. Now, a year
later, I’ve worked with most every part of Visual Basic .NET, C#,
and the .NET Framework — and I have to say I’m impressed.
I’ve moved much of my own development work over, and I’m not
looking back.
(This is probably the appropriate spot to assure you that yes, I am aware
of other enterprise development options, notably Java. But this is a Microsoft-centric
site and I’m a Microsoft-centric sort of guy. For other people,
the last year has been all about J2EE, and that’s great too. There’s
been some acrimonious debate between the two camps lately, all of which
strikes me as about as illuminating as burly guys growling “tastes
great” and “less filling” at each other.)
Anyhow, I’ve written a pretty large amount of .NET code over the
last year. Much of it is trivial example code to demonstrate one or another
exam objective, but there are some bits of “real” applications
in there as well. Whether it’s enumerating all of the shares on
a network or hooking up databases to a Web page, it’s been a productive
environment for me. Much of the credit has to go to the team that designed
the .NET Framework. They crammed a ton of stuff in there that the VB .NET
or C# developer gets for free, without writing any code. Many things that
used to be very difficult (like creating a Windows service) are now trivially
easy. Of course, a few things are harder (drag and drop, for example),
but overall most everything moved in the right direction.
Judging by the number of utilities — commercial and freeware —
that have come out for .NET, I’m not the only one who feels this
way.
But Is It an Improvement?
This is, after all, supposed to be a column about improving software
development. So, does moving to .NET allow people to write better software?
Well, yes and no.
As I said already, many things have gotten much easier in the .NET universe.
If you’re trying to pass relational data between tiers or check
the value of a performance monitor or secure code so that only certain
users can run it (to name just a few possible tasks), the classes in the
.NET Framework can do the job. This has the prospect of making you much
more productive than you were with any previous Microsoft programming
environment. Hopefully, with improved productivity you can pay a bit more
attention to things like quality control. The Framework itself is quite
high quality (though, inevitably, there are some problems; see the .NET
Bugs Registry at http://www.jelovic.com/dotnetbugs/index.html
for some examples).
But while making it easier to perform superhuman feats of programming,
the .NET Framework has also made it much easier to shoot yourself
in the foot if you don’t know what you’re doing. Take Web
Services, for example. Web Services are great for distributing applications
across the Internet and for interoperating between various platforms and
languages. But all too many developers who don’t know what they’re
doing are creating Web Services that don’t interoperate well or
that are dog-slow because they try to pass too much data. Sure, you can
serialize an elephant if you want (at least, you can if you implement
ISerializable in the elephant class), but don’t expect it to get
delivered quickly over a dialup connections.
But that’s always the pattern with new technologies. Windows itself
made it much easier for many developers to create an attractive GUI —
and easier for other developers to create hideous, non-standard user interfaces.
Technological power needs to be leavened with experience and thought in
the programming business.
Effective .NET
So, given that you want to write high-quality software,
what do you do to increase your chances of doing so with .NET? I’ve
got three recommendations here.
First, learn to actually use .NET. It’s not VB with a few tweaks
and it’s not a minor upgrade to MFC. In particular, you really need
to spend some time browsing around in the .NET Framework, so you can understand
all the things that you don’t have to write code to do.
More than once I’ve pointed out to a new .NET developer that they’re
expending a lot of effort on something that would be a one-liner if they
instantiated the proper class. In addition to the SDK reference material,
you might find a book such as the O’Reilly’s
C# In A Nutshell useful in giving you a paper Framework reference
to page through.
Second, investigate the tools that exist to extend .NET. Although it’s
a young environment, there are already dozens of things that plug into
the Visual Studio .NET IDE. These range from high-end UML tools like Rational
XDE down to freeware code-generation tools like CodeSmith
to designers that make creating strongly typed collections a snap. Browse
through back issues of MCP Magazine
Developer Central or visit my site at http://www.larkware.com/
and you’ll find dozens of these tools.
Finally, don’t neglect the basics. No matter how spiffy the development
environment, you still need source code control. You still need daily
builds. You still need to track requirements and bugs. You still need
a project plan, and good communication between team members. For many
of these tasks, there are now tools that integrate well with .NET. Just
don’t make the mistake of thinking that you can skip over this stuff
because the environment is so productive.
And on the Horizon?
With Visual Studio .NET 1.1 released, it looks like we’re going
to get a bit of a breather on new tools from Microsoft. SQL
Server “Yukon” will be in beta soon, but I’ll be
very surprised if it actually ships before 2004. Office
11 shouldn’t be out before late in the year either.
So, my advice for the moment is to take the time to consolidate your
gains. If you’ve been planning a .NET migration, things are stable
enough, and the tool support is good enough, to get started. If you’re
thinking about tweaking your development process, go for it — maybe you’re
ready to try some agile methodology, or at least get that daily build
stuff going? Above all, have some fun and concentrate on writing high-quality
software. And yes, I do think those two things go hand-in-hand. That’s
what makes this such a great business.
Of course, last year at this time I was speculating that we were finally
getting the upper hand over worm writers — and SQL Slammer came
along to prove me wrong. But why wait a year? Write
me now and let me know what I’m missing on the current software
landscape. I’ll use the most interesting comments in a future issue
of Developer Central.
Want to read more of Mike’s work? Sign up for the monthly Developer
Central e-newsletter, including product reviews, links to web content,
and more, at http://lists.101com.com/NLS/pages/main.asp?NL=mcpmag&o=developer.
About the Author
Mike Gunderloy, MCSE, MCSD, MCDBA, is a former MCP columnist and the author of numerous development books.