Guest Opinion

The Human Factor Always Wins Out

Welcome our new guest opinion columnist, Daniel Appleman.

You better believe there will be times in your life When you'll be feeling like a stumbling fool So take it from me you'll learn more from your accidents Than anything that you could ever learn at school
-- "You're Only Human (Second Wind)" by Billy Joel

When software developers discuss software development, we spend most of our time talking about technology. We study our tools and compare their features and evaluate tradeoffs between competing technologies. We crave new features because we hope that they'll make our life just a bit easier. But such features often prove disappointing, whether because they don't deliver quite what we wanted or because they scramble our system so thoroughly that it takes us days to restore it and get back to work. We post our frustrations on blogs and forums, but always come back for more, addicts who need just one more tool to achieve happiness.

Only occasionally do we bring up other issues. We might discuss money as that rather annoying necessity that never exists in sufficient quantity. The people we talk about might be our annoying management, or those annoying programmers we manage, or that idiot client or vendor. But it's the human factor -- who we are and how we relate to technology -- that has the greatest influence over our work and our chances of success.

We all know that many software projects fail. Most studies show that more than 50 percent of all software projects are at least partial failures. Those same studies indicate that the reasons for the failures almost never relate to the technology or technological choices. The failures invariably have to do with "people" issues -- communications, politics, architecture, management, and design. If these are so critical, why do we spend so much time focusing on technology issues? The fact that there's never enough time to keep up with rapidly changing technology doesn't excuse us from taking the time to address these issues. If anything, the pace of change makes it even more important to think about how we spend our time and to make sure that we learn how to deal with the human factor.

"Officially," developers are driven by a love of technology and a passion for excellence. But scratch the surface, and you'll find more than a little bit of anxiety: Will I get that raise? Will my company make it through today's economy? Can my job be done more effectively and cheaply in another country? And how will I ever keep up with the flood of technological changes?

Scratching the surface is what I propose to do in this new, bi-monthly column. Whether I'm assessing a technology or an industry trend, or just figuring out what it means to be a software developer today, in this column technology will always come in second.

Here's an example: There's been a ton of discussion about the relative merits of Visual Basic .NET and C#. And both languages will have their place going forward. But C# will always be perceived as better. Why? Because no matter how good VB.NET gets, C# programmers will never want to use it because it makes them feel less professional. At the same time, some former VB6 developers will choose C# over VB.NET simply because it makes them feel better about themselves -- more professional, even if it isn't objectively their best technological or financial choice. Regardless of the technological issues, the human factor always wins out.

Real programmers use "C-like" languages. Unless and until the culture changes, that's the way it will be. Unless and until the culture changes … But given enough time, the culture does change, and it changes in ways unplanned and unanticipated. The next generation of developers might find our debates about VB.NET versus C# quaint and amusing.

The human factor always wins out.

comments powered by Disqus

Featured

  • AI for GitHub Collaboration? Maybe Not So Much

    No doubt GitHub Copilot has been a boon for developers, but AI might not be the best tool for collaboration, according to developers weighing in on a recent social media post from the GitHub team.

  • Visual Studio 2022 Getting VS Code 'Command Palette' Equivalent

    As any Visual Studio Code user knows, the editor's command palette is a powerful tool for getting things done quickly, without having to navigate through menus and dialogs. Now, we learn how an equivalent is coming for Microsoft's flagship Visual Studio IDE, invoked by the same familiar Ctrl+Shift+P keyboard shortcut.

  • .NET 9 Preview 3: 'I've Been Waiting 9 Years for This API!'

    Microsoft's third preview of .NET 9 sees a lot of minor tweaks and fixes with no earth-shaking new functionality, but little things can be important to individual developers.

  • Data Anomaly Detection Using a Neural Autoencoder with C#

    Dr. James McCaffrey of Microsoft Research tackles the process of examining a set of source data to find data items that are different in some way from the majority of the source items.

  • What's New for Python, Java in Visual Studio Code

    Microsoft announced March 2024 updates to its Python and Java extensions for Visual Studio Code, the open source-based, cross-platform code editor that has repeatedly been named the No. 1 tool in major development surveys.

Subscribe on YouTube