Monday, 4 February 2008

The right side of the tracks

Scotland on Rails is on it's way!! Sponsorship looks like it's flooding in and there is a great list of speakers with a diverse range of topics. Big it up to Alan, Paul and the guys.

Sunday, 21 October 2007

Flame bait

I bumped into one of my former project managers a few months back. We talked a little about how things were going on the old project (which by all accounts goes live tomorrow... 3 years and 7 months late) and how things were for me in my new position. I told him a bit about XP and how much I enjoyed it. He seemed rather sceptical about how it could be costed. A couple of days later I came across this article and forwarded it to him.

Sometime later he replied. Part of his reply was, as he put it, "a bit controversial to stimulate the debate". After a few days of thought and few weeks of procrastination I replied, here it is:


PM: The Current Climate – the software industry does not have a good track record in delivering large projects. Therefore, customers are very nervous about entering into what they see as an open ended contract. From experience, it is very difficult to secure funding when you can’t guarantee what will be delivered at the end or when.

Having spent most of my IT career in the public sector I had no reply to this. I suppose I could have argued the "what will be delivered at the end" saying that a customer would get exactly what the customer wants and needs, but I guess his point was about funding.

PM: Design – the agile approach assumes an ongoing design process. The software industry is pretty unique in this regard. In most other industries (eg construction), no-one would contemplate starting a project without a completed design……why should software be any different? I have bitter experience of developers having to re-factor code (which really meant rip it up and start again) because module x no longer worked with the new architecture.

Me: Please tell me you aren't trying to compare the job of a programmer to a brick layer? The waterfall approach of Big Design Up Front has been almost completely discounted by the agilists. The reason I see for this reaction is that, at a detailed level it's almost impossible to fully understand every eventuality/path through a software system. If you were to try to envisage and document every scenario, my guess is that you would have spent as much (if not more) time than it would have taken to develop a working system. Not a complete working system that meets all of their business needs, but one that could meet their most critical business needs earlier and could be put into production and be of value.

Another major issue (which ties back to your earlier point) is that customers don’t know what they want, especially not from a large system and they can’t be expected to. They are the best people to understand the domain problem they have of course, but not the best solution that solves that problem especially not upfront. That’s why designing and implementing a large system before letting a customer use it is why, I guess, the software industry has a bad reputation.

As for refactoring, it is about refining code to: increase quality; re-useability; maintainability; simplicity; etc, all of the things that reduce bugs, please customers and make applications easier and cheaper to maintain and modify going forward. Refactorings like you suggest, where large steps are taken to rewrite areas of code, occur when the processes of incremental design and refactoring are not put in place.

PM: Quality – the quality argument in the article seemed to skip over the fact that a bad programmer is a bad programmer no matter what methodology you use. The article (and fans of agile programming) suggests that agile programming is the panacea and will solve all the quality problems….garbage! At the end of the day, the customer still has to have a working system (i.e., bug-free).

Me: A bad programmer is a bad programmer I agree. But with techniques like test driven development (TDD) and pair programming a bad programmer can become a better programmer (I won’t go as far to say a good programmer). But a bad programmer who understands and practices TDD, commits code regularly to a code base which has automated continuous integration can produce reliable code. Where as a bad programmer left on there own without writing tests first can end up in a spaghetti junction of bad code with no way of verifying the quality of their work. Either way good or bad programmers who don’t write tests first can write code that’s buggy.

I agree that Agile development methods aren’t a panacea to bug free code, good developers play a big part. But I do honestly believe that projects benefit massively with agile techniques like:

  • TDD;
  • Refactoring;
  • Continuous integration;
  • Pair programming;
  • Short development iterations;
  • Daily stand up meetings.
They increase:
  • Code quality;
  • Understanding of requirements;
  • Understanding of a code base throughout a team, which for one helps reduce risk when team members move on;
  • Communication both internally and externally.

Friday, 17 August 2007

My worst interview

Q: So tell me the difference between Statement, PreparedStatement, and CallableStatement and when you’d use each.
A: Um, you use a Statement to perform a query from a database.

http://burtbeckwith.com/blog/?p=44

Minus the ridiculous number of buzzwords on the CV, this could have been an interview I attended 3 years ago. I had a howler!! TBH I was a bit green back then and the interview was a wake up call.

Thursday, 5 April 2007

The new job

So thats the end of week 2 in the new job and I'm shattered. I've already learned loads and I've still got a mountain to climb. I've arrived just in time to do my objectives and they are looking pretty full up already. I plan to sit the SCJP (I think I've put it off long enough) learn Ruby strengthen the old SQL skills whilst trying to soak up as much domain knowledge as possible.

Friday, 23 March 2007

Lunch

Lunch is the most important meal of the day! Well maybe not but if you like a sandwich, like I do, it's possibly the most enjoyable. So here are my fav sandwich shops in Glasgow:
  1. Where the Monkey Sleeps;
  2. MYO;
  3. ItaliaMania;
  4. M&S;
My goal for the remainder of this year is to stretch this list to 10 and get M&S out of the top 5, at least.

The last day and the week before the first day.

So that's it, I've written my last line of code for the government (never say never of course).

I had a great night out with the folks at the old place, drank plenty of beer and danced till about 3 or 4 in the morning. Many thanks to all that could make it. For those that couldn't, I'm sure there will be many other opportunities in the coming months to share a drink or two. Special thanks to Johno who made the trip up from Manchester for the occasion, to Kenny for taking loads of great pics and to Monica and Michael for getting me in a taxi home. Thanks also to Niall for the leaving speech, I really appreciate all the nice things you said.

During the last week, between jobs, I've had a gas with Jules and the kids and have managed to get a few jobs done around the house. It's been really nice spending this time with the Tom and Maisie, they really are coming along a treat. It's also helped me appreciate even more what a great job Jules does.

Jules and I also managed to get a night out alone (kid free) together and took a trip down memory lane. My big bro's band, that we used to watch at every opportunity back in the 90's, played at a friends 40th. It was great to see them up there again, tight as as usual.