Friday 4 February 2011

Appropriate technology

Have you ever been on a project that has been written with more layers than a Wall's Vienetta and one of those layers is a wcf layer even though its on the same box? And with millions of design patterns?


And guess what,  the user base is like 30 people max!?


Its crazy, I been on so many projects like this. I think its actually more due to the willingness of the developers to do 'best practice' and super duper martin fowler patterns than the reality of what is appropriate to the requirements.

Saturday 29 January 2011

Estimates

Estimating the time it will take to code something is not easy, it takes experience and also the opinion of more than 1 person. I worked on a project once and I had to code a piece of work that was estimated by someone else - at 10 days. It took about 60 days in reality. Although I was new to the technology, it was still severely underestimated.

How best to avoid such situations? Ensure that you don't just rely on 1 person's opinion. Track a persons' opinion, so over time you know that person A tends to overestimate or person B tends to underestimate. Of course if it was a group exercise (which estimating should be) then this is less relevant.

Agile does this with various methods, but the main thing is that estimates are a team effort not relying on 1 person and that estimate accuracy is tracked and the feedback from that is fed back into the estimation process. In fact this is just common sense.

Amazingly, more often than not this does not happen.

Friday 28 January 2011

Requirements

I was on a project once where the requirements gathering phase was completely missed out. Instead, departments just wrote down raw requirements on a Sharepoint list, however ambiguous, and that was it. There was no analysis, to nail down requirements and non-functional requirements into formal user stories, priority, for sprint 0 [agile] or a formal functional specification / technical specification [waterfall], use cases etc. We was just expected to create a system from that, to a deadline (don't know how that date was arrived at) obviously incredibly difficult. A lone tester was brought on to the team late on and its just started to dawn on the team and the manager that its going to be impossible to test without use cases or documentation on how the system is supposed to work. This wasn't the only thing that wasn't right but let's just stick to the topic of requirements. Looking back now I should have raised this earlier on but even I joined at a far too late stage, and realized far too late, and I just got down to trying to do what I was told, trying to fit in with the team, on the piece of work in an incredibly difficult subject.

It's amazing but true.

Lesson 1: Fully understanding and capturing as much requirements as possible in documentation (in whatever form) is essential - and getting them 'signed off' from the business.

Lesson 2 (to self): Always believe that process is important, and trust your experience, and don't get overwhelmed by the organisation to think at the start 'oh it must be ok because this is how its done here'. If it looks like a duck and quacks like a duck - its a duck.