For your enjoyment and enlightenment, I present 4 articles featuring lists…

Soma’s Key Software Development Trends

S. Somasegar

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

1960s computer programmers

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.

In his blog, Lessons of Failure, Dave Rodenbaugh debunks five myths about “older” software developers:

  • 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

Matt Hidinger 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.
  • 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.”

Microsoft "Ship-It" award for Sriram Krishnan, who shipped Visual Studio 2005 and .NET 2.0

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 Global Nerdy.]