Key Software Development Trends

Key Software Development Trends

Rate This
  • Comments 55

More than ever before, today’s developers are open to considering and using multiple technologies to enable them to build solutions smoothly and deliver them to their customers quickly.  There are an increasing number of choices available for developers in terms of programming styles.  Our goal is to provide fantastic support for all programming styles within our tools to enable our customers to build great software.

Several trends are emerging within the area of software development.  Below are some of the most important trends I’ve been thinking about recently.  This list isn’t comprehensive of all software trends, but each one represents an area that Microsoft is currently or will be investing in to bring to our customers.

Cloud Computing

Cloud computing allows companies to leverage just the computing resources they need today, scale up to handle peak loads, and avoid the overhead of managing hardware.  Cloud computing levels the playing field for small companies to compete against large, established companies at a reasonable and predictable cost.  Windows Server, Windows Azure, SQL Azure, and services such as Windows Live, Office, and Xbox Live are now live in the cloud.   Microsoft has committed to bringing the best cloud computing platform and services to the Windows ecosystem.   The cloud is just one example of a virtualized computing platform, and the next generation of developer tools must enable developers to build software that deploys and performs well in cloud and other virtual environments. 

The Web as a Platform

The browser provides a rich runtime environment and friction-free access to applications.  Developers are increasingly choosing the web as their platform of choice for software and software development.    Increasingly, developers and designers are using tools that offer a rich development, debugging, and profiling experience designed for the web.  JavaScript libraries allow web developers to get more done with JavaScript than ever before while reaching a wide audience, and immersive internet applications, such as those written for Silverlight, allow developers to break free of the limitations of HTML and take advantage of a range of resources and features while guaranteeing compatibility across platforms.

Parallel Computing

Moore’s Law, the prediction that CPU performance would double every eighteen months, is now fulfilled by adding more processor cores rather than by increased performance of a single core, bringing the power of multi-core processing to low-end machines.  New trends in computing take advantage of inexpensive and widely-available desktop graphics processors for certain tasks.  At the high end of processing ability, supercomputing centers are leveraging clusters to perform complex computational tasks.  Today, a small handful of programmers have the skills to write code that performs well in multi-core and many-core environments.  In the future, parallel libraries, debugging, profiling, and diagnostic tools will enable more developers to take advantage of parallel computing resources.

Proliferation of Devices

With the increasing availability of inexpensive devices that connect to the internet, we all want to access and interact with our data in ways that are appropriate to our devices’ capabilities.  We expect to access our online identities and data easily and securely on all our devices.  Today, Microsoft provides access to users’ data via Windows Live and Xbox LIVE.  With the proliferation of devices has come a proliferation of user interface paradigms that enable natural and intuitive interaction with those devices.  As touch-based, speech-based, and camera-based solutions become available and cost-effective, Microsoft is evolving software to take advantage of these capabilities to build intuitive user interfaces.  Windows 7 provides great support for touch-enabled applications in the platform.  Silverlight and WPF have embraced camera-based interactions and multi-touch, as has MFC.  I expect user interface paradigms to continue to evolve and become more intuitive and powerful.

Agile Development Process

Agile development processes, including Scrum, test-driven development, and continuous integration are commonly used in the enterprise and smaller development shops, often in combination with other development practices. Within Microsoft, many teams have integrated elements of Agile development practices to their process.  Visual Studio 2010 opens the door for Agile methodologies, offering support for some Agile processes such as unit testing and iteration planning.  We will continue to support more Agile methodologies going forward as well.

Distributed Development

Distributed development enables team members to work closely despite geographic separation from each other, bringing together worldwide talent to seamlessly work toward a common project or goal.  The experience of a team working across time zones and borders should be as good as the experience for a single developer, but also includes supporting cloud-based development activities such as distributed code reviews, remote paired programming, developer/tester collaboration and resource sharing.  Great distributed team development tools will enable developers to build the next generation of software, leveraging the worldwide talent pool.

In Closing…

These trends don’t represent a complete list of influential factors for all areas, but are some of the areas we feel can move software development forward.  I welcome your perspective: which of these trends do you feel will be most important in the future?  Are there trends you think should be included in this list?  Leave a comment with your perspective.

