Tuesday, February 9, 2010

Is the industry moving away from Agile?

I don't think so.

I'm writing this in response to a link to this article on slashdot that a friend sent me asking the question which I've used as the title for this post. (The slashdot article references this blog post which is a good and informative read in itself and I found I agreed with many of his points. What starts as an emotional rant turns into a very well presented article.)

There isn't just one way of doing development or just one way of doing agile; hence the name agile. I thought the first poster on slashdot hit it on the head especially with his comments about having the right people and making adaptations to your business.

The author leads into the article complaining about agile but later talks about how many other methodologies can also be successful. The important thing in my mind is picking the right approach for the job (or team even; some methodologies only work with a certain type of people) and also understanding that methodology properly. In fact, the understanding must come first to be sure that you do pick the right approach for your team/project.

The author made a good point about how some people use the words "agile" and "scrum" interchangeably. It is my opinion that these are the teams that fail at agile. It could be that some see agile as being less structured and as a result end up thinking there are fewer rules and less accountability. An agile approach may give the developers more leeway and freedom but with that comes more responsibility. My experience has shown that a junior team usually cannot succeed in these circumstances. They typically will not have the experience required to make the design and implementation decisions that are usually made by someone else in a different model. It's been a challenge to overcome with some of our teams.

We use SCRUM outwardly but also take the XP approach mentioned by Kent Beck in "Extreme Programming Explained" and implement changes slowly. We reflect each week in our sprint retrospective on how those changes helped/hindered us and we also talk about new ideas and ways to improve our process. Yes, we follow a scrum model but one that we have adapted to our needs. We also know that it is more than just doing this list of things and then we'll have it right. We know that the business needs change, the business itself changes and that we need to be able to change and adapt in order to keep pace. I feel that with the right mix of people and support from management agile can be very effective.

Although we don't do game development where I work, I had previously found this pdf about lessons learned implementing SCRUM at Bioware and one of the key things I took from that was that they also ended up adapting SCRUM to their own needs. I think this is key to success with any methodology; being able to take what works and adapt where you need to.

Thursday, January 21, 2010

Setting up TortoiseGit to work with SSH on a different port (not port 22)

So recently we've had some headaches giving users on Windows machines access to our git repository (me being one of them but not the first). In searching for a solution to this problem I found several people with the same issue but having to use various workarounds or actually change their ssh port back to 22. All of the workarounds were out of the question for me but I knew there had to be a way to do it. Basically I just followed some of the better posts about using Git on Windows out there with a couple minor changes.

Here are links to a few of the posts I looked at while trying to figure this out:

The important pieces to make sure you get it working are these:
  1. Be sure you choose the OpenSSH option when installing msysgit
  2. Be sure you choose the OpenSSH option when installing TortoiseGit
  3. create a .ssh/config file and enter something like the following
Host name_of_host_where_your_git_repo_is
User git
Hostname name_of_host_where_your_git_repo_is
Port port_number
PreferredAuthentications publickey
IdentityFile "/path/to/your/openssh/private/key"
And you should be good to go. I actually set up msysgit and my ssh config file first, then I made sure that I could connect and then I installed TortoiseGit.

Tips:
  1. If you created your private key using puttygen then you'll need to export it (using puttygen) as an OpenSSH key.
  2. While testing your connection you can use ssh -v git@github.com (or @ your own host even) to see what ssh is doing and to make sure it is finding your key correctly.
  3. If your openssh key is located at C:\users\myuser\keys\key.ssh then the path to your IdentityFile should be like this: /c/users/myuser/keys/key.ssh

Friday, October 9, 2009

SQL Server 2008 express

I spent the better part of today attempting to get my (Windows Vista Business :/ ) system to a state where I was able to run the installer for SQL Server Management Studio 2008 so that I could access a 2008 sqlexpress instance running on another machine. It's finally running the installer as I type this and the annoying thing is that my friend was able to access the DB using RazorSQL (usign the jtds driver) on his Mac without a problem. It's infuriating that I have to go through all this hassle when I could have just used a non-Microsoft tool to do the job. I don't see why SQL Server Management Studio 2005 can't access the database at the same level as jtds. I suppose if I added an odbc connection on my computer to the db then I could have accessed it that way...

The install is now finished... Hopefully I can at least get some work done now.

Tuesday, September 29, 2009

Errors with an Upgraded Rails version

NameError: uninitialized constant ApplicationController
I've had to take a shelved project written for rails 2.1.1 and try to get it running again and ran into an issue getting it to work with the version I have on my machine; namely rails 2.3.4. Thanks to this post I was able to quickly overcome the most obscure error rather quickly.

Tuesday, July 7, 2009

Team City's FxCop Runner

Team City has a number of built in runners to use on your project that provide some pretty nice reports right within Team City. Some of those we're using are the Duplicates Finder (.Net) and the FxCop runner. The Duplicates was pretty easy to set up but I had a little more difficulty with FxCop. Nothing serious but I thought I'd reproduce what we did here.

First, of course, we had to make sure that FxCop was installed on our Build Agents. Then I added the following to the buildAgent.properties file

system.FxCopRoot=c\:\\Program Files (x86)\\Microsoft FxCop 1.36

Make sure to escape the colon and backslashes.

Then I had to create an artifact from my compile build configuration that was the bin folder containing the assemblies I wanted FxCop to look at.

Then I had to create an artifact dependency on that artifact in the FxCop build configuration; otherwise there were not any assemblies available for FxCop to operate on.

That did the trick for me.

The next step is to create a Dashboard type page that will have a script that will grab all the different metrics created from FxCop, Duplicate Detection, NCover, our burndown chart, etc. and display them in easy to view way (graphs and what not). We'd have all developers set this to be their home page (or ideally have it displayed on a wall somewhere) so all this can be viewed at a glance and you can get a quick overview of the project. I think this will be really valuable as a tool while trying to take TDD to the next step.