When is Helping, Hurting? Or, Another Example of Why Handoffs Should Not Be Documents

Posted July 4, 2009 by Jon
Categories: Readings and Thoughts, Software Development, Surviving Corporate America

Sometimes, when you try to help, the outcome is less than desirable.

It’s like helping your kids with their homework.  Helping is one thing; doing it for them is something else entirely.  Sure, their grades are maintained, but at what cost?

The other day, I was working through a negotiation to get a non-standard package approved for use.  The problem was that the negotiation I was doing needs to be done by someone else in the group so that when I leave the group they will have a sense of how to get what they need.

I discussed this briefly with one of my co-workers and agreed to put together a kind of brain-dump email about how to go about the negotiation with some contacts, some suggested points, and some background so that he could do the official negotiation.  I’d already started the back-channel process by letting folks know that something would be coming through and laying an unofficial case.

I should say that I was on a floating holiday yesterday (Independence Day’s on Saturday) so the fact that I was checking my mail was purely by chance, but I received the official notice of the exception application for the non-standard package. 

What!?

My email had specifically said, “Talk to this guy first.” and “Send the license to this guy before you submit.”, etc.

Then I noticed an email to the first guy – after the application was filed – and I thought, “I said, TALK to him.”  I’m sure the license for the other fellow is in the mail too.

The whole point was to talk to the people in my email, get a sense of whether there were objections, and answer those concerns in the application.

Instead, my co-worker simply cut and pasted chunks of my email directly into the application – including some of the discussion points I’d included to help him with the VERBAL negotiations..

This bothers me on at least two levels. 

One is about the state of the organization and management maturity.

My co-worker is a guy further up the food chain from me.  What does that say about the organization’s ability to get what it needs in a larger whole?

I’m afraid that because of the lack of understanding and finesse exhibited by my co-worker, the application will have a tougher time than was necessary.

The other, is that I’m reading a book about reducing waste in processes, and I should know better: Documents as handoffs are a big generator of waste.

Handoffs should be higher bandwidth communication than a simple chat and an email.  So by sending the email, I was delivering a document with lots of content, but very little of the tacit knowledge that I have about the process – who to talk to, and how to talk to them.

What I should have done is say, “Tell you what; when I get back from my trip we’ll sit down in your office and go through the process.  That way, you’ll get to see how these things progress from back-channel discussions, to managing concerns, to the official application.”

Back to my first concern, I’m pretty sure he would’ve insisted he didn’t have time for pairing on a negotiation like that, and to send him an email explaining everything.

It seems like I fumbled the hand-off.  Or maybe I’m a control freak, and everything will be fine.

I guess we’ll see.

Latest on the Reading List

Posted June 16, 2009 by Jon
Categories: Readings and Thoughts, Software Development

It’s been a while since I posted about what I was reading; mostly because I was reading current events instead of books. 

But anyway, as usual for me, I have two books going at once.  Both are tech books: Implementing Lean Software Development: from Concept to Cash, by Mary & Tom Poppendieck, and The Productive Programmer, by my buddy Neal Ford.

To early to get into details, but I like Neal’s folksy style.  I also liked Lean Software Development: An Agile Toolkit, the first book I read by the Poppendiecks.

I’ll give a full accounting in a couple of weeks.  Hang in there..

I Did Okay

Posted June 5, 2009 by Jon
Categories: Fun

The photo was actually taken by my wife, as I was enjoying my new title..  Out loud.

NerdTests.com says I'm an Uber Cool Nerd God.  Click to take the Nerd Test, get geeky images and jokes, and talk to other nerds on the nerd forum!

And further.. You can’t do Code Metrics in Visual Studio Team System Database Edition. Ridiculous!

Posted April 1, 2009 by Jon
Categories: Uncategorized

So, I received some encouraging words from Mark Groves, the Program Manager for VSTS saying that UML is back in VSTS 2010.  See the comments on my previous post.  Thanks Mark.

That’s good.  A little late for me, but better than the alternative.

My latest frustration (Sorry Mark) is that there is an arbitrary limitation in VSTS Database Edition, namely that I can’t run Code Metrics on the code I can write in the tool. 

Ridiculous.

Apparently, to do that, I’d have to have VSTS Developer Edition installed – which I did, but installed the DB Edition for the database schema management functionality.

Annoying.

I know what the answer is though.  Get the VSTS Team Suite which has everything.

This is a poor answer because of the cost involved.  We have a team where we are trying to instill agile techniques and engineering practices.  That means everyone on the team does a little bit of everything, and common code ownership is what we’re after along with test driven development, et al.  Code includes database schemata too, by-the-way.