Leave a Comment
  • Please add 6 and 2 and type the answer here:
  • Post
  • Here's another one: "there's an app for that". Or, in other words, applets on devices (though applets on Windows, tablets, netbooks, etc. are also nice).

    I don't see much reference to this in the trade press, but clearly people are throwing together LOTs of small applications that many people like. To some degree this will draw both users and developers from the maintstream apps.

    Maybe you could put this one in any of the trends you mention, but to me it seems significant enough to qualify in its own right. Maybe it's the uber-trend!

  • I don't think any trend in software is hotter right now than phone apps.  Yet you don't see 'phone' or 'mobile' mentioned above.  I think that is very telling.

    For the web, Microsoft has given us an outstanding, cutting edge platform in Silverlight. But for phones?  There's not an app for that.  And we need one.

    Write code in .Net, compile to droid phones?  Now that would be cool

  • @Ed: Not 'telling' of much. "The Goo" ..er.. "The Bing" says Silverlight and XNA are both going to be platforms for targeting the "Windows Phone 7 Series" phones. Of course, you won't hear that from MS until MIX'10.

  • Nice article.

  • Well, I don't think that mobile devices will be the "trend of decade", but cloud-computing will!

    Azure is a precursor of cloud-computing platforms (at that level), representing a great change of paradigms.

    I'll invest in that with no fear.

  • You forgot sandboxing of native apps !

    This will have a major impact.

  • Nice Article. Thanks a lot.

  • Good article. But what about games? Is there no more development? When we can finally play in Otherland (Tad Williams)?

  • I think micro trends within Visual Studio are far more interesting and valuable areas to concentrate on.

    T4 templates are a great example of this.  T4 usage has exploded, and it's now central to the extensibility of many features e.g. the Entity Framework.  This is an obvious trend, so it is quite disappointing that VS2010 doesn't have better T4 support e.g. built in syntax highlighting:

    https://connect.microsoft.com/VisualStudio/feedback/details/404748/text-template-files-tt-support-in-visual-studio-editor

    64-bit development is another strong trend.  Again it's pretty short sighted that VS2010 is now defaulting all solutions to 32-bit.  Plus 64-bit Edit and Continue support has failed to be addressed:

    https://connect.microsoft.com/VisualStudio/feedback/details/431200/edit-and-continue-is-not-allowed-when-debugging-a-64-bit-application

    https://connect.microsoft.com/VisualStudio/feedback/details/267609/64-bit-support

    Another trend I've noticed is that people are looking for stronger typing (not the other way round with dynamic!).  Code contracts are fantastic, yet it's a shame they're going to be limited to the most expensive editions of Visual Studio:

    https://connect.microsoft.com/VisualStudio/feedback/details/481327/make-data-contract-static-checking-available-in-professional-edition

    People are also looking for stronger typing and compile time checking when it comes to property name lookup.  Relying on strings that can break at compile time just doesn't cut it any more.  People are using tricks like lambda expressions to accomplish this, but it'd be nice if there was clean built in language support:

    https://connect.microsoft.com/VisualStudio/feedback/details/90707/add-nameof-operator-to-the-language

  • Thank you, Captain Obvious!

  • We are still waiting on IIS Live Smooth Streaming - Complete end to end solution. One of the things changing in the streaming industry is adoption of Expression Encoder 3, IIS and Silverlight. We wish that sooner there will be something better from Microsoft in this area.

    Thanks,

  • Great post danieldsmith.  I don't think edit-and-continue is important personally but the idea of a nameof() operator is brilliant.  I wonder what surprise implementation questions might make it less-obvious.

    Putting the data-contract stuff in Team system only is kind of funny / short-sided.  Forgot the good of the community, any developer with an eye towards open source development is going to avoid using code that requires a particular non-free compiler.

    (Unit tests > data contracts) anyhow.

  • Maybe more of a tenet, but where does power efficiency factor.  With the increasing proliferation of mobile devices (smart phones and laptops/netbooks), application developers need to acknowledge their role in both 'not doing stupid things' that suck batteries dry by undermining the inherent power management capabilities of the platform, but also to start measuring power use and trading off performance/fidelity/features where appropriate.  How many PC apps know if they are running on AC or DC and behave accordingly?

    This is also very important in the data center given a world of constrained and increasingly expensive power.

  • Your Moore's Law statement is incorrect. The 'law' postulates that chip transistor count approximately doubles every two years. It is not related to the speed or efficiency of the silicon. It's amazing that so many people still get this simple thing wrong:

    http://en.wikipedia.org/wiki/Moore%27s_law

    I certainly don't see Cloud Computing and Parallel Computing gaining any traction in the short term. They're still far too complex for the majority of projects and only very recently are more friendly programming constructs being presented to ease development.

    I'd agree with the move to the web as a platform, but this is just an obvious observation rather than a prediction of the future.

    A disappointing post.

  • Very nice information! I do believed that quality service is the most important thing that we need to focus on regardless of the upgraded system that a software development outsourcing company has. :)

Page 1 of 4 (55 items) 1234