Newsletter sign-up
View all newsletters

Enterprise Java Newsletter
Stay up to date on the latest tutorials and Java community news posted on JavaWorld

JavaWorld Daily Brew

Gosh, Things ARE Better for Developers These Days


 

Let's take a moment to appreciate how much has improved, in a developer's lot, over the last decade. In particular, contemplate how many "basic" programming concepts and "everybody knows" knowledge didn't exist in your life.

I've written a lot of computing nostalgia articles, from Old-school programming techniques you probably don't miss to Technologies We're Glad Are Dead, and I sometimes fear that there's a little wistfulness in my voice. But the truth is that we (as technologists as well as software creators) are far better off than we used to be.

To highlight some of the improvements, in this post I identify several programming concepts that have entered the "ordinary" developers' awareness in that last 10 years. (I got help from several kind people on LinkedIn.) Perhaps you'll appreciate how far we've come, and how much easier things have become for those who need to crank out working software on a boss's or client's unreasonable schedule. (Or at least we like to think they make things easier.)

The first problem in doing so, though, is deciding what we can claim "existed" a decade back. Because plenty of programming techniques were invented or discovered long before that... they just weren't considered ordinary, a concept that even the most naive of developers are familiar with. I'm not speaking here of competence, just awareness. Or, look at it this way: A decade back, you'd have considered knowledge of these unique enough to call out on a resume; today, it's common knowledge, or so endemic that the technique is built into your development tools.

For example, design patterns were around since the book was published in 1994. But for years their use remained... not esoteric, exactly, but certainly something expected only from senior developers. Arguably, design pattern expertise was how you proved you were an expert. Nowadays, developer tools assume that you at least know what a design pattern is, if they don't offer features to align with them.

Another arguable category — is this "repackaged" or "new"?—is Software as a Service. SaaS existed, kind of, in 1999; we just called them Application Service Providers, and most of them failed because the companies behind them couldn't invent a business model, because they were over-protective of their APIs, because they required a not-yet-extant ubiquity of Internet resources (like common broadband access), and for many other primarily-business reasons. But this, too, was esoteric knowledge and not a topic that developers would discuss at any length. What is different in the ASP-to-SaaS transition, I think, is developers commonly writing applications building on public Web APIs. In 1999, it was still a big deal for your Internet application to integrate with FedEx tracking. Now, an entire Web application can be composed of glued-together APIs.

XML existed, in 1999, but the first conference examining the technology and showing how to use it was in 2000. I attended that conference (and have a coffee mug to prove it). The big issue at the time was whether Microsoft's unique "extensions" had any relationship with the burgeoning XML standard. Everyone took for granted that XML would be a godsend to anyone who needed to exchange data with others, but nobody had invented the term Web services at the time. Service-oriented architecture was far in the future, though all of that, I think, was intimated by the initial promise of XML. And not just XML as a technology, but in its insistence on creating actual web standards to which everyone (even Microsoft) adhered.

One programming methodology that certainly fits in the "last 10 years" category is Agile development, as the Agile manifesto dates from 2001. I think Agile led to many other process improvements, and thus tool enhancements. As one LinkedIn friend pointed out, "Test-driven development, unit-testing tools (like NUnit and JUnit) and mocking frameworks have become widespread and are big improvement over the ways developers tested their code in the previous decade."

And hard as it may be to imagine, Microsoft's .NET didn't exist until 2002.

Surely, we must include Ajax on the list of advances in the last ten years. As with others, all the pieces were in place already, but turning a collection of useful techniques into a package of common tools has changed the way that developers work. The same might be said for any number of open-source development tools, from databases like MySQL to IDEs like Eclipse; initially considered "Well, they're okay for free," they are now overtaking and worrying the proprietary vendors. And while there were application servers ten years ago, in the last five or six years that we've seen the growth of useful meta-applications, such as content management systems, giving developers more than a rough scaffolding on which to build sites and applications.

But those just represent the tip of the iceberg. I expect you could name all sorts of other development techniques and tools that have vastly improved the quality of developers' lives. Care to add a few?

sure, here are a few of them

I think one of the tech that improved fast the development activities is Rails and Grails approaches, and languages like Ruby or Groovy.

Definitely Scum too is in the same category for Project Management.

If we are talking about techniques and tools that improve developers' life these days, i do not think that XML, Webservice or .net are in this category, otherwise I should mention also web 2.0 and all the concepts here: mash up,...these improve the software in general, but not the way in which we develop.

Libraries and other softwares also play much bigger role.

We can list several little things. Apache comes to my mind as the first thing as a package that covers lot of other house hold things under its umbrella.

Are things really better?

I tend to see design patterns as just another step in a long line of growth starting with flow charts, and moving through Object Oriented design. Gradually, over time we've been exerting more and more philosophical control over what the coders write. It's an old trend that is still looking for some type of win (and still isn't winning).

The ASP or SaaS stuff is just "mainframes" making a come back, in a shiny new package. It toggles back and forth, decade after decade. It's more expensive initially to have a big machine, and more expensive in the long run to have a lot of small ones.

Before XML we all wrote our custom file formats. After XML, we all create our customs DTDs. Did it really change?

Agile is new, but I'm not entirely sure it is oriented in the right direction. It seems to be more of a sales movement than a technical one.

And .NET is just one more thorn in a long string of Microsoft attempts at trying to monopolize the development market. It's an old, sad and frankly quite destructive story. We keep trading useless features for stability.

A decade ago we were writing thick and thin apps for technologies that were basically unstable underneath, while most of the real data was stored on mainframes. These days, not much has changed. The technologies have matured (in their marketing), but other than being more complex, they still have the same inherent weaknesses. We're still rewriting the same applications over and over again. And the approach to development has split, so now the cowboys and the engineers no longer even agree on what's important.

We haven't made much technical progress, and we are no closer to really understanding how to reliably build things.

Now, the next decade with new things like natural user interfaces, and hopefully some new development techniques may have the potential to get us back on track. :-)

Paul.

Garbage Collection?

You've omitted one of my favorites: garbage collectors! Sloppy programmers everywhere can now count on the execution environment itself to clean up the objects that are no longer needed (generally). C++ memory leaks were such a pain...

Excellent post!

I love this site, informative and intellectual posts such as yours, with insightful comments like those above. I do have to agree with Paul though, that although things seem to have changed on the surface, and we have shiny new packages and new names for things, a lot of it is the same. A new facade' doesn't change what's inside...

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Post new comment

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <p> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <br /> <br> <strike>
  • Lines and paragraphs break automatically.
  • Use <!--pagebreak--> to create page breaks.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.

More information about formatting options

CAPTCHA
Just checking to see if you're an actual person rather than a spammer. Sorry for the inconvenience.