It doesn’t work well if the team has to be compartmentalized into a few Database Edition users, a few Development Edition users, and a few Architecture Edition users.  Maybe if there was a rotating license concept so that today, I’m working on Database issues but tomorrow I’m writing code like a fiend in the Development Edition; and the following day we’re collaboratively working on Modeling across the team.

Expecting development teams to absorb the cost of VSTS Team Suite in this economy is unrealistic and it’s driving us to look for alternatives.

I’m working up a list of .NET open source tools for the Bank in my capacity as a .NET Center of Excellence leadership team member.  This is a result of my cross-pollinating with the Application Lifecycle Management Center of Excellence, the Free and Open Source Software Center of Excellence and the Agile Users Forum.

Yeah, I’m busy.

So, if you have suggestions for Windows-based open source or inexpensive commercial best-of-breed solutions for .NET development by all means, let me know.  By-the-way, most of the tools have to be command line accessible to support Continuous Integration.  We are using JetBrains’ TeamCity in a pilot/proof-of-concept and it’s great.

Here’s a list of the tools I think I need.  Suggest others if you know of them:

  • Build Scripting: Currently using NAnt, but being encouraged to use MSBuild (which itself sucks, imho.  A poor man’s NAnt – probably not enough exposure)
  • Unit Testing Framework: Currently using xUnit.net
  • Code Coverage: Currently using the last open source version of NCover.
  • Cyclomatic Complexity: Open
  • Refactoring IDE Support: Currently using JetBrains ReSharper

I’m starting to consider looking at SharpDevelop as an IDE, but I’d lose ReSharper.  That’s a tough one.  Another possibility is Eclipse if someone could create decent C# support.

I love the .NET framework, and generally I’m a fan of Microsoft products.  Hell, I’m using Live Writer to write this post.

But I’m getting tired of the splintering of products in order to pry an extra couple thousand dollars out of us.  In our case, that’s a per developer cost.  

That’s a lot of dough.

It’s no secret that we’re being asked to look for ways to be more efficient and lower costs.  Open Source is getting a close look at the highest levels.

Can you say Mono?

No UML in Visual Studio 2008? It’s true.. and stupid..

Posted March 30, 2009 by Jon
Categories: Uncategorized

There I was this afternoon, backfilling a waterfall requirement to produce a low-level design of a feature that is on it’s way to production, when I thought, “You know, it would be really handy to fire up Visio and get a first cut of a class diagram for this.”

It’s been a while, so I fired up Visio 2007 and stated scanning the menu options, looking for ‘Reverse Engineer’.  “It’s gotta be here somewhere.”, I think as I plow through the options.

No joy.

Now it’s time for the help system.  It says, “Open the project in Visual Studio then use the Visio UML option from the Project menu.”

I opened Visual Studio Team System 2008, and started looking.

Nope.  Not in the Project menu.  I looked some more.  It’s not there.

Then, out of the fog that is my memory some days, came a remembrance of a conversation I had with a Microsoft Product Manager some time ago in Redmond.

(Paraphrasing) “The Class Diagram tool let’s us add whatever we want to the palette.  If we had to go through the UML standards body we couldn’t make the progress we want to make.”

Oh yeah… No embrace and extend this time.

More like, disconnect and ignore.

Microsoft has decided that Class Diagram is all we need.  No more Visio Add-in.  No more UML in VSTS.

It’s arrogant in the extreme for Microsoft to simply assert that the Class Diagram tool in Visual Studio is sufficient for developers’ modeling needs.  UML is the standard, and Class Diagram is not UML. 

The other rub for me is that it requires the Architecture edition.  What about all the developers in my group?  I guess they all need the Architecture edition — which doesn’t include the Database Edition functions?

By-the-way, Visio has always been a poor choice for UML in my opinion.  Unless something significant has changed (my prior experience was so bad, I haven’t bothered to look since), the better choice has been Sparx Systems’ Enterprise Architect product.  It’s not an add-on like UML is to Visio; it’s purpose built and priced competitively.

No I don’t work for Sparx.

Removing integration with UML tools, even a poor tool like Visio, is a bone-headed move.

It’s not news that they decided this.  I knew about this a while ago; like two or three years, and I’m sure others remember too. 

It just bit me today for the first time because it’s the first time in five years that I have had to do low-level design diagrams after the fact to allow the checking of a box somewhere.  No one will ever look at these diagrams again, once they are perused to make sure they exist – not for understanding mind you.

