Monthly Archives: April 2007

Hair.Pull

We’re about to sit down and propose to our customer that the only way forward is to rewrite their application, however I’m not convinced they’ve asked the correct person to do the job of getting the documentation together correctly. (Glaringly obvious was his insistence that Coupling and Cohesion where the same thing). Now I’m reading his document on the proposed way forward and cringing a little inside, unfortunately with my position in the company as it is I’m not going to be able to simply walk up and say… look this is how we should be proceeding and this document is just full of way too many omissions and problems.

So the future might look gloomy. We’ll see if I can get one of the other architects involved and we can destroy the document together… constructivly you understand.

Tagged

My code sucks, your code does too

I’m a sucky coder, I’m the first to admit it, there’s a lot of stuff I don’t know but once it’s pointed out to me I usually learn and take heed, which is what learning is all about. In ASP.net Fitnesse so far I’ve been experimenting, my only problem being that I was treating the main code branch as a play pen and making changes without tests and without direction (basically just trying to see what worked and what didn’t) as such I got a bit of a telling off from Andy, quite rightly too. However I’ve been looking around and there seems to be a whole lot of people who are unwilling to hold up their hands and say whoops, we suck! Whether it’s from wrong implementation decisions or badly managed requirements I very rarely hear anyone say “I made a mistake here” and learn from it, this is something I believe everyone should do. If you aren’t making mistakes your in one of two positions

a) your ignorant… you actually did make mistakes but you are completely unaware of them, try asking around I’m sure you’ll get the feedback you need to become sucky like the rest of us

b) you’re not doing your job… Software development is about innovation (otherwise there’s very little development involved) so I seriously doubt you’ve pushed your boundaries…. go on try something new, if it works without mistakes see rule a.

Ok so I’m blowing it up a little for effect (but not much) but we all need to realize we suck and that tools are there to help our suckiness not bringing down the masses around us… go on use xUnit,FIT,Selenium,WatIn,WatIr,Rhino… I dare ya.

Tagged

Development of Communication

Just been listening to Jeff Atwood interviewed on .Net Rocks, as he talks about the lack of Communication skills that has plagued the Software Development industry for years (my use of the word plagued is deliberate) and I’m thinking that his opinions might touch on the problems I’m finding at my current project.

I have a developer who is absolutely fantastic technically but really get’s it wrong when trying to explain or communicate problems, he just doesn’t have the same language as everyone else.

Perhaps I need to read PeopleWare as I think I might be antagonizing the situation by forcing him into a defensive position. (it’s not my code mentality)

Anyway hopefully we can work out a way through it, but in the meantime I’m feeling seriously like Jeff described earlier in his career, surrounded by people who treat Software as their 9-5 and don’t have a huge amount of love for the process.

Good interview Jeff

Technorati tags: ,
Tagged

Weekend reset

So as anyone who subscribes to my twitter tweets should know I had a house warming party on the weekend, the invite might have made a few mistakes (forgot to mention BYO, and made it too casual) so it turned out that very few people showed up.

I’m not sure if that’s a reflection on the state of my friend group here in Wellington, but hey I’ve only been in the country a few months…

We still managed to make the most of it and had an afternoon/evening/night of relaxed drinks as people came and went.

I’ll be posting up photos of our new diggs for everyone to see just as soon as I have my Internet connection up. Which leads me to another of my pet peeves from the weekend.

I’ve just recently signed us up to receive broadband from Slingshot, the Internet in New Zealand is generally terrible across the board but Slingshot seemed to be one of the best (actually Telstra Clear were my no. 1 choice but they don’t service our place). So I’d signed up and was awaiting connection which happened on Friday, only I hadn’t bought an ADSL modem because as part of signing up to Slingshot I was supposed to get one for free, (well free apart from a $10 delivery charge).

So I find out that the delivery of said modem was attempted on Friday too but they tried the upstairs flat (our flat is really well hidden from the road and I wasn’t that surprised it didn’t get through the first time). Anyway we ring up CourierPost and speak to a customer services rep who takes specific and detailed instructions on how to get to the front door to carry out delivery.

Ok great so we go out to a meal on Friday night and end up staying at Katy’s mum and dad’s place over night (it’s a long way from there to our flat and Wellington doesn’t have the worlds best public transport), but we get up nice and early and get a lift back to be home by 9am. We proceed to wait for the delivery to occur, at 12.10 I check online (through our neighbors Internet) that we haven’t missed it somehow, and low and behold the driver has yet again tried to deliver it to the upstairs flat. Now if we hadn’t left instructions that would have been ok I guess but hey we did leave instructions and it still didn’t get to the front door! (also it turns out that the next door neighbor tried to tell the courier where to go and he still didn’t check). So we phone up the customer services again, and receive the stupidest excuse that maybe the courier didn’t get the instructions, to which I ask why they bothered to take instructions in the first place! (to which a reply was just “yes, it’s silly isn’t it”), we then hung up to consider our options and Katy later phoned to get the delivery addressed to my work so that I wouldn’t miss it, to which they have the gall to say that they’ve tried two deliveries and can only take it to our local post shop (post office for those in the UK), we got angry and explained to her the situation and she quickly retreated her position and agreed to get it delivered to work. I was more than annoyed by that response so am now writing a letter of complaint about the whole fiasco, however I’m glad to be able to say that the modem got here fine today.

