Consulting, Agile, Estimation oh my!

March 19, 2009

I need to set things up by painting a picture for the current situation I live in....I've lived in the consulting world in previous lives and I find myself there again. Until recently, I had forgotten about estimation spreadsheets and the other tools that most consulting organizations use to estimate work. Estimation, no matter what tools you use, is not an exact science. Unfortunately, most developers, etc. continue to perpetuate the idea that they can accurately estimate a large body of work if they can just get enough detail. The reality is that your estimate actually gets worse the more effort you put into "getting the details".

Let's assume that we agree that you can't truly define what is needed in your next software project. If you can't define it and it's not a repeatable/automated process then why would you use a linear/non-changing process to estimate it? You shouldn't. As an industry we have to begin to move (and I believe we have) to an empirical process that is adaptive and capable of change. Why? Because that is reality - requirements have changed on every software project I've ever been on, read about, or heard of.

So, what is this adaptive empirical process that most people are turning to? Agile/Scrum. Ok, so let's agree that Agile/Scrum is the process we want to move to. Let's now introduce the fact that our projects are "external" or are written for customers who are not a part of our company - we are a consulting organization. I believe this introduces a layer of complexity that may not be found in your traditional IT organization that exists to support the business in which it is found.

Here is where I am at now:

  • How do you transition a consulting organization away from estimations done the "old" way? I mean, how do you begin to estimate in a way that is Agile/Scrum friendly?
  • How do you educate customers, who may or may not have any idea what software development processes are in use today, about Agile and the need for an empirical process that maybe doesn't fit what they do know or have been told in the past?

I don't necessarily have the answers but I hope to be answering some of them on my future projects. I'll be sure to post back here as I go. In the meantime, if you have suggestions or experience with the two questions above then please do comment!

 

Are you being fair to your developers?

February 27, 2009

 I've been around software development long enough to know that too many "developer leads", "architects", etc. are not being fair to the team of developers that they work with. Why would I say that are not being fair? Well, there are probably many reasons if you were to analyze dev shops at length. However, a very obvious issue, that can be resolved easily, is what type of "day" you are using when estimating the completion date/schedule for software projects. I'm not even going to get into the issue with actually attempting to come up with a hard finish date for a software project (before it has started) - there are many books which discuss why you are lying to yourself if you put much stock in a hard date.

Let's look at "day" for a minute. Do you ever have a doctor/dentist/chiropractor/*tor appointment during working hours? Do you, your kids, or significant other ever get sick such that you have to miss work? Do you ever go on vacation? Perhaps you decide that you are not the smartest person on Earth and that you could use some training. All of these things must be figured into your iterations/schedule for the project. What about all the other "overhead" like answering the phone, reviewing code, interviewing, etc.  Leaving this stuff out of the schedule or, even worse, assuming that "they will make it up" is just not being fair to the team or the customer/end user.

Ok, so what do we do then? We should take a look at "ideal" time and "elapsed" time as it is discussed in Agile Estimating and Planning. Ideal time is just what it sounds like - ideal. As in, no one goes on vacation, has training, gets sick, etc. Unfortunately, ideal time is what the vast majority of people I've worked with (and I believe that is an accurate generalization of many developers) would use when building out a release schedule for a software project.  

In Agile Estimating and Planning they use the analogy of a football game and it's length. That is, each football game has four 15 minute quarters. One would say that in ideal time the game would last 60 minutes. In elapsed time, or time that actually passed on the clock, the game will take 150-240 minutes (depending on the level of football) because you have lots of other things going on (time outs, clock stoppage as part of the game, halftime, etc.). As a I husband, I'm not being fair to my wife's schedule when I tell her that I'm going to watch this football game and it is only going to last 60 minutes. Would I technically be correct? Yes. Would I be accurate in my estimate? No, of course not. We essentially do the same thing with software.

So, here are my requests:

  1. If you are a person who makes estimates then ask yourself if this is the only thing you will be doing during the length of your estimate and does your estimate take into account the "overhead" in your life and work environment?
     
  2. If you are a person who routinely asks a developer "when will this be done?" then please follow up their "five days" answer with "Is that ideal days as in you don't have anything else to do or does that factor into account that you do lots of things?".

Thanks!

 

You have to improve

February 25, 2009

So, interestingly enough I've found that I'm busier now (unemployed) than I was when I was employed. I mean, between the 1,000 page 'honey do' list, technical research/upgrades (as in upgrading my knowledge), and interviews/job hunting I'm staying ridiculously busy - I'm not complaining, just saying.