And, no it’s not really news that Microsoft has done something like this again.

Unfortunately..

Close.. So Close. And yet..

Posted March 3, 2009 by Jon
Categories: Uncategorized

I was working on figuring out the latest Visual Studio Database Edition GDR when I came across this Microsoft definition of Agile Methods:

A family of processes that application developers use to minimize risk by developing applications in a series of short iterations that last one to four weeks. In this paradigm, the primary measure of progress is working software, instead of hours spent or tasks completed. Agile Methods emphasizes real-time communication, such as face-to-face meetings, telephone calls, and instant messaging, over written documents.

The documentation asked for Feedback.  Who am I to shrink from that?

Here is an except of the Wikipedia entry for Agile Software Development that is closer to the real meaning:

Agile methodologies generally promote a project management process that encourages frequent inspection and adaptation, a leadership philosophy that encourages teamwork, self-organization and accountability, a set of engineering best practices that allow for rapid delivery of high-quality software, and a business approach that aligns development with customer needs and company goals.

Notice that there is a reference to a "set of engineering best practices" (one of which — developer-level unit testing — is supported directly by the Database Edition, yet no mention). 

Notice also that there is no mention of a dearth of documentation. Documentation is a requirement to be prioritized along with the working software aspect.  But I digress.

My primary concern is that it be clear that Agile Methods stress a disciplined approach to creating high-quality software through engineering best practices.  It is not chaos with no documentation as generally assumed by those who don’t know any better.

And I’ll keep pointing that out whenever it’s necessary…

New Laptop.. Woohoo!!

Posted February 13, 2009 by Jon
Categories: Uncategorized

I just picked up my new laptop at BestBuy.  Its an Asus X83Vm-X2, with a Core 2 Duo, 4GB, an NVidia 9600M GS with its own 1GB, 320GB HDD and Vista Home Premium 64..

Nice!

Now the fun part.  Moving off my trusty, heavy and VERY noisy Dell Inspiron 9100 and figuring out what won’t run natively on Vista 64.

Keyboard is a little different but I’ll get used to it.

Happy Valentine’s Day she says.. 

Yes!

No, YOU don’t get the point..

Posted February 5, 2009 by Jon
Categories: Software Development, Software Life

In this post, Stephan Schmidt says Martin Fowler misses the point because Scrum is not about engineering practices (see here).

Actually, Stephan, you missed Martin’s point.

Martin’s post says essentially, that Scrum is gaining a reputation as an agile process that doesn’t work.  That is happening because the people who are adopting Scrum as their process believe that the management processes provided are enough and/or they aren’t aware of the engineering practices that are required to support it.

Professional developers do get it. They get that they need the discipline of the engineering practices.  They need that discipline regardless of the process by-the-way.

Unfortunately, the IT world is full of developers who don’t get it.  And their managers know they need to do something to try and change things.  Scrum has a corporately acceptable brand because it sounds like fast waterfall.  And, by-the-way, it doesn’t specify any engineering practices to help support the process.

Martin doesn’t miss the point.  That’s exactly his point.

Yes I Can Get Some Support..

Posted February 5, 2009 by Jon
Categories: Software Development, Software Life

The day after my last blog post about the standards group’s seemingly knee-jerk reaction to our CI choice, the group collectively got together and decided that encouraging CI was more important than the tool being used.

They got it.  All I had to do was point it out, and after some thought, they agreed.

I feel better about this process..

Can I Get Some Support Here?

Posted February 2, 2009 by Jon
Categories: Software Development, Software Life

I’ve been chasing my development comrades around for a year or so, convincing them that test-driven development is a good thing.  That continuous integration is a great way to show what  a great job we’re doing by being transparent – posting our success and coverage numbers for everyone to see.

All the developers I can get to try it come back saying, “You know, I wouldn’t have caught this bug before it went to production without TDD.”

Score!  A convert!

We set up a CI server running JetBrains’ TeamCity.  Dead easy and it’s been working great.  We have about four development teams using CI this way now – we’re still working on the testing – and even the configuration management group likes what they’re seeing.

So what’s the problem?

Memo from the standards group.  “Uh, we don’t have TeamCity on our list.  Your choices are, CruiseControl, Rational Buildforge, or Team Foundation Team Build.”

My response was, “Okay, but we’re in the middle of a transition here.  Do you suppose we could just go ahead and change over later (once the habit is good and engrained)?”

Their answer?  “We’re not comfortable with that”

I am getting a lot of support from the local management, so hopefully things will brighten in the next day or so.

Next.. Can I get you guys to estimate in some TDD time?