Pace of Change Leaves No One Competent
by Kathleen Dollard
May 25, 2007
The point at which anyone on the planet is competent to write .NET applications passed sometime in the last year or so. No one is competent and that should scare the crap out of us. Recognizing this reality lets you adjust your application strategies. Failing to recognize it will leave you frustrated and feeling inadequate. Fortunately, the world is not coming to an end; there are both short term and long term strategies.
Historically, competence meant you knew enough about Microsoft technologies to pick the best ones for your applications. You knew core technologies well and used them effectively. You were familiar with the tools you used. Your code was fast, high quality, documented, and secure. You understood how to interact with data and other applications. Beyond coding, you had a proper development environment.
Today the standard for competence means staying on top of rapidly evolving languages, enormous libraries, diverse data stores, and complex toolsets. The security landscape is more dangerous. Quality code must be friendly to globalization and accessibility. A proper development environment includes source control, FxCop, testing, and deployment as well as tools for designing, profiling, requirements tracking, and defect management. Interacting with data means traditional servers, caching, XML, SQL Server Compact Edition, Analysis Server, and Reporting Services. Interacting with other applications might mean Web services, up to three different Office models, IIS, Exchange Server, and SharePoint Server. The introduction of WPF, WCF, WF, and Ajax pushes the technology stack beyond the point any programmer on the planet can be competent. And then there is Orcas…
Three years ago, I raised a storm with an editorial that described hobbyist programmers as canaries in a coal mine [Guest Opinion, "Save the Hobbyist Programmer," VSM April 2004]. The effort required to uptake new technology exceeded what hobbyists or domain programmers had available. The canary metaphor was that their demise was a warning for the rest of us. The air is still getting thinner. This year we'll lose the one-programmer shop and solo application development.
No one has time anymore to maintain competence in .NET development. Of course no one can be competent in everything. But today no one can be competent in writing thoroughly modern, high quality applications in any specific genre (such as Windows or the Web). The surface area of what you need to know is simply too large.
Short-term strategies are specialization and faking it. "Faking it" is a harsh phrase, but means you pick off only the most critical new technologies. You must be pragmatic rather than theoretical, and remain dependent on old technology.
You can pair faking it with a strategy of specialization within teams. Individuals can be competent in different technology niches. Success depends on finding and retaining a complementary core group, with turnover the greatest project risk. You augment your team with expert consultants offering short-term expertise and targeted training.
Specialization is out of reach for the one-programmer shop. Reliance on "faking it" means this shop can't uptake the breadth of new technologies. It's unlikely to write applications that meet evolving quality standards, including testing and FxCop. These shops are being marginalized and en route to extinction. This year's canary is the one-programmer shop.
When I wrote the canary editorial, I was throwing my hands up, despairing what would happen as canary after canary disappeared. Every attempt to simplify development increases the surface area of knowledge required for competence.
I am more optimistic today.
I am optimistic that these strategies can buy us time for the world of .NET development to revolutionize the world around us. Underlying recent releases from Microsoft is a new level of abstraction, expressed differently in WPF, WF, and LINQ. The shift behind XAML, DSLs in Workflow, and language extensibility is huge. The best of these abstraction strategies will eventually extend past core libraries into most business programming.
It's not going to be a single product like VB3 tackling the Windows API, and it's not going to happen overnight. It's going to be a tough road requiring patience, intelligence, and hard work. But .NET development will fundamentally transform over the next five years making it easier to focus on business problems beyond today's fog of technology.
The revolution has begun.
About the Author
Kathleen Dollard has been developing business applications for more than 20 years, programming in Visual Basic for ten years, and working with .NET since the early betas. As an independent consultant, she has worked in a variety of domains, including the finance and justice sectors. Contact her at firstname.lastname@example.org.
Back to top