Agile Tools That Just Work

Here are some nice tools that I use and generally make life easier in an agile world.

Scrumy

http://www.scrumy.com
Free kanban board for managing projects (and life).

WebSequenceDiagrams

http://www.websequencediagrams.com/
Quick way to create sequence diagrams and the input is text meaning its easy to share with other that don’t have tools like Visio or EA etc. I actually prefer this to visio and our scrum team used it a lot in our last delivery.

SpecFlow

http://specflow.org/
I like Fitnesse but there is too much friction (not a lot, but enough) in terms of the development cycle (e.g. its odd source control management). SpecFlow is close enough to cucumber for me (in the .Net world) and does not rely on Ruby to be installed. Ruby installs on windows are still a complete PITA as far as I’m concerned and I’ll generally do anything to avoid it. SpecFlow also runs with your existing (x/n/mb)unit testing tool of choice. I must say I didn’t like this tool at first but having come back to it, either the experience is cleaner or I have opened up a bit more.

Gist

https://gist.github.com/
Like Pastie but associated to my GitHub account. I’m starting to use it more and more to do brain dumps of simple code snippets (e.g. PowerShell functions etc) that can be handy to reuse, but not really worth its own repo.

If I was running an external commercial project (e.g. at home) I would seriously consider the use of LowDown. It fits my development style very well without the clutter and bollocks associated with other ALM/project management tools. Git integration makes it very interesting too.

Greenfields project

I am setting up a Greenfields ASP.Net service based app for a “friend”. It is not completely a self less act. The work I do on a day to day basis bores me to tears so this is an opportunity for me to play with new tools, frameworks ideas etc and stop me hating being a coder.

Also as a contractor I often come in after the initial set up has occurred, which means I suck at setting up solutions. I am using the TreeSurgeon project and Mike Roberts article to guide into best practise here. So have a single batch file to call a single NAnt build script to build and test all my stuff. As there are a bunch of empty projects and empty tests this is pretty bloody fast!!! LOL

So straight off the bat I have in my Development IDE

  • VS2005 (waiting form my copy of 2008)
  • TestDriven.Net
  • Ghost Doc
  • ReSharper (old but still happy with it as i am not 3.5 yet)

.Net aspects I am using

  • WCF
  • Old Skool Asp.net WebForms. the first Web layer will probably be throw away especially as it uses AP.Net Security which doesn’t suit the requirements. I may move to MVC later, but I honestly have never had issues with WebForms mainly because everything I usually kept very simple. Plus i wasn’t TDD last time i did a web app, certainly not in the web projects at least.
  • SQL 2005

Frameworks I am using

  • Castle stack for IOC & AOP
  • NHibernate 2.0 (alpha)
  • MBUnit (because i haven’t used it)
  • Rhino Mocks (because i am yet to use it properly), possibly TypeMock too for odd stuff
  • Nlog/Log4net… who cares some sort of logging… actually probably L4N as it is in other assemblies already.

Deployment and source control

  • NAnt 0.86
  • SVN
  • CC.Net or Team City. Not set up yet.
  • Assembla.com for svn and project management

Quality Control Tools

  • FX Cop
  • NDepend
  • NCover
  • Sandcastle

and would like to use Spec# but its too much of a hassle to have it in “real” code.
I think that pretty much covers it.
Thoughts?

I am keen to discuss lot of the architectural side of things in weeks to come. I am probably going post a few of the questions on the altdotnet list (yahoo group) too.

Rhys

"Public" API’s

I have for along time prided myself on writing code that other developers would want to use. It was my brother that actual gave me that definition of good code and i think it is a good way to think of how to write code.

I have recently been using “legacy” code and am constantly amazed that none of the public methods /classes are commented or documented or have argument checks. What I find slightly amusing is the screeds of code that is commented out in certain code files. I have no problem commenting out code while running test etc, but delete before you check it in, that’s what source control is there for! Certainly do not release code with all that crap in there…

