Agile in some “agile” company

In the past I was working in some small company (about 15 people, 7-10 developers) which was telling every customer that they are agile. That they use agile methodology to build solutions, that they bring products with high quality, that they can quickly change software according to requirements, etc.

When I look now at this company I have only one thing in my mind: “You’re doing it wrong!”.

Let’s look what was really wrong.

  • This company has been placed in two locations in Europe. Basically we were communicating when we needed it. The problem here was that there were no standups. In my current company when we perform standups every day I feel sometimes that it is not necassary, but when I look back I see how important it is just to tell what I have done, what problems did I have and what will I do. If you don’t make standups you will loose the goal.
  • The goal. What goal? Basically nobody knew. We were working on some internal framework used to build customer products. In normal company business analist is the person responsible for designing functionality. In that company there was no such person. So we, developers were inventing features which sometimes nobody used, but they were really nice.
  • So now we have features. We should be able to test it. Guess what? Next missing person is a tester. So if we don’t have quality assurance, we should at least write unit tests. Nope – no unit tests found.
  • In agile really important is how fast can you adapt your project to changing requirements. But looking at previous point you can see that we are in big trouble when we need to modify anything. In this project everything was dependent on everything. Almost each change was painfull. After two years of work on this project there were only two developers who were able to make changes and not break anything. And of course every developer was testing his features by himself. Can you imagine how quickly “stories” were accepted? Of course stories written by developers :)Moreover this project was tightly coupled. No dependency injection, everything done by contructors, small number of interfaces, passing big object holding half of application configuration, etc. Probably this was one of the reasons why there were no unit test. Nobody was able to create those objects without creating whole application in test. This could be a subject for another story.
  • Now building and continous integration. Hmm, wait… what? There was environment for building project, but we used only nightly builds, and nobody cared about failing build. Moreover what this build can really tell you? That you have compilation error. But your IDE can also tell this. Without unit tests there is no point in having build environment. Next problem was that we didn’t deploy those builds anywhere. That means that basically nobody could see our work and progress. And that means that testers cannot test functionalities… oh, we don’t have testers, so we don’t care.

So as you can see almost everything was done wrong in this company, but they are still thinking that they are agile. I don’t believe in this kind of agile any more.