As part of my hiatus, I'm taking advantage of the time to upgrade my skills and do some hardcore learning. I should be clear that I'm a life long learner and that I believe that you'd find there is a common trait among those who are successful in most things in life and that is that they never stop learning. This time in my life happens to be a very specific period where I'm taking advantage of that characteristic to come out stronger on the flip side.

I'll give the short list of where I've focused my efforts the last ten days....

  1. VMs with Windows XP, Vista x64, 2003 Server, and 2008 Server. I've set them up as great playgrounds (SQL across the board, etc.) for development where I've been experimenting with a bunch of different things. VMWare on my iMac FTW.
     
  2. I'm at various stages of completion with a couple books:
    • Agile Estimating and Planning by Mike Cohn - the more I learn about the Agile process the more it resonates with me. I can clearly see though that "real life" tells me many development shops will be most successfully with a "hybrid" approach that includes Agile principles.
       
    • Clean Code by Bob Martin - Uncle Bob completes me. If you haven't read this book before then you need to go buy it now. I've been a fan of SOLID principles since I learned that someone had put concrete rules around things I'd learned in practice. Clean Code provides even more concrete rules around things I've seen/experienced but it also has taught me about a whole bunch more code smells than what I had stored in my tiny little brain.
       
    • ASP.NET MVC (draft) by Stephen Walther - I love that Stephen is throwing the draft out there for people to review before it is published. I can see that he's getting good feedback in the comments and we all get to benefit from very well written content on a new technology in the meantime! I'm really digging what the ASP.NET team has done with the MVC support in ASP.NET. 
       
    • Python Web Programming by Steve Holden - There is so much to learn about languages, patterns, etc. that exist outside of the "Microsoft world". So, I've always made it a practice of picking up languages, patterns, etc. that are not commonly used in my little world as a means of expanding my horizons. Python is not all that bad. =)  The book is on the old side but I already had it in my collection so I just went with it - been reading web stuff that is more up to date to fill in the gaps.
       
  3. Converted from PC to Mac. I've had an iMac for a little over a year but I used it mostly for movie editing, etc. I'm now a full time Mac user.  Next phase is to get my iPhone (what, oh that's right, it's my birthday in two weeks...hmm) and then I will have officially chugged a pony keg of the koolaid.

Thank you Telligent

February 14, 2009

Like many ex-Telligenti, I was layed off on Friday. It hurts. It's unexpected. It's a reality that I've never experienced before. I got my first technology job three months before I graduated from college and I've never not had a job (not for a single day) since that time nine years ago. So, when I hung up the phone with Rob and Candy I had entered in to a territory that I honestly thought I'd never be in. I'm sure many of the folks who were layed off yesterday have similar stories. 

I wasn't devestated or anything like that but I have a better understanding of the effects of being unemployed, even if I've only been in that state for 30 hours. I mean, how does a part of you not feel like a failure (at least in some small way)? How do you not feel a little depressed? You quickly realize how important it is to build a wide and deep personal network. You realize how important your relationships are with your now former employer as well as employers of the past. Hopefully, you turn the corner quickly and realize that you are now presented with an opportunity to do something new and exciting again. I've moved to the "new and exciting" stage. I'm chatting with old friends and some local CIOs about opportunities (if you have opportunities you think I'd be a fit for then I'd love to chat - alowe at aspalliance.com). It's a good thing that Telligent hasn't yet achieved total world domination so there are other innovative and exciting companies out there in the world. =)

