Tuesday, December 23, 2008
Thursday, August 07, 2008
Software Estimation and Agile MethodologyMy Response:
I am new to Agile Methodology. I am working on a project which is following Agile. I have the following questions:
1. What are the estimation techniques for Agile?
2. Typically which type of Projects use Agile?
3. In the name of Agile, can people procrastinate every single decision during requirements gathering? For example, we know what is expected but we don't know the most atomic level of the requirement. Say, I know I must build a webpage, but I don't know the validation of the webpage.
I think Agile principles can be an antidote against procrastination. I would agree with the thoughts expressed in this post. If you continually drive to keep the design and implementation as simple as possible and don't get overly concerned with anticipating potential future needs, there is nothing left to do but build what you know is needed now.
This hinges on the fact that scope is always negotiable as long as quality remains consistently high. Therefore, developers can feel confident delivering features as required without excessive buffering of estimates and over building solutions just in case something may be needed in the future. When and if it is needed, it can be built, and the customer will defer other scope items because they have learned to trust the development team due to consistent and frequent delivery with high quality.
You may appreciate some of the points made and links posted on my blog entry which captured the introduction of Agile practices at my company.
Another important factor in your scenario is the provision of a "Customer in the room". The process works best with a high level of interactivity between developers and end-users or a suitable surrogate that can effectively direct the developers through the micro decisions (like field validations).
Many businesses balk at providing a true customer in the room because of how valuable their time is. I think this is short-sighted and would always expect better results with direct customer interactions vs. large formal requirements documents.
Thursday, February 28, 2008
Testing hours as function of development hours.My Response:
Does it make sense to say that number of testing hours in a project should be a function of the number of development hours, such as
TestingHours = X% * DevHours? If so, what should X% be. What considerations would make it be lower or higher. Are there industry standards around this?
In a word - no.
There are just too many variables at play of which some will include:
Having said that, I expect that most teams come to a sense of comfort with a testing hours % of development that works for them and can be applied as a rule of thumb as new projects are conceived. Take the last successful project of similar size / complexity etc...
- type of testing (functional, regression, performance / stress /load, usability, automated / manual, UI / API, back end / white box, browser / multi-platform compatibility)
- strength of your requirements definition process / artifacts and likelihood of disagreement between the business and the developers which QA must arbitrate. Also, how soon QA is engaged in the project life cycle.
- strength of the bug list triage and management process and health of communications between all involved. Related issue: is any part of the project outsourced / off-shore.
- system complexity
- maturity of system (getting version 1 through QA may take more effort than getting version 2 out depending on the level of innovation between versions)
- strength of development unit and integration testing (manual or automated)
- quality risk assumption comfort level / industry quality requirements (medical device / financial services / flight control would be examples with high quality requirements)
- project time line
- time line compression (the more a project time line is compressed from its natural length - overall or in any of the phases before QA), this is a paradox though as the forces that tend to compress a project time line usually are unforgiving of long QA cycles. You can bend a time line but eventually the project will break.
- number and type of users / diversity of their activities with the system (related to system complexity)
- time to market as a strategic need to break new ground, if so I would rather reduce the feature set than compromise on quality
- QA build frequency - test concurrently as development proceeds rather than wait for the final build. Some rework will be required but this is well worth the many benefits.
- headcount ratio between development and QA
- seniority of staff in BA, development and QA
- development and QA tools
- UAT / beta / release candidate process factors
- prototype activities / early access releases.
- project manager strength (natural ability, experience and empowerment to minimize scope creep) and attention level. Same for software architect / development manager and business lead if they are not the PM. Product of this factor for all three roles. Apply a communications frequency and health factor to that.
I've never thought of it before but wonder if you could apply the concepts of XP story points and velocity as an estimation tool for future work. This would fit with the statements above about the factors that are unique to your environment and would require measurement before use. You would write stories for testing (separate from development stories) and measure velocity. I would not look for a correlation between developer story size and QA story size or between developer velocity and QA velocity, although they may appear to emerge, I fear they could be deceptive.
What do you think? Respond through comments or to the LinkedIn Question here.
Sunday, June 24, 2007
What a difference 4 months makes. My LinkedIn statistics have improved by 123 direct, over 26,000 2nd degree and 750,000+ 3rd degree connections:
The ratio of my 2nd degree to 1st degree connections on LinkedIn is now 164, in February it was 146. I believe this is related to two causes:
- direct connections with greater variability of relationship (not all from shared employers) so there is less overlap in the 2nd degree connections
- time. Akin to passively managed index linked investments, time is on your side. So, invest now young fella and stay invested. One day you'll be able to retire richer than you can imagine.
Since my previous post on this topic I have begun using Facebook as well. After long ignoring all but LinkedIn, Facebook is the first of the friendster / myspace / hi5... social networks that has value for professional networking with the added spice of personal profiles and interactions. I was first attracted to Facebook through a blog posting of one of my professional contacts discussing Facebook groups with professional appeal. All of the local user groups I belong to have representation on Facebook and it is a great place to discover like minded people and have engaging conversations.
I have tested LinkedIn answers vs. Facebook groups for harnessing the wizdom of crowds and so far am much more impressed with the results achieved on LinkedIn. Both LinkedIn and Facebook are now moving in on the space of domain specific forums / bulletin boards where crowds gather to discuss issues of importance to them. I believe that this should be encouraged as it scales much easier to maintain profile information in few places which can be leveraged in many scenarios while interacting with different communities of interest.
There is a very high percentage overlap in my contact base between LinkedIn and Facebook. But I expect to always have more casual friends on Facebook (not in the way that I will network openly with potential professional contacts on LinkedIn) and more professional contacts on LinkedIn.
ProfileLinker has a list of other social networks that I participate in.
The benefits of networking are many, but don't forget to protect your critical ID info for online privacy.
Remembering not to forget the real world of offline social networking and events, today I am looking forward to a Bar Mitzvah and Ariyeh's 2nd birthday party!
Labels: social networking
Tuesday, June 19, 2007
I'm not having enough fun
However, how many of you have searched for your profiles on ZoomInfo? Zoom info currently boasts profiles on 36,479,288 People and 3,474,916 Companies. If you use LinkedIn, ClaimID and other sites to maintain a public profile then ZoomInfo is one more to consider.
In my case, there are 2 other Michael Ben-Davids (and neither is the other IT guy in Toronto by the same name, A.K.A. Moran - who once got me in trouble when his resume came through on my boss's FAX machine). One is a semi-pro soccer coach and the other is a professional dance partner. Seems I lost the interesting career lottery to these folks.
Ah well. There's always a chance life will get interesting, without making a tragic news leading story. Hey - if I've learned anything from all those genie in a bottle, 3 wishes, bedtime stories it's to be very careful what you ask for and include lots of qualifying statements.
Here's hoping you have an interesting day - if not career :)
Thursday, May 10, 2007
Daily Stand-Up / Scrum Kickoff
Agenda:I've not specifically gone to any lengths to "sell" Agile, Extreme Programming or Scrum. Some of the values and practices were discussed briefly in my Team Introduction. Beyond that I am trying to foster adoption without any great fuss. This meeting is more Stand-Up than proper Scrum as we have not yet begun moving toward sprinting in iterations and working off backlogs.
1) Accomplishments since the last meeting
2) Planned activities before the next meeting
3) Identification of any blockers that are preventing progress
The result should be the following benefits:
- knowledge sharing / reuse scenario identification
- quickly identify sore spots that require further deep dive follow-up meetings / actions
- dynamic balancing of work assignments as people have availability and projects can benefit from additional resources that are not dedicated to them
- build the team work / sense of commitment to each other
Please be on time, we will start promptly and this should only take 10-15 minutes once we get into a rhythm. The idea is not to talk a lot but to say what needs to be said. Resist the urge to get into detailed requirements or design conversations - this is quick status and identification of issues. We can decide to have a few people hang back and get into deeper conversations once the main group meeting is complete. The remainder of the hour is reserved for that purpose so everyone knows there is a set time for these things if they need them.
- http://en.wikipedia.org/wiki/The_Chicken_and_the_Pig (follow the external link to here as well: http://www.agilemanagement.net/Articles/Weblog/ChickensandPigs.html)
- Big Visible Charts (http://www.xprogramming.com/xpmag/BigVisibleCharts.htm). The release planning chart is an example of that and we can do more as we go… A corkboard will be put up for QA and Support to fill with status and issues that development must address.
- http://www.controlchaos.com/old-site/implem.htm and http://www.effectivemeetings.com/teams/teamwork/scrum.asp (focus on the scrum philosophy and meeting style - less on the sprint iteration, something we might contemplate in the future but not immediately).
- http://www.mountaingoatsoftware.com/daily_scrum (especially the bottom section on impediments / blockers).
Developers and QA are the Pigs. PMs and business stakeholders are Chickens. Support are Pigkens (we'll work on that)… Obviously, everyone is fully committed to all of our initiatives and we don't mean to imply otherwise. This is mainly a tool for development and QA to plan and track our work effort and ensure we're each doing the most important things we can be doing on a daily basis. Having others attend the meeting should provide mutual benefit in knowledge sharing and issue identification / resolution and will naturally provoke healthy follow-up conversations.
This is an open meeting. Everyone can feel welcome to forward this invite to other chickens and pigkens as long as they are told to stand on the outside of the pigs and observe silently unless spoken to. We can do a quick hand raise at the end for chickens to ask questions. We'll work on the format as we go…
I expect the result will be that it becomes easy for anyone to quickly see where we are and where we are going as a team and what we need help with (blockers).
I hope this might help someone else get over the early hump of adoption. The benefits demand a concerted effort...
Thursday, April 26, 2007
Java Framework Stack: Spring / Hibernate / Tapestry
A snip from a recent message to the development team at GS1 Canada:
I'm especially interested in trap doors and negative experiences you were unable to workaround.I propose the following for new applications (we can have a separate discussion on if / when / how we migrate existing code).- Maven (consider for project dependancy release management) and/or CruiseControl or similar for build automation / continuous integration server- JDK 5 (to at least gain the benefits of generics and metadata / annotations). My gut feel is it might be a little premature to use JDK 6 right now.
I believe all of the above are stable enterprise quality frameworks with a critical mass of developer support and strong reference resource availability. It also seems that the particular combination of frameworks play well together and have been documented to be a good combination, see Beginning POJOs (combining Spring + Hibernate + Tapestry).
My motivations for this include:- reduce design risk / complexity / time to develop and debug custom code that provides non-domain specific functionality (logging / tracing / profiling, database access, transaction management, pooling / caching, security, configuration, UI templates etc...). Save our innovation efforts for domain specific value added use cases.- ease the ramp up for new developers by leveraging industry recognized frameworks which are either readily available in candidates or easily learned
Also, what version numbers of these would be a stable combination that is recent enough to leverage JDK 5 Generics and metadata / annotations?
Feedback: please comment here or contact me.
Happy, highly leveraged, coding...
Tuesday, March 06, 2007
My thoughts are:
With a bent towards code slinger service providers...
In my travels I have been passively collecting a list of resources to be used in this manner and was optimistic that starting small on one or two of these and collecting strong rating / feedback would be a good approach.
My caution personally and from advisors has always been the economy of scale and whether I could expect to win many bids if they came down to pricing vs. offshore consulting houses or individuals.
The key then is to either compete primarily on capability / niche (very current or very dated but still sometimes required) skill sets vs. price - at least until a strong record has been established. Another alternative is to do business development outside of these sites (or between them) and farm out the bulk of the crank turning to an offshore consulting firm using these sites if your skills lean towards client facing technical / project management. Just build in buffers to the project plan to account for the extra handoffs, communications and possible rework required. Know yourself though, if you're an overly perfectionistic OCD plagued code artist you might not be successful representing other people's work at your accustomed level of quality / elegance (I could also recommend a good therapist).
In practice I have not yet had (made) the opportunity to diligently pursue this plan as I've since decided to refocus on being an employee - will I ever learn??? When I was focused on self-employment business development I found that knowing people was much more important to finding and winning bids than knowing things or pricing level. That would argue strongly in favour of the argument in your blog posting.
One tool to use in building a validated portfolio of work that can be referrenced from any of these sites in your profile is claimID.com (mine is http://claimid.com/mikebd).
Sites I've bookmarked - YMMV:
Monday, February 19, 2007
Originally posted 2007-02-19:
I have many hobby interests which have occupied my free time in the past. If you asked me what I would like to spend my free time doing (outside of work, family and spiritual pursuits) I would say squash / racquetball, hockey, electronics circuit building, working on my stamp collection, coding for fun, coding for profit, reading, gaming...
However, to describe what I have actually spent free time doing recently, I would say that Social Networking - especially on LinkedIn has dominated my spare moments. In 5-10 minutes a day and the odd day of 30 or so I have grown my direct connections to 369 and that quickly multiplies to over 50,000 2nd degree and over 2,000,000 3rd degree connections.
I am facinated by the 6 degrees of separation type observations of how small the world is in this information age. I try to practice Open Networking to link with like minded people and help the collective where I can with referrals. I've seen the value of this with interesting contacts being made by people that discover my profile through their network and in making targetted requests of my network which return results any sales/marketing team would drool over.
I made a decision a long time ago to pretty much ignore all social networking sites other than LinkedIn as I prefer to have one strong network rather than a bunch of weaker ones. LinkedIn caters mostly to professional networking and can be a very good tool in career development.
Please drop me a line if you'd like to join my network.
Labels: social networking
Sunday, February 11, 2007
Yahoo has joined the OpenID universe: http://openid.yahoo.com/, use your existing Yahoo or Flickr account to login to OpenID enabled sites.
Originally posted on: Feb 11, 2007...
I won't rant about all the usernames and passwords I need to keep track of for my personal and professional use because I can already see everyone nodding.
In the past, Microsoft tried to solve this problem for the masses with their Passport authentication service (now known as Windows Live ID). The idea is that you maintain one user ID and password with a trusted site and other sites can delegate user logins to the trusted site. Anyone with a hotmail account automatically had a passport. The problem here was it was Microsoft and they were not able to overcome the paranoia / distrust / hate / etc... that many in the industry have for them. Also, if I recall correctly from when I considered adding this feature to Ticketmaster's ReserveAmerica.com, Microsoft was charging for the use of their API. However, many took notice and decided that a consortium of industry leaders should collaborate on such a service.
Thus was born the Liberty Alliance and their Project Liberty. And so I was heartened, it will take some time but this effort seemed to have some significant backing and should have revolutionized the way we manage our online identities. I was patient, every time I needed to create yet-another-login on a new site I would recall the promise of Passport and Liberty and wonder - what ever happened? As the years passed, patience turned to apathy as I gave up hope that any sites I care to visit or enterprise services I use will adopt Project Liberty. Perhaps this will yet emerge as a useful platform, or is rampantly being adopted - just not by the 7,543 sites and services that I seem to need to track my IDs on.
Today I see new hope!
Not from a press release, not from an editorial article but from a real live site (Simile Wiki) that is using an existing platform which seems poised to capture critical mass in this space.
OpenID exists today and you have your choice of authentication providers to maintain your trusted account with. It seems that adoption is still early but shows much promise with authentication services and libraries available. If you have a Technorati account then you're all set to play, just login to Technorati and then provide your profile URL (http://technorati.com/profile/<your account name>) as an OpenID identifier into any site that allows authentication using OpenID (e.g. http://www.openidenabled.com/).
I've found that the Technorati authentication is a little buggy, it claims an error but one or two browser reloads corrects the problem. This will likely get corrected soon and there are other service providers to choose from if you wish. Also, you can find implementations of OpenID libraries in most popular web development languages if you prefer to run your own server.
ClaimID can be used in the same manner as Technorati and I have found that the site I tested was able to reconcile two OpenIDs to the same account - how very cool... ClaimID authentication seems to not suffer from Technorati's bugs but does not currently support as many stored profile attributes for distribution to trusted sites when creating accounts.
Once again, the FOSS community demonstrates how it can overcome 300 pound gorillas and bring new technologies to market quicker than an industry consortium.
Hopefully this will be one way technology can begin simplifying our lives as intended, a promise long unfulfilled. Do your part by participating as a user and site developer!