So I’ll get online tonight, after my league game of squash.. yes that’s right I’m back playing squash and in a monthly league competition.

Tagged

Value +

We’ve been struggling this week trying to get our clients to recognize the true value of the application before them, all they can see is a simple application but simplicity belies the actual cost underneath. It takes a lot of processing and logic to keep all the intricacies from the user.

So I really wanted to ask them just one question… If you didn’t have the application what would be the cost.

I’ve yet to be able to have a good sit down with the sponsors and try to bring them round to the idea that throwing good money after bad is not a way forward. They just can’t see why a “small” application should have a large cost associated with it, I.e. the cost of a proper scope and rewrite.

This has lead me to evaluate what I find value in, and what I would find motivating.

I’m quite complex and have a number of value factors.

  • Time: if it reduces the amount of time I spend on mundane tasks, and increases the amount of time I can spend on personal goals, it has a high value to me.
  • New: is it new? is it bleeding edge? I’m going to be interested and learn so it has a high value
  • Improve: is it going to make me a better person? higher value if so

I’ve tried not to put money in the list, but I realize it is important to me (I’m just not very good at living with little) I don’t feel ashamed that I would consider monetary gains a priority but personally I think it relates more to New and Time factors as it allows me to pick more valuable processes according to these two factors as I can afford better gadgets and newer technologies, I can also do more fun things with my personal time.

Ok I realize that this is nothing ground breaking and everyone has some similar motivating factors but I’ve just been thinking about it while screaming in my head to the client:

“But how can it be worth so little if by not having it you loose millions per day!”

Oh and for future reference, do it right – early.

Tagged

What you don’t know will kill you

Sometimes I don’t realise what I just take for granted, perhaps my methodology comes from my training as a tester to start with or from my work in great teams following some great methodologies but after reading Andy’s latest post I realised that everything he listed I just do as common sense but more, I didn’t realise anyone would attempt not to follow those principles. Not that i’m nocking Andy’s post, far from it the more great pearls we have written down to reference later the better, I’m just reassessing my assumptions about how everyone works in the wild.

Maybe I’m also reassessing after working on the project I am at the moment, but i can’t mention that one.

As such i’m trying to make some suggestions as to what to add to the company library. mainly because it’s severely lacking. So lucky that I came accross ProgrammingBooks.org can I sugest that people make some ratings (oh only for my computer scientist readership)

In other news I’ve been doing some reading with my Ruby enquiries and came accross rspec an interesting Behavour Definition Framework for Behaviour Driven Development, an offshoot of Test Driven Development (well rather a combining and directioning of a few methodologies) now after reading the BDD definition and some surrounding commentaries I can only see BDD as real TDD. Without an aspect of behaviour in your tests your aren’t DRIVING your development with tests your just testing. The only thing that TDD doesn’t inherently give is the universal domain language. And i see that as a great function of FIT, Fitnesse (and obviously ASP.net Fitnesse). Lets get everyone speaking in the same language, and if you write tests that speak to functions then lets have domain functions that speak the same language. IE if you use FIT tests to drive development there should be as little framework (or fixtures) between the tests and the code… “the strength should not be in the glue”

Domain Language is an important topic and one that isn’t really well handled yet… RSpec is still much to low level to be of use to a business owner. With Fit tests they are customer facing and shouldn’t (in a perfect world) speak to any fixture code but talk directly to the application.

 

Tagged

UPDATE life WHERE UserName=Owen

So Easter weekend is over and for a non tech speak post I’ve decided to make up for it by putting the most techy title I could think of at short notice.

 

So the last four days have been fun and emotional…. Ok well maybe not emotional but certainly drunken this was me on Saturday night:

ok maybe loose the audience and any good dance moves… but I was on fire as only drunk people can believe they are.

Tim Haines was there and had one comment (it was the first time we met) “You’re remarkably outgoing for a software developer” [sorry if I've misquoted you Tim, but that's the best of my hazy recollection of that night!]

It was all in aid of wishing Tim’s brother Jono a good marriage next weekend and saying goodbye to his single-ness I didn’t stick around all night so I’m not sure if at the end of the night this happened: ”The groom’s mates may, after all getting drunk, subject him to various humiliations and/or endurances, sometimes even in public, such as leaving him tied naked to a pole, or placing him drunk on an airplane to a far off remote location.”

But good luck Jono, it was a great evening and thanks for the invite…

Having said that though I am now seriously out of pocket and need to start saving again. (or just start saving as I’ve not been able to start yet)

Myself and Katy have finally sorted a flat out for ourselves and will be moving on the weekend. So I’m desperately trying to sort out:

  • Phone
  • Internet
  • TV
  • Insurance
  • Furniture
  • Time off to move

One of the only major major purchase decisions has been to get a new TV… and as it’s been Easter weekend there’s been some fab interest free deals… I’m just thinking that the other shoe will fall and I find out I’m going to have to pay somewhere… but I’ve left it in Katy’s fair hands today…. we think we’re gonna go for this TV as it’s on special.