After putting the boys down to bed this evening, I began to reflect on many things in my life. I spent some time thinking about my time at Telligent and just how lucky I was to work with such great people. I always told non-Telligenti that I loved working at Telligent because the people were so smart. I like NOT being the smartest person in the room (some of you are thinking...that isn't hard for Alex) and that was always true at Telligent. As smart and as everyone was, what really makes Telligent special is that in addition to being brilliant the people are genuinely good people

I remember the first time I went down to Dallas after the new office had just opened up. Delia picked me up from the airport. How could you not think Delia was one of the nicest people you'd ever met? I know I did. Delia, myself, and a few others who had just arrived went to lunch (my first exposure to TexMex - mmm, good) and then headed in to the office. The office was about 1/5 (shoot, maybe smaller) the size that it is today. At least at this point they had furniture! On that trip and subsequent trips I spent many hours in a conference room that was named after a programming language. How many people can say that? =)

I remember the first launch party. Delia was frantically trying to get everything (hmm, most of it was liquor related..?) ready because it was the first "party" at the new (at the time) offices. We had a blast that night. I vividly remember a moment as the night was coming to close when there were only 5 or 6 of us still in this conference room where a bunch of tables had been set up. Rob was sitting there with us and we were just chatting about things. At that time, I remember thinking that when I met Rob at Microsoft I never thought in a million years that we'd end up sitting in a room chatting under the circumstances that existed at that time. Crazy!

I remember the PDC when we had our first conference booth. Technically, it was a Codesmith booth but Telligent was representin too. Again, Delia was running point on getting everything ready for what was her first trade show event! Setting everything up....scanning business cards...hanging with everyone - good times.

There are so many stories that I could tell but I'm not up for a novel tonight. Oh, and some people's wives would probably not be happy either. =P

For most of my time at Telligent, I worked on the "ASP.NET Project". I worked with great devs who picked up my slack and often made me look good when it was probably debatable on whether I deserved it or not - thanks guys!

Did I mention yet that I worked at Telligent two different times? Yeah, I did. The first time around I was employee #8 or #9 I think. I left to take on some new challenges after two years as a Telligenti. So, in a weird ying and yang kind of way, I suppose it is poetic justice that the second time I left it was because I was asked to leave. =)

I'll miss my Telligenti and fellow ex-Telligenti. I'm thankful for the memories and I hope that the slimmer Telligent continues to deliver top notch solutions like it always has. Thank you for everything Telligent!

Creating user education material

February 10, 2009

I've been fleshing out a bunch of "how to" walkthroughs and looking at tools that most effectively get the message across. One that I've been using recently is Articulate's Engage '09 product. It is intuitive and provides some great templates for building a wide variety of types of content. I looked specifically at the "Process" template as it generally fits "how to" style content the best. I like the fact that there is less of a need to narrate every video using this tool. Recording a process is fairly simple and straight forward. Recording the process with narration is much more difficult if you don't want it to sound like you are making it up as you go along. I use Camtasia to record the short process oriented videos and then Engage to do the rest. 

Here is a sample of the output. I'd love to hear what you think about the final product.

A trip down memory lane with Community Server

February 09, 2009

 I just finished whipping up a little article that chronicles the release build numbers and dates for most of the releases of Community Server past and present (this helps folks who are upgrading and unsure what version they have, etc.). I say "most" because there is likely a beta or release candidate (and "private releases") that is missing. Let's just say the documentation process has been lacking over the course of the product lifetime so guaranteeing that you got them all would be very difficult. At any rate, there is a lot there.

So, when did we (Telligent) release Community Server 1.0? The answer to that question depends on if you are looking for the first release of any kind or the first RTM release. If you are looking at the first release of any kind then the answer would be that we released Community Server 1.0 Beta 1 on November 17, 2004. If you are looking at the first RTM release then we released Community Server 1.0 on February 18, 2005

When the first beta dropped, ScottW had the following to say:

"It's still a little rough around the edges, but the core pieces are in place. We now need to clean up the text, wire up a couple of the features, and hit the bug list at full speed.

As for blogging, I believe it is missing a couple.Text features: Key Words, Atom support, and the SimpleBlogAPI.. All of which should be in the final release (let me know if you find anything else missing :)"

What did these early betas of Community Server 1.0 look like? One word - sweet. Ok, maybe sweet is being really really generous. See "sweet" for yourself below.....

Early Community Server Beta

In the words of ScottW, the focus of Community Server 1.1 "...was performance and bug fixes." Community Server 1.1 (seen below) was released on June 16, 2005.

Community Server 2.0 was released on February 20, 2006. Community Server 2.0 ushered in the following major changes/additions:

  • the first move in the "unified media" direction with the "file gallery"
  • RSS Reader - oh yes, it's true.....we had an RSS reader integrated into the product which was extremely innovative at the time.
  • Tablet support in the content editor
  • RSS enabled search
  • Forum personalization
  • Embedded video support in posts
  • Member points

 

Even with a slew of new features, I think the biggest shift with 2.0 was that it ushered in the era of "the add-on" (KenR was busy!). With 2.0 came the following add-ons:

  • FTP Gateway
  • Enterprise Search
  • Email Gateway
  • Single Sign On modules

These came along side the NNTP Gateway add-on which was released around the 1.1 timeframe. Email Gateway, in particular, was and remains a game changer because of its ability to merge the worlds of internet/intranet discussions and email discussions. 

 

Here is a shot of a CS 2.0 beta:

Community Server 2.0 Beta Screenshot

There was a lot of movement on the UI between the beta and the RTM. At one point, we lost our minds:

What were we thinking?

 

Here is a screen shot of the RTM release of Community Server 2.0:

Community Server 2.0 RTM Screenshot

 

Community Server 2.1 was released on August 9, 2006 and it brought with it a bunch of new stuff.  Some of the 2.1 enhancements included tag support, badges, more reports, enhanced editor, simple content management, content mirroring, and feedburner support. The overall look of the Community Server UI didn't change much in this release.

Community Server 2007 was a beast. We tried everything to get it out the door...including cloning ourselves...

Rob and Evil Rob

Community Server 2007 was released on April 16, 2007. The biggest "new thing" in Community Server 2007 was probably the Chameleon engine. Chameleon is a template based markup engine that powers most all of the user interface in Community Server today. BenT wrote Chameleon and while it isn't always the easiest thing to grok at first, it is still much better than what we had before. Here is a screenshot of Community Server 2007.

Community Server 2007.1 was released on September 18, 2007. Here is a screenshot of Community Server 2007 SP1:

Community Server 2008 was released on April 15, 2008. Here is a screenshot of Community Server 2008:

Thanks for the pic DanH.

So, there you have it. We've made it all the way to the current release which is Community Server 2008.5 Service Pack 1 which was released on October 29, 2008. It looks similar to Community Server 2008 from a user interface standpoint. 

In September of 2008 we launched our newest product called Evolution. Evolution is "Community Server inside the firewall". Evolution has caught on like wildfire! Here is a screenshot of Evolution 1.0:

Evolution has all the great feautures of Community Server but they've been stitched together to make social computing inside the firewall a reality.

We're hard at work on the next version of Community Server v.Next and Evolution v.Next and we can hardly wait to start showing you screenshots of what things will look like. Stay tuned.

Mockups for everyone!

January 21, 2009

I have tried Visio and many other mockup software over the last ten years. Recently, I tried Balsamiq Mockups for Desktop software. I think the greatest endorsement and the simplest way I could describe my experience is with this statement:

I was able to create a realistic looking mockup for a webpage in about ten minutes from the time the Balsamiq installation was complete. 

I have used Visio probably 50 times and I can guarantee you that I could not create the same mockup in less than a few hours. Balsamiq just makes sense. Here are the things I liked about it:

  • It has virtually all of the UI widgets one could expect in such a tool. There is one missing I'll point out in what I don't like.
  • The positioning bars that automagically appear to help you line up your UI widgets is great.
  • You can save to different formats which makes sharing with your team pretty simple

There were two things I didn't necessarily like:

  • There is no bulleted list UI widget (hat tip to Terri for initially pointing this out to me)
  • The demo has nag screens too frequently. I mean, if you limit the feature set (i.e. you can save as, etc.) then when people really want to do something useful they will get the point. Showing the nag screen when you are just using the design surface doesn't make sense to me.

Overall, I'd highly recommend Balsamiq for anyone in the market for a mockup tool.

Things I point to often...

January 21, 2009

Breaking The Big Blog Break....

Here are a few articles, sites, etc. that I find myself either referencing or pointing others to often:

 

You can't measure LOLs and ROFLs...

December 03, 2008

With the somewhat recent release of Harvest 2.0, I've kind of had analytics and measurement on the brain. I've been reading a fair amount about social networks and measurement the last few weeks. A couple of interesting thoughts:

  • Should we measure ROI? I mean, is that the right question. As Josh Garner of the SEO Factor put it, should ROI really stand for Risk Of Ignoring? I mean, is that a better question/paradigm to explain the value proposition around social networks/software/media? Essentially, we'd be saying that social media is just a game that everyone has to play. Why do you have play? Well, because everyone else is playing and the risk of ignoring your customers (under the assumption that your competitors are not ignoring them) is too great to just sit on the sideline. I understand the premise and I think there is some truth to it but I suspect that at the end of the day we'll all be saying that there is a real Risk Of Ignoring but that there is some measurable return on our investment that can be seen by tying social network activity to sentiment about our product, product sales, and so on.
     
  • For those of you that are all up in the micro blogging craze there is some interesting thoughts on measuring twitter engagement here.
     
  • Great post on analysis paralysis and the obsession of ROI and social media. I think this post summarizes many of my thoughts around ROI and social media. We all agree we need to measure it but we're still defining what is important to measure. I believe Harvest 2.0 is the best of breed when it comes to measuring social network activity based on currently recognized community patterns.

xbox live and Netflix Watch Instantly

November 20, 2008

The lunch time posts will resume next week. Been traveling a lot but don't worry because I have been eating lunch.

Got the new xbox live stuff downloaded last night and setup my netflix account. The kids have been streaming shows today and it works GREAT! For the price, they have already watched enough movies to more than justify the cost of netflix - it's only been one day of this setup! +1 for xbox live and +1 for netflix.

If you don't have an Xbox but you are looking for a way to justify the cost, the fact that it can stream many netflix movies at no additional cost (assumes you have a netflix account; $9/month if you don't have netflix) is a great "feature".

Back to Top