Professional Development

by Jacob 14. January 2009 15:22

Baby Developer Many of the interesting .Net bloggers are part of the Alt.Net crowd; evangelizing Dependency Injection, Design for Testability, Test Driven Development, SOLID design and other development practices that they find useful in their work. It doesn't take long reading these blogs to pick up on what looks like an unforgiving attitude towards those who don't use the latest acronyms in their software development.

This acrimony is unfortunate because most often what is at the heart of those who question the standard Alt.Net toolset isn't so much principle as it is context.

A Fundamental Assumption

Unfortunately, discussing software development at all imposes an initial assumption that too often goes unexamined—the assumption that the software development you are doing is substantially similar. I'm afraid that this assumption is violated more often than we realize.

Most prominent development bloggers are consultants, conference speakers, tool vendors, or framework providers of one sort or another. As such, they are used to considering the problems of very large applications with many cross-cutting concerns. Is it any wonder, then, that they are strident about the importance of segregation and testing? For the majority of their hands-on development, everything that increases separation and independence is a benefit because isolating fail points and mitigating the cost of touching individual elements carries a heavy multiplying effect on overall complexity. No wonder they want to use a DI framework on every project and insist that other developers practice TDD. It's all up-side in such projects because the costs disappear in the noise and the benefits stand out.

Not all of us work in those kinds of environments and/or applications, however. Many of us work on projects that are wildly dissimilar. Our applications are narrowly focused, single use, and with limited distribution. For us, implementing solution-wide DI eats up half the project configuration overhead and delivers functionally zero chance of eventual benefit.

I'm unsure how many find themselves in similar (smaller) development shops. I suspect quite a few. We might even be a majority of actual, working developers. We're pretty much absent from the development blogger population, however.

A Problem

What that means for us small-shop developers is that we end up having to do a lot of on-the-fly translation. Up-scale bloggers have shown themselves averse to “thinking down” so we end up having to analyze the methods and techniques they discuss to see where the fail points are for our projects. If your QA team is the folks in the warehouse and your architecture a straight-on table insert, is TDD really going to pay off? What about bug tracking? Or continuous integration?

These translations are interesting and part of why I like smaller development. Our problem space is largely undiscovered country. We can't really trust anything labeled “best practice” and we have to do our own experiments to find what works and what doesn't and at what point it starts to make sense to engage different methodologies.

It'd be nice, though, if some of the gee-whiz bloggers would discuss the fail points of their methods and tools. Or point out the trade offs that various techniques are likely to entail. No technique or method is so useful that it is universally applicable, so where are the borders?

Worse, though, are those who actively stifle discussion of such fail points. Mention that you'd rather not use Dependency Injection, for example, and you can find your professionalism and/or intelligence questioned. Indeed, for many the very fact that you don't <insert favorite practice here> indicates that you must never have tried it. Or if you have you must have been doing it wrong.

This friction fosters resentment and shuts down discussion. Perhaps one reason we don't see more developers willing to discuss alternatives to the popular band wagons of today is a reluctance to enter what amounts to a hostile arena. As the troubles on Wall Street filter down to Main Street (where us small-shop developers live) the last thing we need is other developers calling us unprofessional in public. Particularly when those other developers are well-known and respected in their community.

I know this from personal experience. I'm pretty secure in my current position. My company is healthy and has a marked competitive advantage that I am key to delivering. My boss respects me as do the owners of the company. Even so, my gut clenched tight and my heart sank to my knees when I came across a twitter message from a luminary in our field (someone any informed .Net developer would recognize) dismissing me as unprofessional and my points as unworthy of consideration.

Seeing something like that will make you wonder if expressing your doubts is worth the risk, even when it isn't directed at you.

Tags: , , , ,

Programming

Comments


 Eam 
January 15. 2009 14:23
Eam
What did you expect when you challenged the bloggers' religious beliefs?

At risk of sounding unprofessional, I'd like to say that they're all a pack of rascally goofballs. If they're not engaging in rabid evangelism of DI and TDD, they're writing rambling pieces full of errors on topics they have no real understanding of (encryption, in particular, comes up a lot).

Now that the Bileblog isn't updating anymore, this blog is pretty much the only voice of reason left on the internet.


 Martin 
February 10. 2009 11:49
Martin
Thanks for a very good article. I agree to not jumping on to every new buzzword that is shouted out by the evangelists. You have to carefully choose every technique in the context of the application you are writing

I too work in a in-house development environment and things are a lot different here than in the bigger consultant projects, and it is so good to have this blog that speaks our language.

Keep blogging!


Spain Moises 
May 19. 2009 07:57
Moises
Very good comment.
I'm working in the java world (from 8 years now) and I see only non-sense in development.
How people can now need weeks and weeks for taking some data from a database and manipulating it? That was a problem resolved, but now our over-engineered world have take it and made it a big problem.


January 28. 2010 15:26
Joe
Excellent points and I totally concur. I find that a lot of those frameworks seem to assume you are working on a huge 3-tier web app, with all the trimmings. In reality, many of us small-shop developers are still implementing small client-server rich client apps, where many of the tools in those frameworks are over-kill or need tweaking to work in such an environment. Of course, when you question the frameworks, the developers of the frameworks say things like "Everyone is doing 3-tier web apps these days. Client-server rich client apps are so stone-age!"

What they fail to realize is there are many compelling situations where client-server and rich-client are relevant. And sometimes, the decision to use client-server and rich-client is a political one that is out of your control.

I say "Use the right tool for the job". If you have a complex problem and a heavy framework will simplify the problem, then use the heavy framework. But if you have a simple problem, use a simple solution. Too the adamant defenders of those frameworks too often it's a case of "when you have a hammer, everything looks like a nail"; they feel compelled to solve every problem with their framework.

Comments are closed

Information

    Recent Posts

    Calendar

    <<  September 2010  >>
    MoTuWeThFrSaSu
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    View posts in large calendar
    Disclaimer
    The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

    © Copyright 2010 Scruffy-looking Cat Herder