Near-future trends in the IT field and IT employment

A few Saturdays ago I participated in an industry panel at a University of Iowa ACM IT event.  We discussed the IT field and employment in the near-future.  My big message was about software being made into discrete components, composable, and extensible.  There are all sorts of hot new technologies on the web in terms of user-facing functionality, but in terms of IT effort, these are the things that I see creating value and leading to better software.

The software (online or offline) that becomes the most successful is that which is the least restrictive.  If you create a reference site that only allows usage through a web form, it won't become nearly as popular as one that can be used by other sites and application via web services.  A utility that can perform some action when an event occurs (how generic is that description?!) will be more useful if you can use add-ins to augment its features.

Look at how Firefox has taken market share.  People like its speed and its standards-compliancy, but I think the bigger driver of its success is its incredible add-ins selection.  Sure IE supports add-ins, but there's no active community of them, and so many of them are just adware-ridden toolbars.  In order to truly succeed in software, you need to create a great product, but you also need to make sure that you (or your company) doesn't have the final say on future features and app usage.  If you create a closed application and users love 90% of it, but some other application includes the other 10%, you run the risk of losing users.  And here's the thing: this is often true even if the competing product doesn't support the other 90% that you have.

By creating a platform rather than a simple application, you empower your users to fill the gap to close that final 10% of the features.  Features that just aren't cost-effective for you to add.  Features that don't appeal to a wide enough spectrum of users.  Create a solid base and let your users turn it into the perfect product.  It's win-win!

For example, take photo gallery tools.  So many to choose from.  I love Picasa for many reasons, but I hate its video features and it only uploads to PicasaWeb and Blogger (without using hacks).  I love Windows Live Photo Gallery for its video support, and its nested tagging, but it's lacking many of the print options of Picasa.  If either one of them supported plugins, no one would use the other one anymore as there would suddenly be a proliferation of useful and oddball add-ins filling every gap.

And interestingly, it's the oddball ones that really push a platform.  The ones that make you ask "WTF?" are the ones that wow a niche of people.  That mainstream application all of a sudden is a perfect tool for something you never even imagined.  And you get it all for free.  As long as you put the hooks in place from day one to enable your application to truly be a platform.

The added up-front cost is somewhat higher.  Be sure to factor in security and reliability, and try to keep your API as stable as possible, but in the long-run you'll end up with an entire ecosystem around your product rather than a simple user base -- a user base that will migrate away when a competing product adds that one feature you didn't think was necessary.


Following are my talking points from the actual event.  They aren't organized all that well and don't form any cohesive point, but I thought I'd put them out there anyway.

Technology Trends

  • Mobility (PDA/Cell/PMP convergence)
  • Services (SaaS, SOA, Web Services)
  • Abstraction/Cloud (Rich Internet Apps, data conversion services, online storage)
  • Semantics (data lists, metadata, microformats)
  • Composition (workflow, DIY, end-user consumption/mashups)
  • User interaction (tagging, wiki, ReddIt/Digg, reviews, sharing, localization, personalization)
  • Pervasive connectivity (broadband, WiFi/WiMax, Cell)

Employment Trends

  • Think composition and extensibility
  • Lower-level, functional blocks
  • Encapsulation more important than ever -- Think modular!
  • Not just coding but design/architecture, reuse/linking -- make a platform, not an application
  • Use framework features -- don't build from scratch
  • Interoperability at every step
  • Open standards
  • Look beyond the requirements to the future
  • Not "what are they asking for?" but "what do they need?"

posted @ Thursday, March 13, 2008 1:25 PM

       Print
Comments have been closed on this topic.
«September»
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789