I’ve heard some great reviews, but I left the final decision to Katy, as she’s much better at thinking with her head over impulse so we’ll see if we have a new TV when I get home tonight. If not we can make do without I guess, but imagine a new XBOX 360 hooked up to that! oh well I can’t afford any of the gadgets I’m tempted by so I can’t get them anyway (much to Katy’s relief I feel).

So after 3 months in the country we’re finally starting to get sorted out.

Bring on the next 3.

Tagged

Fit and Fitnesse, What’s the point?

Ok so obviously that’s not me saying that….

As part of thinking about the shape that ASP.net Fitnesse should take, and making certain design decisions around the system it’s unavoidable to think about how we’ve used the original Fitnesse in the past…. and it would seem that the certainty I’ve had in the past that the way I’ve used it has been the best and only real way to use the server, it seems that I’m sadly very mistaken.

Previously I’ve seen the ideal Fitnesse set up as being a one stop documentation for how a product should work.

The power of Fitnesse are the following

  • Quick – no messing about making sure everything is in the correct format to be expected by a document management system or a requirements management system… got a requirement? just create a new page for it we can sort it out later.
  • Unbloated – it’s just a simple wiki with a test function
  • Instant feedback – just click test and find out how close you are
  • Requirements + documentation all in an easy to read and understand format, put as little text around as you like/need.
  • Tests are the specification – it really does push test driven design at a higher level than Unit tests

So my old way of laying out Fitnesse [that worked really well]

-> main wiki page –> current release in progress branch –> stories for release

                             –> previous releases –> regression stories

                             –> extra info  –> pages and pages of other information we wanted to document, meeting minutes, design decisions, links… anything just not requirements.

 

now the CI integration is the most important part (without feedback on a regular basis why do you bother putting it in in the first place)

We had regression tests which would hit all the story tests from the previous release and FAIL the build if any of the story tests failed we felt this was an important aspect as requirement story tests were just as important as Unit tests

We also had a currently in progress build that would run and pass no matter what, it was more of an indication of how close we were getting to complete our requirements for the story.

so we’d do the following in the builds test phase.

  1. Current release FIT tests (always allowed the build to continue)
  2. UnitTests (fail build if they fail)
  3. Regression FIT tests (fail the build if they fail)

this would only be put into the nightly build (unit tests would be run on any build)

This worked really well for our team, but now I’m having trouble realizing how any other way of organizing the StoryTests could work beyond the following problems

  • Old stories were hard to keep in step
  • Stories were hard to find by functionality
  • Some fit tests could be slow

  So has anyone got a better or different way of working with Fitnesse?

 

Tagged

We may be under way

ASP.net Fitnesse is starting to get under steam now, I’ve been struggling to get any updates done over the past few weeks as i’ve not been able to get an internet connection where i’ve been living (Kary’s parents place), however this week we’re house sitting for her sister and brother in law and as such have a nice and quick connection that i can use to get some meety work done.

We’ve decided on a template for the site:

 

so as a sneek peek the server will look something like:

 

With a lot of jazzing up i’m sure.

So here’s hoping we can actually pick up the pace and work on some real features.

While we’ve been thinking about fitnesse and story tests so thoroughly theres been a few nagging features that i really want to be able to add at a later date, a few things that will take us away from Fitnesse and hopefully make a more useable product.

  • Reusable fixtures
    One of the main things that Fitnesse lacks is the idea that people and projects often reuse the same fixtures over and over, why not automate the creation of these tables and link them to a central file so that any changes to one of the tables propagate around. (needs a lot of thouhgt as to how to best implement this one)
  • Refactor Fixture plugin
    Once the server is at a stable and working state i’m intending to develop a Visual Studio plugin that will allow seamless refactoring of Fixture code, ie change the name of a fixture and the underlying test page changes to reflect the new fixture definition.

Andy and myself (well more Andy really) have decided that Fitnesse’s model of plain wiki misses something…. if you could extract the tests from the pages, so that they are still read in context but have a way of being treated and identified seperately as well then they can start to do some more automated and easy to use things such as linking lots of stories to the same test.

Lots of work still to do but i’m quite excited..

 

Oh and i’m gonna be at Tech Ed NZ in Auckland in August so i might try and make sure we have a good version by then… maybe i can do some touting of the vertues of story tests.

I’m really tempted to push for a project name change now…. StoryTest Server.

Rick Mugridge has a lot more info about story tests, i’d advise you to check out his talks

 

Tagged

Zerg Rush! From: “Coding Horror: Software Development as a Collaborative Game”

Yet another insightful artical from Jeff Atwood although it’s acutally an artical about another artical by Alistair Cockburn so i guess i’m commenting on the original more.

 

 

 

I do like the mentality/opinion that Software development can learn from game mentalitys (i like anything that breaks the norm) but i can’t help but think that my Current position makes me feel like i’ve joined a loosing game of starcraft after many Zerg rushes.

 bah!

Tagged
Follow

Get every new post delivered to your Inbox.