Undergraduate Capstone Open Source Projects

Where the Puck is Going to Be

Posted by Greg Wilson on 2009/08/19

One of the most interesting parts of this course for me is watching students decide what projects to work on. When answering their questions, I frequently find myself quoting something that Wayne Gretzky once said when asked what made him such a great player: “A good hockey player goes where the puck is. A great hockey player goes where the puck is going to be.” Five years ago, when Napster was making headlines, students typically wanted to write peer-to-peer filesharing tools; today, many of them want to do Ruby on Rails, social networking, or iPhone development.

But that’s where the puck is, not where it’s going to be. The social network market has already matured and is rapidly consolidating—just look at Facebook’s acquisition of FriendFeed. Rails is cool, and will probably still be as widely used ten years from now as PHP is today; similarly, the iPhone is here to stay, so learning its ins and outs is a pretty safe career bet, but both are likely to be awfully crowded job markets in 2-3 years.

So where’s the puck going to be? What are going to be hot markets and technologies in 2012? 3D printing is now on a Moore’s Law curve, which means that three years from now, 3D fabricators are going to start appearing in copy shops in major cities. What’s going to be the equivalent of MacWrite (the first mass-market WYSIWYG editor) for that domain?  What about wearable medical monitoring devices?  Collecting the data is (almost) a solved problem; collating it and bringing problems to a human being’s attention is definitely not. (Imagine half a million people in the Greater Toronto Area wearing heartrate and blood pressure monitors, all reporting data in realtime—what would you do with it?)  All of these things are going to go from science fiction to whiz-bang demos to everybody’s-doing-it; the trick is to get on board in time for the whiz-bang stage.

And yeah, the odds are that you’ll pick the wrong one. In the 1980s, for example, I was sure that the next generation of computers were all going to be parallel; turns out I was off by two decades. In the mid 1990s, I joined a startup doing 3D visualization of business data: good 3D graphics cards were just hitting the market (driven primarily by the demands of gamers), and we thought we could leverage their capabilities to give financial types on Bay Street and Wall Street new insights into their data. Turned out we were wrong, but as someone other than Gretzky once said, if you don’t play, you can’t win.

So: what do you think the hottest technologies of 2012 are going to be? What could you be mastering now that will make you a sought-after recruit for grad school, or a desirable hire, in three years’ time?

