Unintentional “lies” in the software development field?

Beware the Chicken-a-saurus!

Marketing folks have learned a few things from software developers.

It is funny to me that developers often speak of marketing professionals as if they mainly lie to people about what they want to hear (or as if that were a moral thing).

I say that because it sometimes happens in our industry as well… maybe more often than we want to admit.

80% complete

I remember when I was just getting started in software… senior developers would report their tasks being 80% done… and remaining 80% done for weeks afterwards.

On better projects, they would report 80% complete on their first status report, and then 85%, 90%, etc.

And some of them couldn’t tell me what the “method of successive approximations” was. Go figure.

“Ready to ship” in 3 months

Or how about another example – that the software will be ready to ship in “N” months? In a recent MarketingProfs short, “How to Sift Through Unintentional Lies”, it cautions marketers to brace themselves for “one lie after another”.

It is worth reading, not so much to raise your hackles, but to learn about the perception we create in customers in whom we want to build an assessment of value. Though the article speaks about other domains than software, here is a fragment related to us, from their perspective:

No development team wants to miss a deadline—but it will happen. “There’s one project I’ve been watching that has literally been three months away from shipping for 18 months now,” notes Anthony. You’ll get more reliable estimates if you eschew a single, long development cycle for rapid cycles that produce a “minimal viable product” for testing and further augmentation.

[Bold emphasis mine. Again, please read the article at the source reference I included in the preceding lines.]

So there you have it… marketers asking for agile delivery of value. That’s pretty cool and a good place for us to work together on rebuilding trust.

Notice the article is careful to say the development team is not being malicious or intentionally deceitful.

I cannot remember a case where we have been, either. Most developers I know love to write software. We love to create and we love to solve puzzles… but let me highlight a third example before we close for the day.

Trusting each other

Now, there are explicit promises and implicit promises. In fact, it is the implicit promises that can do the most damage. You can try to disavow them easily or you may not even realize others think you made them in the first place.

In this case, DON'T read the manuals!

Have you ever made a promise to a teammate that you intended to keep, but failed in the end to keep? I know I have.

Did you ever “break the build” or overwrite someone else’s changes because of a merge conflict? I have done that, too.

Have you willingly taken on some task for a long time, and then just decided not to do it because it wasn’t really yours to do? Did anyone depend on it getting done, and did they know you stopped doing it?

Did you know you’d made a promise, or acknowledge the breakdown you produced? Not always, for me.

Do you think that failing to notice that you made a promise in the first place makes it any easier on the person you let down?

These are situations we create with our own teammates… and yet we sometimes try to diminish the importance of the cost we produce for others in failing to hold the promises we make.

Keeping promises requires professional attention

Many people write about agile methods being based on a notion of trust (including me). Quick releases, adaptive requirements, continuous integration, better testing and quick communication can go a long way to help us make and keep promises.

There are many levels in a project in which we make promises. They all count, especially in the eyes of those who accept our promises.

Keep the ones to your customers, but also keep the ones to your teammates.

Think about this – You may be committed to the top thing or two on your list, and everything else gets shifted around and de-prioritized. Though it makes you feel better to tell others you are over-committed, you may really be over-promising and failing to commit to the promises you make.

What hurts others also hurts your identity with them.

Advertisements

Taking standardization too far

How far should you go?

There are ways to write software and ways to avoid.

As custom developers, my teams have written a lot of software.

Meanwhile, every time we bring new people on board, a question that comes to the forefront is “what is our way” to develop software.

Is it enough to say we are an agile shop, and XP happens to drive our flavor of agile more than SCRUM at this point?

What about the pieces of SCRUM we have appropriated as well?

What about the way we handle user experience, or document requirements, or resolve issues?

Being the same, being different

The more we follow “standard” methods, the easier new team members can join our teams, right? Couldn’t we just drop in a certified Scrum Master and all is well? (Well, not for an XP shop, I suppose.)

Meanwhile, the more we pick and choose what makes us most productive, the more we’re differentiated and the more we can produce competitive advantage through our processes, right?

I have been on too many methodology design projects, and I keep wondering why companies don’t just buy their methods like RUP, or just pick one and get a training company to have everybody start from the same page. (I know some do.)

My answer (to myself) is that though they would start with one way of doing things, they would soon be confronted with one of two options:

  1. Handle all sorts of exception cases and weaken the “standard approach”, or
  2. Even worse… they would cram all projects (and the people in them) into the same mold

From the same mold

George Dinwiddie’s weekend post on process standards triggered my thoughts in this area. It has also been triggered by the most embarrassing situation imaginable and my own rethinking of my offers to the market.

How does each person contribute to the team?

One of the most fundamental points in George’s post is that people have different strengths. They bring those strengths into a team environment.

In many cases it is difficult if not impossible to accurately distinguish the specific impact of each contribution to the team.

For example, the least productive developer is not always the one who completes the lowest number of story points in an iteration (e.g., if they invest in coaching and helping others).

The thing is, the more we use the same metrics for everyone, the more we insist on the same behaviors from everyone, the more we ask them indirectly to play outside of their strengths.

Meanwhile, removing them from the team could cut others’ productivity and ultimately risk project success.

In my comment to George, I mentioned three goals I had in identifying “our way” of doing things. Ultimately, they had to do with making it easy for people to fit into the team.

As I consider the potential negative side effects of removing individuality, I also wonder if too much standardization can be a trap, ultimately leading us away from the highly productive teams we are after???

Now, I could see how a very straightforward IT environment might do fine with highly standardized processes. It seems to me the more adaptive the environment, the more important playing to each team member’s strengths becomes.

So I have a specific question for you today – how much of my concern for individuality do you think relates to our work in custom software, and how much could apply to any situation?