For your enjoyment and enlightenment, I present 4 articles featuring lists…
Soma’s Key Software Development Trends
S. “Soma” Somasegar, Senior Vice President of Microsoft’s Developer Division, writes about what he sees as emerging trends in the world of software development. He says it’s not a comprehensive list of all trends in the world of building software, but trends where Microsoft is doing some serious investing of time, energy and Dark-Side-of-the-Force midichlorians. You’ll have to read the article for a more fully fleshed-out explanation of each trend, which I’ve listed below:
- Cloud Computing: Or as I like to call it, “Servers as a Service”.
- The Web as a Platform: Contrary to what you might have heard, The Empire’s pretty big on the web, on both the server side (from Azure to IIS to SharePoint to ASP.NET/ASP.NET MVC) to the client side (HTML, JavaScript/jQuery and Silverlight).
- Parallel Computing: I can’t tell you the number of things I’ve ruined with threads. I eventually get them right, but wow, can they be a lot of work. .NET 4.0 introduces a number of parallel programming features that make taking advantage of the multicore power in even the cheapest of today’s machines much easier.
- Proliferation of Devices: “Computer” no longer refers to just the machine on your desktop or in your lap and “user interface” is no longer limited to just “keyboard, mouse and monitor”.
- Agile Development Process: The upcoming Visual Studio 2010 provides lots of support for agile processes. Hopefully, we’ll see third parties write plug-ins to support even more!
- Distributed Development: I don’t just talk about geographically-spread work, I live it! I telecommute from the home office, HacklabTO or cafes, and my co-workers in Microsoft Canada’s Technical Evangelism Team pipe in from Mississauga, Ottawa and Calgary.
My first response to the list was “Hey, Soma, where’s mobile?”, but I choose to group it in with “Proliferation of Devices”.
Five Pervasive Myths About Older Software Developers

I’m 42 years old. In most white-collar work, I would be seen as “entering my prime”. In the software world, many employers would advise me to “stop buying green bananas” (think about it for a moment if you don’t get the joke). Age discrimination is an unfortunate fact of life in our industry, which prizes youth and particularly its willingness to work long hours for little pay.
- Myth: Older software developers are more expensive than younger ones, making younger developers more desirable.
- Reality: Younger means cheaper, but a team of nothing but young’uns without much experience will cost you in the long run. Hiring experienced people is like getting insurance against some of the classic mistakes in project management and software development that you only truly learn in the School of Hard Knocks.
- Myth: Older software developers are less flexible and less capable of learning new technologies because of their legacy knowledge.
- Reality: It’s experience that makes software developers more capable of migrating to new technologies, frameworks and systems more quickly and in greater depth.
- Myth: Older software developers are less able to perform the arduous tasks of software development (read: work long, painful hours) because of family commitments and other attachments that younger workers don’t have.
- Reality: They’ve learned the hard way that there’s a point of diminishing returns with long hours. I know I did.
- Myth: Older software developers are less mentally agile than younger ones.
- Reality: Yes, aging slows down the brain a little, but thinking faster isn’t always better. There’s also thinking wisely and using good judgment. To quote the old adage: “Good judgment comes from experience, experience from bad judgment.”
- Myth: Older software developers are more jaded and cynical and therefore, less desirable in the workplace than younger ones. Younger developers are more enthusiastic than older ones.
- Reality: Passion is passion. If you have it for your job at 40, you probably really love that field. I know I do. [Joey’s note: Besides, have you met members of Generation Y? For a crowd so young, they’re an incredibly cynical and jaded bunch. I blame Gossip Girl.]
Why Matt Hidinger Loves ASP.NET MVC
I’m going to express a personal preference: I’d much rather build web apps with ASP.NET MVC than with Web forms. That’s the PHP-and-Smarty/Ruby on Rails developer in me talking. Matt Hidinger documents a “Web Forms vs. ASP.NET MVC” debate he had on IRC and lists these major points:
- Fallacy: Web forms does everything I need it to.
- Matt’s response: “getting something done, and getting something done in a testable, maintainable, long-term way, are entirely different”
- Fallacy: MVC is just a bunch of
<%= HtmlHelpers %>.- Matt’s response: “HtmlHelpers are 4% of the ASP.NET MVC platform. That’s like saying
<asp:Textbox>is all of asp.net web forms” – he also points to an article titled Controls Do Not Make You More Productive.
- Matt’s response: “HtmlHelpers are 4% of the ASP.NET MVC platform. That’s like saying
- Fallacy: Web forms is easier.
- Matt’s response: “developers every day struggle with dynamic controls and databinding in even slightly-complex real-world scenarios. Mindlessly tweaking code and refreshing the page to see what ASP.NET will render.”
Matt also lists a series of facts, which I agree with:
- Web forms is black magic
- MVC enables robust Ajax support
- MVC is closer to the metal
- Data binding is confusing, full of indirection and runtime logic
- MVC lends itself to good design
- Web forms is miserable without JavaScript
- MVC is testable
- MVC allows multiple
<form>tags
“I like coding. I hate shipping software.”