10 Responses to “Where the Puck is Going to Be”

  1. jon pipitone said

    this might be useful? Gartner’s 2009 Hype Cycle.

  2. David Crow said

    Joey and I often talk about if we could go back in time to when we graduated to provide information about the future. Imagine how ridiculous this would have sounded in 1995. Here is the list of the 5 important changes:

    * Ruby on Rails – An obscure object/functional programming language written by a Japanese professor would enable a Dane to create a web application development framework that is redefining how corporate giants build web applications.
    * Linux – Half of the worlds’ servers would be running an operating system written by a Finnish guy as a hobby project
    * Javascript – I know this is primarily used for buttons and mouseovers today, but it will become the defacto standard for UI development on the Web
    * Google – 2 computer scientists from Stanford would create the largest media and advertising company because their search algorithm was good enough to attract enough traffic that they could build an effective ad auction system
    * iPhone – Remember this is Apple after firing Jobs under the helm of Sculley, that Apple would create a mobile phone that redefined the relationship that developers have with carriers to deploy applications

    Some random guesses.

    * Gaming engines and simulations (finanicial modeling)
    * Distributed device experiences (e.g., controlling TV/PVR with iPod)
    * Robotics
    * Layer 7 (and Layer 8) applications and optimizations (seeing REST emerge on top of HTTP)

  3. Laurie said

    More ubiquitous wifi and better support for mobile devices. Not being able to read a blog while on the subway is beginning to feel archaic. Why can’t they just pump it to my brain?

    And hooray for healthcare IT! ❤ SIMS. All the disparate pieces of systems that exist today need to start working together as a cohesive whole. Integration projects are where it's at.

    Also, why is it so hard to build me a robot butler? Surely someone could have had one built by now.

    • David Crow said

      It’s not the future until I have a flying car. Plain and simple.

      • With the number of traffic accidents occurring on the roads already, I truly fear for the day flying cars become ubiquitous. (Of course, if you want to have the only one, David, I’ld be okay with that. 🙂

  4. I’ll agree with Laurie, but take it a step further. With the more ubiquitous wifi will come, an increased interest in cloud computing, and (maybe massively) parallel programming.

    On the other hand, if it was me who was trying to look for a job in 3 years, I think I’ld be trying to master C++, Javascript/HTML/CSS, and how to work on open source projects. (And I would recommend them not just because I’m currently working on an open source project using C++, Javascript, and CSS, but more because I’ve used that set of technologies in just about every job I’ve had since the mid-90’s, and they don’t seem to be going anywhere. And any open source work is a great thing to be able to point potential employers at.)

    Looking over the question again, you’re sort of asking two different things:
    1) What’s the hottest technology going to be, and
    2) What will get you a job?

    The answers to those, it seems to me, are going to be quite different. For instance, today:
    PHP, Flash, Java, and .Net will get you a job.
    Augmented Reality, HTML 5, Ruby on Rails, and iPhone programming are hot.

  5. Titus Brown said

    I think “learning how to program quickly, reliably, and well” is a pretty safe bet. Start with a language with a future, though — JavaScript, Python, maybe Ruby… and by “Start” I mean “learn everything possible about the language, and then write big programs with it, and then figure out that you suck at writing big programs and learn how to do that better.” Then you’ll be ready for almost anything.

    I still think “science” is going to be a good long-term bet, as far as topic areas. Biology and bioinformatics, in particular.

  6. dhumphrey said

    Obviously I think Blake is right, because I run Mozilla Education: open source, C++, JavaScript, HTML, CSS, XML, etc. That sounds about right to me. For any and all students wanting to hack on Mozilla, I’d be happy to help them get going, find projects, etc.

    Having said that, there are two areas I see a lot of growth in right now, and I think are worth paying attention to in the 3-5 year range. They are:

    * Mobile. David has already listed iPhone development, and I’d agree with this, but expand it. It’s not clear what *the* mobile platform is yet, whether there will ever be just one (e.g,. Nokia in North America isn’t that big, but in other parts of the world…). When I say mobile, I’m talking about a large ecosystem of concerns. For example, limited input surface, limited display size, etc. make accessibility a primary concern not just of the disabled, but of all users. We need ways to interact with devices that go beyond our current metaphors and UIs. Mobile also means getting back to basics when it comes to resource management. At Mozilla there is a lot of work right now to make our code fast on mobile devices. Things like file I/O, screen redrawing algorithms, memory and threading–this stuff is really, really important on a computer that is basically as powerful as you had on your desktop 5 years ago. Remember 5 years ago?

    * Static and Dynamic Analysis. As code gets larger, more complicated, and older, there is an ever increasing need to be able to ask questions about it, and modify it (but not by hand!). This kind of analysis means all sorts of things, and isn’t easy to sum up, but here are a few things I’m seeing lots of lately: work on compilers (e.g., plugins to GCC to extract rich AST info), instrumenting large systems to determine bottlenecks, finding and killing dead code, etc. Also working with tools like dtrace to understand the system while it’s alive. Any work going on today that involves large code bases (and as our code ages, it grows) is looking more and more to tools (and people who know how to use these tools) to do what humans can’t at scale.

    Dave Humphrey

  7. Chani said

    we’ve got some cool stuff going on in KDE…
    there’s a group working on integrating the web into the desktop (they don’t want attention until they’ve got more code written, though).
    there’s social-desktop work going on (I know someone blogged about that, but I can’t find it, it was months ago), which will hopefully be more than just friends-on-your-desktop; there’s some geolocation fun in there already iirc. here’s some of the code.
    there’s a gsoc project for sharing plasma widgets over the network – and a screencast of it, yay! 🙂
    there’s netbook stuff happening too, but that’s more for today than the future.
    and that’s just what I remember off the top of my head. 🙂

    I think the networked plasmoid stuff could be pretty cool. it’ll make it easy to share parts of your desktop – for presentations, for showing your friends cool stuff… of course it’d be even cooler if it was on lots of devices. imagine controlling your computer’s media player from whatever mobile device you’ve got in your pocket, or arriving at a train station in a foreign country and dicovering their train schedule is available on your desktop, in a much nicer format than a web browser would give you…

    I also think the battle for personal data will begin eventually… right now all my email is stored in google’s servers, and if they cut off my account, I wouldn’t be able to do anything about it. that’s scary. if people trust all their data to google that’s great for google, and in *most* cases fine for those people, but the loss of control, the potential loss of privacy… ick. we need a way for people (and companies) who care about their data to store it safely somewhere they can always access it. while still having the convenience of document sharing n’stuff.

    there’s also been more talk of context-aware computing… having the computer figure out where you are and what you’re doing, and adjust to that. so that you could set it up to go into presentation mode when you walk into a lecture hall (we have the technology!), switching over your widgets and maybe your applications too… and I could set my laptop to switch to the appropriate course based on where I am, then switch back to my plasma stuff when I get home. (homework? what is this “homework” you speak of? 😉

    it’ll be really nice to have a computer that helps me more and gets in my way less.
    …and then what? hmmm. I’m not sure. but I like this trend towards small devices, and I’ve always wanted the e-paper stuff I’d hear about in science magazines. why don’t we have a wearable computer yet? or a daylight-readable one (other than the XO, which is frigging heavy by today’s standards)? I wanna take the screen and mesh networking from the XO, put it into a formfactor more like the nokia n810 or a modern netbook, and be able to read and hack on the beach. 🙂 or even just take my laptop out into the garden more often.

    of course, when it comes to getting a job, with my Qt programming knowledge I don’t have to worry (although it might not be a job in vancouver). nokia’s “Qt everywhere” vision might make it even easier.

    I wonder what’ll happen later on… with devices getting smaller, interfaces getting more flexible and context-aware, internet access getting easier and faster (although still not 100% reliable)…

    I wonder, could traditional monolithic applications someday be a thing of the past? perhaps instead we’ll have a bunch of little scripted applets that show us parts of our data, both local and remote, and services running in the background managing the data, with applets to configure those too… all in a nice standardized way so that it’s easy to create a new visualization/editor of data or a new data source, easy to get apps, to share them, to share data… well, I dunno if that much happy standardization and collaboration will happen, but I can dream 😛

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: