Agile

With my new job, I’ve not been able to take advantage of a lot of Agile/XP practices. In a company of four, where each is effectively working on a different project, collaboration is minimal. Also, for the projects that I am working on, the customer is very adamant about getting a detailed proposal up front, including a list of all of the screens and how they will operate. I’ve managed to get by without too much detail, but it is still more than I am generally comfortable with. TDD and Continuous ......
Posted On Tuesday, March 3, 2009 9:03 AM | Comments (0)
Filed Under [ Agile ]
Recently, the CEO of Sprint could be seen in TV commercials stating "Technology is only great when you know how to use it." Here is an article that digs a little deeper into this ad campaign. The purpose of the campaign is to highlight Sprint's customer service, which of course is vitally important to any company providing products or services. I am not here to criticize Sprint. In fact, if you read the article, you will see that they are addressing technology simplicity as well as customer service. ......
Recently I posted a comment to an article talking about only billing hourly and not entering into fixed bid contracts. I agree with the post (for the most part), but felt compelled to respond to one of the comments. I thought I would include this in my blog because I think it is an interesting topic. The focus here is not how we estimate from an Agile approach (read Agile Estimating and Planning if you are looking for that). Here, I am addressing a specific argument that Agilists "can’t estimate ......
Whoa! Why does it need fixing if it is not broken? I'd like to explore the definition of "broken". Here is a modest list of signs of broken code. A test is failing (I know, painfully obvious) The code doesn't do what the user expects. (Likely, you actually have a broken test or it's missing altogether.) The code is hard to read, hard to enhance and brittle. I think the first two bullets are obvious and the customer will see the value in fixing the code. The final bullet leads us to refactoring. How ......
Clearly MS hasn’t caught up with the third party tools that are out there? Which do you guys use? ReSharper Refactor! Pro C# Refactory Visual Assist X I've used Refactor!Pro on a previous project and liked it quite a bit. I assume a lot of these include the same basic features. Perhaps the difference is in the number of refactorings and additional features outside of refactoring. ReSharper seems to be the most widely used. But, does it give the most bang for your buck? Does it meet the needs of a ......
Posted On Tuesday, August 5, 2008 3:59 PM | Comments (1)
Filed Under [ Agile ]
I received quite a bit of feedback regarding my Join extension to IEnumerable that generates a comma separated list. The purpose was to emulate string.Join(), but to add more flexibility as to what is "joined". I took some time aside to investigate some of the suggestions and alternatives to my implementation. I should note, that I would not normally do this. I try to avoid premature optimization. However, there are certain practices that can be learned that improve performance in general (like using ......
Posted On Wednesday, July 9, 2008 3:12 PM | Comments (0)
Filed Under [ Agile ]
So, I've settled on a pattern that I found somewhere on the web to safely override Equals. I don't remember where I found it, and there are certainly many other good implementations (probably better than mine). Regardless, I found that I do have a repeating pattern. I decided to set out to limit this duplication if I could. Here is what I came up with. 1: public static bool SafeEquals<T>( this T left, object right, Predicate<T> test ) 2: { 3: if( right != null && right.GetType().Equals( ......
I've had a few people ask me about my custom GridView and whether I can help them with theirs. Though, I cannot share my code directly, I can provide some guidelines. In the coming weeks I plan to post segments stepping through customizing a GridView. My customizations are by no means perfect, and I have had to tweak things as I encounter issues. I look forward to sharing my experiences. I will probably post a multi-part article that walks through customizing a GridView. Again, I will not be posting ......
Posted On Monday, June 9, 2008 9:24 AM | Comments (0)
Filed Under [ Agile ]
I had the opportunity today to write some more complex LINQ queries. First, I started with a simple group by expression allowing me to subtotal some data for a particular key. Certainly I could have done this in the database. Many would argue that that the database is the expert at these sorts of things, so we should let the expert take care of it. I have a couple of reasons for placing the group by in the LINQ query. First, I don't have a lot of control over the data layer. Second, I can unit test ......
So I was about to create a dump of my subversion repository so I could split multiple projects into separate repositories. But then I got to thinking. Why do I want to create a dump? Well, the only good reason I could come up with was revision history. That reason wasn't good enough. The source that I wanted to split out was some common/shared libraries. Collaborating with a team member, we decided there were two compelling reasons why we don't need the history up to this point in time. First, the ......
Posted On Thursday, May 8, 2008 11:01 PM | Comments (0)
Filed Under [ Agile ]
Last month was a busy month for me. We deployed the first version (beta) of the product I have been working on over the last couple of months. Meeting the deadline with all of the promised features (almost) was critical. However, when you fix the time line and fix the feature set, then something else has got to give. You guessed it, quality. Quality is not just a concern over failures. There is a level of quality in your successes as well. So far, the feedback on the product has been very positive, ......
Posted On Tuesday, May 6, 2008 11:29 PM | Comments (0)
Filed Under [ Agile ]
This week, we had our first deployment of the product I have been working on for the last several weeks. The deployment is to the customer's test environment and it is not a fully functional product. However, the features delivered are complete. The user are very excited. In fact, they immediately started testing the data in parallel against their prior system (Access and Excel). We received an email yesterday, stating that the data looks great and the tone of the email was very positive. Personally, ......
Posted On Friday, April 25, 2008 9:04 AM | Comments (1)
Filed Under [ Agile ]
I've have been pretty quiet lately. Actually, I've been quite busy and it turns out that there isn't much new to share. However, this is one thing that comes to mind. A recurring pattern in my UI is selection criteria that can applied to a GridView. It turns out that frequently the same criteria applies to various screens. I use LinqDataSources to bind to DropDownLists for many of the criteria. It is not uncommon to use one controller for every page. Following this approach, I ended up with the same ......
There are some key practices that all Agile developers should be familiar with. In fact, "familiar" probably isn't strong enough. One of these practices is test-driven development (TDD). As one of the most important activities it ironically requires a lot of discipline. What does Red-Green-Refactor mean? Here is a brief description. There are plenty of places to learn about TDD and Refactoring in more depth. Red: write a test (it fails of course) Green: write the least amount of code (the simplest ......
In a recent post, I mentioned that I was working on a customized grid view. Last week I completed the "binding to user settings" behavior. Then I took a look at the source and was stunned. I had almost 700 lines of code (and comments) and it wasn't well organized. So, I set out to start adding regions to the code to separate different behavior. The last sentence should have raised some flags. Regions to separate behavior? What happened to the cohesion of my grid view? I seem to have lost sight of ......
Posted On Monday, March 24, 2008 10:06 AM | Comments (5)
Filed Under [ Agile ]
I introduced my boss to Subversion recently, and of course he almost immediately had a problem. It turns out that as soon as he added his computer to a different domain Tortoise wasn't working on his existing projects. My guess is that it had to do with the Computer Name change. The symptoms he saw as that Tortoise was not recognizing that he made changes. In fact, neither the Update nor the Commit menu options were showing up. Tortoise was clearly confused. We tried a number of things including ......
Posted On Monday, March 3, 2008 3:07 PM | Comments (2)
Filed Under [ Agile ]
I've been working on the Statement of Work (SOW) for the new project I am involved with. The client is looking for a lot of detail. Initially, I shared my concern about putting too much detail in this document so early in the project. We discussed the fact that we will learn a lot as the project progresses and the SOW could become severely out of date. It felt like I would be wasting a lot of time on the details. I've decided, however, that there are some advantages to this work. First, there have ......
This week I learned a hard lesson. I was at a customer site and assumed that because my boss agreed with the Agile principles and practices that I was touting, then the customer would agree without question. I didn't even make a proper presentation as to the benefits that the customer could expect. Michael Cline said in response to my last post, On Agile Island, "the customer cares about one thing. Does it make my life easier?" I shared various features of Agile, but I did not really address the ......
I am working on two new projects. On one of these projects I am the only resource. I am responsible for obtaining user stories from the customer, testing, development and deployment. The only thing that is managed by someone else is the priority of the stories. There are a couple of things I noticed that is different than Agile team experiences that I have had. First, while it may seem that this situation greatly simplifies communication, it is still of utmost importance. What I mean by this is that ......
I was talking to a former coworker and good friend of mine today. He suggested that I include, in my blog, my experiences of working from home. At my new job I am working from home almost every day. There are certainly many benefits (like fewer trips to the gas pump), but there are also some drawbacks. The most obvious drawback that I have already encountered is the difficulty in collaboration. Essentially, this is part of the reason I started this blog to begin with. I am new to the bubble-boy environment, ......