Trey Stout says that shipping has all the worst elements of development, namely:
- translating
- documenting
- testing
- DLL hell
- install scripts
- customers
- marketing
Ah, DLL hell, I remember you well. Once, a major customer’s office lost all reporting functionality from software I developed because they got a new printer, whose “install me first” CD added some DLLs which clobbered the ones from my app’s installation.
Trey also says that coding has all the best elements of development:
- Talking with other developers
- white boards
- new tech
- compilers
- crazy features
- jokes in comments
- feelings of accomplishment.
- satisfying diff emails
What’s the solution? In my case, it’s to go into developer evangelism. You get to code, and you don’t have to ship (don’t get me wrong – shipping has many rewards). Of course, if you want my job, you will have to pry it from my cold, dead fingers.
This article also appears in Canadian Developer Connection.
{ 2 comments }

Platform wars are like monkey knife fights: amusing at first, but regrettable and messy in the end.
If you’d like to learn more about ASP.NET MVC programming, the best place to get started is chapter one of the “Gang of Foreheads” book, a.k.a. 
Rich internet applications just got richer! Silverlight 3 is packed with new features and improvements that your users will notice, from pixel shaders to perspective 3D to animation enhancements to bitmap APIs to HD video. We think you’ll also be impressed by the features for developers, such as the updated style model, data binding improvements, better resource handling, and a tuned-up Web services stack. In this session, we’ll explore new features of Silverlight 3 as we build a Silverlight-based application using Expression Blend 3 and Visual Studio.
Not a designer? Overwhelmed by Expression Blend? Not a problem! We’ll show you how to use Expression Blend to create advanced and polished user interfaces for business applications, consumer applications, multimedia projects, games or anything in between. We’ll cover features of Expression Blend from a developer’s perspective and show how it works in tandem with Visual Studio throughout the development process. You’ll learn how to create professional-looking user interfaces and visual elements – even if you don’t think of yourself as an interface designer.
How do you build extensible and maintainable line-of-business applications in Silverlight and Windows Presentation Foundation (WPF)? How do you design and code to handle real-world complexity? Composite Application Guidance (a.k.a. "PRISM") offers guidance, libraries and examples – in small, free-standing, digestible chunks – that you can use to build applications with rich user interfaces that are also easier to maintain and extend. You’ll learn how to compose complex UIs from simpler views, integrate loosely coupled components with "EventAggregator" and "Commands", develop independent modules that can be loaded dynamically, and share code between Silverlight and WPF clients.
This session will show you the Windows 7 APIs that will let your applications – and your users – get the full Windows 7 experience. Learn about new extensibility methods to surface your application’s key tasks. Discover how enhancements to the taskbar, Start Menu, thumbnails, desktop elements, the Scenic Ribbon, Federated Search and Internet Explorer 8 provide new ways for you to delight your users and help make them more productive. If you want to give your users the best Windows 7 experience, this session is for you!
As a developer of .NET-based applications, you can extend your desktop software to the Windows Mobile-based platform using the tools available within Visual Studio®, the Windows Mobile SDK and the .NET Compact Framework. This session will give you an overview of how Windows Mobile lets you use your existing infrastructure, business logic, and desktop code on a mobile device to innovate and help solve business problems. We’ll show you how to use the familiar Microsoft .NET Framework and .NET-based programming languages like Visual C#® development tool. You will also learn about new features in Windows Mobile 6.5 such as the Gesture APIs and the Widget Framework and how to use them appropriately. With the launch of Windows Marketplace for Mobile upon us, this session will help you take the next step for application testing and submission.
You’ve probably heard the buzz about Model-View-Controller (MVC) web frameworks. They’re all the rage because they combine speed, simplicity, control…and fun. ASP.NET MVC is Microsoft’s MVC web framework, and in this session, we’ll talk about the MVC pattern, explain the ideas behind ASP.NET MVC and walk through the process of building an application using this new web framework. We’ll also cover several techniques to get the most out of ASP.NET MVC and deliver web applications quickly and with style.
Object-oriented programming makes it easier to manage complexity, but only if you do it right. The five SOLID principles of class design (one for each letter) help ensure that you’re writing applications that are flexible, comprehensible and maintainable, and we’ll explain and explore them in this session. We’ll start with a brittle ASP.NET MVC application that’s badly in need of refactoring and fix it by applying the SOLID principles. This session is a good follow-up for Introducing ASP.NET MVC, but it’s also good for developers of ASP.NET MVC looking to improve their code – or even if you’re not planning to use ASP.NET MVC. The SOLID principles apply to programming in any object-oriented language or framework.
The world gets more service-oriented every day, and with that comes the demand to integrate all kinds of services, including those from SharePoint. This session introduces SharePoint as a developer platform and provides an overview of how you can build and deploy custom services with it. The focus will be on developing ASP.NET and Windows Communication Foundation services for SharePoint as well as building a Silverlight client to consume them.
