Archive

Archive for December, 2009

Quality of a Software Team

December 29, 2009 2 comments

For long I was thinking of doing my customised version of “how to judge the quality of a software team”, and so a very good starting point is The Joel Test. Following are the updates or my insights on some of those criterias –

1. Do you use source control?
This seems a bit old. These days, I believe most of the companies do use source control (if not, please don’t even think of working there). The twist to this one is – do you use VSS? If yes, then it’s the same as not using any source control. I know it’s not the same but there is virtually no difference, because it means that the company is using this particular source control tool because it came free with some other product. It also means that none of the programmers in the team care to read about and use other better (open source, hence free) source control tools. Or the second twist to this is – do you use an older version of TFS? The reason for this question is that the older versions of TFS don’t support continuous integration (CI) and hence the chances are very high that the team doesn’t use any tool for doing CI. Same is true for a team using VSS. Which brings us to point no. 3 in The Joel Test –

3. Do you make daily builds?
The twist to this one is – do you use any tool for doing CI? If not, then again the chances are very high that there are no daily or frequent builds. Most modern CI tools like CruiseControl.net or TeamCity make it a breeze to do CI and are a must for any team. Which brings us to point no. 2 in The Joel Test –

2. Can you make a build in one step?
Sometimes even if you use a CI tool, the team might not have the capability to make a build in one step. Needless to say, it is a very important capability.

9. Do you use the best tools money can buy?
The twist to this one is – do you at the very least use Resharper? If not, then again, the chances are very high that there is virtually no refactoring being done in the project, and any shit once included, remains there for eternity. Resharper makes it an almost zero effort in many of the tasks like renaming a file etc. which waste unnecessary programmer minutes. The bigger twist to this is – do you use any open source frameworks? The reason is clear, if you are not, then the chances are very high that the developers in the team don’t even care to read / experiment with ways of developing software other than the prescribed (MS) way, and obviously, ‘The Way’ 😉 is not the best way in many scenarios.

A few worthwhile additions to the list are –

13. Do you do pair programming?
I am yet to work in a company which develops all code in a pair-programmed fashion, but if you don’t write any code in this fashion, then again the team is missing something. Obviously sometimes two people in the team sit together to discuss some difficult task, or they debug a difficult bug, but the question is – do two people sometimes refactor existing code? If not, then the chances of rotten code are extremely high.

14. Do you write unit tests and are they all run before each check-in?
If the answer to the above is ‘no’ then again, there is no refactoring going on, and hence most likely, no CI.

I’ll keep updating this list whenever needed. Please let me know your personal twists or additions to The Joel Test. Btw, if the answers to all of the above are ‘yes’ then either you are already following Agile development or if not, then you and your team are very close to being agile.

Note: I am a C#, .Net developer and this post applies squarely for developers / companies working on MS platform.

Categories: Programming

Life as an Agile developer

December 5, 2009 Leave a comment

This is the first time I am working on a serious agile project and obviously my life has changed for the better 🙂 to –

  1. Wearing jeans / t-shirts (on all days) versus just Fridays 😉
  2. Shared check outs (Subversion) versus Exclusive check outs (TFS, VSS)
  3. Running ALL NUnit tests multiple times a day versus writing MSTests once (and running very infrequently)
  4. Using Spring.Net, NHibernate, MassTransit, NUnit, Moq versus no Open Source
  5. Each team member discussing (in an iteration meeting) how much functionality to attempt in an iteration versus the management telling me how much to write in a certain time frame
  6. Use of Resharper by every member of the team versus just one
  7. Using TeamCity for CI (which obviously runs all unit tests before the build) versus none

Needless to say that there is little or no value in the items on the right and I absolutely hate them. But sadly, most companies think, practice and follow the items on the right.

May there be many more companies who follow Agile development. AMEN !!!

Btw, if you haven’t yet read the Manifesto for Agile software development, please do yourself a favour and go read it. One doesn’t have to be a genious to realize that Indian companies follow the above manifesto backwards 😉

(Note: With whatever little knowledge I have of Agile development, I believe writing unit tests and having CI are the bare minimum requirements to follow it).

Categories: Programming