A Rant on Professionalism

This is a rant. I’m stating it up front. You have been warned :)  Leave a comment if you disagree, but if it’s more than a paragraph or two, please post your response on your own blog and let us know in a comment.

Currently, on the ALT.NET mailing list, there is a still-active thread about Lean Manufacturing concepts applied in software (collectively known as ‘lean software’ or ‘lean software development’).  Many of the posters are making half-joking remarks, some are serious. I can’t help but get the feeling, though, that many think that Lean software is yet another soon-to-be-failed attempt at the unattainable unified theory of software development processes.  Perhaps it is, but that’s not the point.  The point is that Agile started us on a path to break out of the classic, failed approaches to software development. It helped us realize that there might be a better way and that we have to go find it.

Whether Agile or Lean ultimately fail to become the One, True, and Holy Software Development Process or not is irrelevant. What really matters is that people are trying to find a path to a process that is uniquely fit for software development – as opposed to just using poor analogies in other areas and awkwardly adapting them to software development.  Of course Lean is used for manufacturing and is one of those analogies, so it predictably doesn’t fit with software directly. It is, perhaps, the closest fit we’ve yet seen and so, I hope, produce major strides in the advancement of software development process engineering.  Each iteration of these advancements brings us closer to understanding the nature and complexity of the software development process problem and will eventually lead us to practices and processes which are uniquely tailored and designed for software development and which will produce much greater chances of success on projects.

Unfortunately, cynicism has leaked in due to so many failures from the start and professionals seem to be less and less willing to even consider new ideas because they’ve been so burned by them in the past. I believe a large part of our problems are due to this cynicism. We don’t accept new ideas because, for so long, almost every new idea was crap and would hose us in the end on our projects.  Managers and stakeholders no longer trust us because we don’t seem to understand or appreciate their concerns and seem to only be concerned with technological problems and the latest-greatest tool from [some vendor, doesn’t matter].

It’s easy to point the finger at Microsoft and blame them, since many of the tools and the heartache was caused by them, but they were no further along than anyone else. At any rate, we shouldn’t expect a particular vendor, especially a tooling vendor, to champion the cause of professionalism in our line of work. Microsoft will do what Microsoft does and if we demand something from them, they will respond in kind. The real problem is we’re not demanding these things from them (or at least, we haven’t until just recently).  To be clear:

We must take responsibility for improving the state of affairs in our profession and stop expecting Microsoft to do it for us.

And, if you look, ALT.NET has somewhat been demanding higher levels of professionalism and engineering from Microsoft and they have responded. They haven’t radically transformed, nor will they for quite some time because a.) we are in the minority and still a very tiny voice and b.) it’s a large organization and it will take time to turn the giant ship around.  In the end, though, so what?  Software development happened before Microsoft, and it will happen after Microsoft is gone.  What then?  It’s very comfortable to point to the big guy and expect him to solve all your problems, while we continue creating them.

In conclusion, I believe that the state of professionalism in our trade is sorely lacking. It’s not because there aren’t good people, it’s because we essentially don’t have a Scientific Method by which to gauge our success. It’s still so much magic and hocus-pocus.  Consequently, we are generally seen as charlatans and tricksters.  We have very little credibility because of this. To earn trust, we must be trustworthy.  How are we to be trustworthy? What steps must we take as a profession to establish our trust and by what means will we ensure that future generations of our profession adhere to the same level of dedication and professionalism?

Auto-mapping with Fluent NHibernate