No matter what your process, and how good that process is, lack of accountability can limit its effectiveness, and the effectiveness of your organization as a whole. Any model will fail to be accurate when it does not represent reality close enough.
Let’s say your company is using Scrum to manage software development work. If you have people on your team that regularly do work that’s not on the scrum board, it hurts the effectiveness of the process because
- The unplanned work being done isn’t being tracked, so resource planning and allocation will be off
- Part of what makes Agile work is you’re doing the least work required to meet the objectives (when the unit tests pass, stop coding). Software Engineers often face the “Wouldn’t it be cool if it also did X? This will just take a minute to implement” temptation.
- The unplanned work being done may not even be desirable or valueable to the Product Owner.
- The unplanned work may actually hinder further planned work by taking the application in a different direction or prematurely locking the application into a design implementation that may become invalid in later sprints. This is in conflict with making decisions at the last responsible moment.
- The unplanned work may become a burden to others. Either QA finds out about it and has more testing work to do than planned, or they don’t find out about it and any bugs in it can escape into the wild.
Equality as a true/false condition doesn’t happen in the real world. It’s not only a continuum, but people can be equal in some ways but not others. Attempts to change this even in science fiction always end badly. Even if everyone were completely equal physically and mentally, a well-functioning society requires some sort of hierarchy, because everyone can’t know everything, take everyone else’s concerns into consideration, and agree on courses of action. That’s as true in the federal government as it is in a family home or at the office. Can you imagine a large society where everyone voted on everything?
The question is, how do the people at the top (or even the middle) get there? How do people gain authority over others, how do they keep it, and why do the people who they have authority over listen to them? What do they do with their power? These all vary greatly in implementation and degree of fairness. As you read this, please keep in mind that I don’t treat “power” itself as a bad thing. How one gets it and what one does with it may be, though. Read on…
I just read an interesting article from DZone called There’s No Such Thing As A “Devops Team”. Readers who have been around a while will know that a flippant title like that is neither going to be totally true, or even the real point of the article. And they would be right. The real point of the article is that silo groups are bad, and silo groups that don’t talk to each other are infinitely worse, and the bigger the [real or imagined] barrier to them communicating, the worse it is. The solution to two teams not working together (in this case the developers and the operations/release engineering group) is rarely to insert another group between them.
There are a lot of technology options out there. There are even a lot of free/open source technologies out there. So much so, that it’s tempting to install too much of it. Having too much technology can be just as bad as having too little, and “free” can become pretty costly. Obviously I’m not knocking free/open source, but the misapplication of it.
First and foremost, the more software/hardware you have, the more likely it is that some of it will have a bug. That’s just law of averages coupled with the fact that no significant software project is really bug-free.
Then there’s the maintenance effort. The more technology you have, the more effort needs to go into care and feeding of it. Also the more you have to learn about.
Lastly, just how Agile teaches us to delay decision-making and development to as late as possible, because that’s the point where we know the most about what’s needed, the more technology you put in place before you need it, the harder you make it to implement what you really need when you do.
Geeks and non-geeks alike should do their research when buying electronic devices to make sure they can actually do what they want, and don’t have unacceptable attributes. In this post I’ll give some examples, and some helpful guidelines.
Agile methodologies, like most flexible yet powerful systems, rely on knowing exactly where things stand. You may not know exactly what’s coming in the future, but you know what you’ve already got, and roughly how close work in process is to done. This is one of the many reasons short iterations are a good idea. Not only do you know on a frequent basis (the end of each iteration) where you stand, but if what was done is acceptable to the stakeholders (and QA) and can really be considered done. The product backlog tells you what needs to be done in the future (based on current knowledge, which may change, and that’s OK) and the iteration backlog tells you what’s done and what needs to be done now. The burndown chart shows how things are going inside the iteration.