Log in

No account? Create an account
Previous Entry Share Next Entry
The Future of Software Development
Thanks to Tim Bray for the pointer to this collection of thoughts about where software development is going, and especially to (as Tim puts it) this "zinger":
Regarding Java. I fear that Java will have to be abandoned to the "Enterprise Development" world. It will be relegated to the hands of cut-rate business coders bashing out their gray business applications for $30 / hour. We've passed the tipping point on this one. We used to joke that Java would be the next COBOL, but that doesn't seem as funny now that it's true. Java will continue to exist. Millions of lines of it will be written each year. It won't be the driver of innovation, though. As individual programmers, I'd recommend that you learn another language immediately and differentiate yourself from the hordes of low-skill, low-rent outsource coders that will service the mainstream Java consumer.
I largely agree, and recommend that programmers take note.

It's not that Java is going to suddenly go away: it'll be big business for ages to come. I mean, I know lots of people who were still making good money programming COBOL in the 90s. But keep in mind that many of those people had their careers mostly wiped out when Y2K came along, and there's a moral in that: having your career dependent on obsolete technology, even popular obsolete technology, is dangerous in the long run. The only way to survive the long haul of the programming business is to spend time every single day, keeping your skills sharp...

  • 1

Which languages are up-and-coming?

If Java is going the way of COBOL, which languages would be worth investing time into learning? Scala, Ruby, other?

Re: Which languages are up-and-coming?

Python is easy to learn, easy to use, and may be useful in many situations where you are working with other teams, especially in webby startups. Ruby offers a similar set of benefits.

My experience with Javascript and Python (especially in GIS) has gotten me many job offers. None of them have enticed me enough to leave the Day Job, though some of them have come close.

Re: Which languages are up-and-coming?

Scala's certainly my pick for best up-and-comer at this point. The type inference is good enough to make ad-hoc application development as fast as a dynamic language while providing type safety, and the power features enable you to develop fabulously powerful and easy-to-use libraries. So especially for large-scale work, it's my current pick.

And as I was observing to someone the other day, learning *all* of Scala is a really great way to teach yourself most of the important concepts in modern programming. I recommend starting with the front of the book and focusing on the basics at first -- you can do an enormous amount with a modest subset of the language -- but the power features will teach you a lot about how to program at the cutting edge. One thing I quite like about it is that you can sit an application programmer down, teach him just a bit of the language, and he can be fully productive, but there's huge power available to the deeper systems and libraries engineer.

There are lots of other contenders worth at least being familiar with. On the dynamic-language front, Ruby and Python are clearly both established, serious languages for hardcore work, and I expect they both have legs, so learning one or both seems useful. Pure-functional languages like OCaml, Haskell and F# have gained a lot of ground in recent years, and moved from being academic curiosities to real tools. And there are lots of useful (if more esoteric) languages like Erlang, Clojure, and so on, which are developing serious niches. (Heck, even C# is doing a fair job of staying more up-to-date than Java is, although its lifespan is probably limited.)

All that said -- if you want to learn one language, Scala's the one I recommend, for a host of reasons:
  • it's the best OO language out there *and* one of the best functional languages;
  • it strives to take all the useful ad hoc concepts that are popular in other languages, and make better sense of them;
  • it takes libraries way the heck seriously, and is rapidly improving on the core JVM libraries;
  • but it *is* JVM-based, so you have access to the wealth of Java libraries out there;
  • it has powerful support for Actors, which are one of the better approaches to dealing with large-scale problems;
  • perhaps most importantly, it has an extremely active community, which is constantly pushing the language forward.
Put all that together, and it's my pick for The Next Big Language, and I expect it to be fully mainstream in a few years...

  • 1