If you write c# in the .Net framework you probably use VS. Turn on FX cop.
For gods sake its there to make you a better coder, not to just randomly show arbitrary message at the bottom of your screen. If i am working on a project i prefer the set warning to errors from the start, then the code stays clean.


Use ReSharper. Your code will be cleaner. I am the only one using it at my current place of employment and the HUGE amount of redundant code that shows up is unbelievable! It may go a way to explaining why after 14 week the U.I. was still not up and running.


Use GhostDoc. Its makes commenting a completely trivial task and also helps you name methods in a more appropriate manner. If I notice the comments don’t make sense then instead of rewriting the comment I now rewrite the name of the method till the comment makes sense. The more you use it the less this occurs.


Check your arguments on all public methods. This is call Design By Contract. I basically check everything that isn’t a Boolean.

These things all reduce the chance of you being one of those developers… the one that i curse at as i work with their code.

Look at your code.
Is it clean to look at, with out even reading it?
Can you, at any stage, generate meaningful documentation from your code?
Do you know off the top of your head what the code coverage is likely to be on your current coding project (assuming this is greenfields)? Is it appropriate?

Some colleague I have worked with think this is Gold Plating.
Bullshit. We get paid good money to do our job.
Number one priority is to develop working code on time, sure.
But I believe, certainly as a contractor who may never be seen again, it is also my duty to make it as easy and intuitive for the next guy, of whatever ability, to use, re factor, debug and modify my code.
These practices do not deter from our number One priority. In fact I have found the above implementations, along with TDD, usually mean that you are more likely to handle code once and not have rummage through it again later looking for bugs. And if you do, I guarantee it will be a lot faster than if you had not put these practices in place.

* certainly since I have been a contractor!

New stuff to play with

More stuff to go onto my “To play with” list
IronRuby: Relased today in a pre alpha state. Im actually quite excited with the DLR…
Rhino-ETL : Ayende is fast becoming a legend in my book. Coming from a background where intergration was part of the daily grind, this could be a nice tool to have in the tool box πŸ™‚ It may even work nicely with a project i am working on, on the side… hmmm

Open Source list

Jeff Atwood is pushing to help reward some of the .Net OSS community by donating $10k to the most deserving application (or the group that runs it). That’s pretty nice but I am much happier that there is a pretty comprehensive list of GOOD .Net OSS application/frameworks/tools here:

http://spreadsheets.google.com/pub?key=pKxDW35algYebfs8nssTjIQ

I don’t know if this link will work forever… perhaps just for the length of the “competition”.

Shot Jeff!

Back to asp.net – PageMethods

A little bolt-in that I found a while back and have never used is finally getting a test drive.
PageMethods basically helps you “strong type” parameters for aspx pages, meaning you get such benefits as intellisense & compile type errors.
Again, I’m a sucker for little helpers like this, because errors like mispelt paramtars tend to really peeve me off. πŸ˜‰

Currently Playing with Castle stuff and GhostDoc

New (to me) stuff i have been playing with:

As well as the CAB/ SCSF stuff ihave been working on at work, I have been playing with AR & AW at home. They dont really go with my normal views on enterprise level data access, however in my vague attampts to broarden my horizons I have started to dable in their worlds.

Benefits:

  • Easy to read code. As all the DA is under the hood its code creates the illusion(?) of clearer code.
  • Easy to create Business entities and DA, just drag and drop.
  • Seperation of Business entities from UI

All of this can be done with Code smith, however I thought I would look at this as it is another “string to my bow” so to say. I am currently building a smalll web app from it to see how well it work under light load.

I can see these tools beign great for very basic web sites. Get someone who understands the data requirements to build a DB and AR classes then just palm it off to the UI guys as the model aspect of an MVC set up. Would be great from 3 tier app with basic data structure.

Ghost doc… well it just helps with documenting your code. Its very simple but anything that helps with the mundane is a good thing in my book.