Showing posts with label Agile info. Show all posts
Showing posts with label Agile info. Show all posts

Saturday, October 3, 2009

Pair Programming in an Office Cubicle

I'm really impressed with development teams that pair program, it alleviates a lot of development pressures. Companies like Hashrocket are leaders in pairing practices, In his post Obie describes what's "required" to equip your pair programming environment.

Yeah, all that extra equipment is nice, but what if your team is locked into a typical office cube setup?

  • Is it possible to comfortably pair in cubicles?
  • What if you can't afford wide desks and a bunch of huge monitors?
  • Must pairs be co-located?
  • Can a typical office setup accommodate pair programming?



Check out this photo of my most excellent team-mates arranged in typical office cube fashion.


I like these cubes, the low walls make it easy for us to communicate.


Yup, even cubes can be can be conducive to communication. Meet my cube neighbor Rach. See how easy it is for us to converse? So, let's do some pair programming in the cube!


Oh, I hear ya... "how can you share a monitor across a cube?" MS Team Viewer to the rescue! Team Viewer is Microsoft's screen sharing app, it's easy to use, free to try, secure and IP based. Team Viewer faithfully reproduces your screen on your pair's monitor, plus it allows your pair to drive from where they sit with their mouse and keyboard.

Now, you're both viewing the same image and you're conversing face to face, what else do you need?

Ok, I hear ya..."how can my pair see me pointing at their egregious coding error on the screen?" ZoomIt. This is a free utility from TechNet that turns your cursor into a pen, so you can draw on your screen, mark-up and highlight any area on your screen and wipe it clean when you're done

Pairing on two machines is way better than one. Suppose you need to IM a quick question to your stakeholder or check on the progress of the build; your pair can keep stubbing out the new class while you Google up the crazy syntax on that overloaded method. This setup creates the best of both worlds.

Speaking of the world; add a headset, webcam, skype and now you're pairing anywhere...with anyone! So, still think you need a 42" plasma and dual keyboards, forget 'em. Now, go forth and pair.

Friday, August 22, 2008

Here at Devlink in Nashville


So far the best session has been the informal experts panel that was held during lunch. Some gems came from the guys on the panel.

After 33 years of changing technology knowing a methodology and language are secondary. More valuable skills are are;

  • the ability to solve your problems...agiley
  • understanding business domain problems and mapping them to the code (ie: developers are no longer coding in a silo, you've got to understand the solutions's "what" and "why")
  • (not really a skill, but I loved this...) subersively sneak Agile principles into an organization (a great story about a continuous integration server hidden under a developers desk)
Really cool stuff.

Thursday, May 29, 2008

Use 'point' estimations only to a certain 'point'


My buddy Jack went to Mike Cohn's Product Owner Certification class. He returned with this great analogy providing the context for "point" estimation and "hour" estimation.


If 2 runners of varying skill are asked to estimate the task of running a fixed distance; the faster runner might say, "that looks like a 15 minute run," where as a lesser runner might say, "no, that's a 30 minute run."


In making disparate time estimates (of the same task) the runners have demonstrated the value of point estimation. Ask the runners to measure the task in terms of points (lets say 1 point equals 1 mile). Now the runners can agree "Yes, that looks like about 2 points." Using points they reach consensus and provide the PO with a sufficiently high level estimate to assist in prioritization and pre-planning.


However, when it comes to sprint planning, start moving from points to hours (this is new from Mike). Like in the case of our runners, the hour estimate is useful in helping the team plan thier work for the sprint. If one runner is faster than another this may help the team members to adopt the tasks they best suited for.

Thursday, January 17, 2008

Stretch Tasks


In Kelly Waters' "All About Agile" blog Kelly says: "Include a bit more than you think can be achieved. It's important to prepare more items during planning in case the team finishes early. These items can be clearly identified as stretch tasks and the Product Owner should not expect them to be completed. These are the things you will only do if the Sprint goes better than you expected."

Friday, January 4, 2008

Agilists at Graffiti labs


Here Bre Pettis hosts Michael from Graffiti Reasearch Labs, Vienna. Michael expands on a traditional Agile mantra saying "...release early, often and with 'rad' music..."

No more "done"


I dislike the word "done" because the defenition can be so subjective. For instance, my idea of "done" may not be your idea of "done." Instead of asking "...is it done?" I would prefer we ask "...does it perform?"

Wednesday, December 12, 2007

Pragmatic Webinar

Steve Johnson presented a webinar on the Pragmatic Marketing site. It was worth the watch for quotes like:

"The real role of an Agile Project Manager is to force the project to leave the building despite the company's best efforts to prevent it."

And "I don't accept the premise of your question."

And this interesting formula: "Evidence * Impact = Priority"

Friday, December 7, 2007

BA's in the Agile process

This dude here is reasoning out the role of a BA in Agile development.

His main point are these;
Developers can't elicit requirements. I agree, not because they can't, but developers should be busy developing. I'm not advocating insulating the developers from the users, but provide them the opportunity to productively develop without the added burden of trying to elicit useful information from the requestor...unless they want to.

Stakeholders can't model and document their own requirements. This is true. If a requestor is not familiar with creating a "user story," or expressing "conditions of acceptance," etc. Then someone (in the BA role) needs to stand in the gap and complete these components of requirements gathering process.

You need analysis experts. I don't agree with this. The developers should be able to analyze the requirements to propose a technical solution. The key word being "should." But it seems as if they push-back, they just want to "know what to code." Not "figure out what to code." What am I missing? I'd like to have another perspectives.

Monday, December 3, 2007

Small iterations


In 10 Successful Criteria For Software Development number "6" under "Success Criteria" is "Smaller Project Milestones." Smaller iterations are being realized as a best development practise outside of Agile.

The difference between TDD and FIT

Here James Shore makes a great differentiation below:

"...Fit examples are not unit tests. Fit examples are just that: examples of a business rule in action, from a business perspective. In TDD, I write tests for every line of code that can possibly break. In my Fit examples, I try to talk about every possible business case. That's a bigger net than TDD, and without TDD, my code wasn't well tested."

James calls Fit "Storytest-driven development" or "STDD" (despite the stigma) I think it sounds like a super Agile concept. So is this where the "user terms of acceptance" from the nebulous "user story" get converted into arguments in the FitNesse wiki? This is a good picture of executable documentation. (Now this is where imagination is needed) How can all the varied and complex features of a solution be represented in a Fit test?

Saturday, December 1, 2007

Agile's biggest weakness...isn't


Tyner Blain blog lists these items being "Agile’s biggest weakness[es]." I don't know if he's serious or not, put none of these seem like legitimate complaints.

He says Agelists "minimize forecasting." I believe that forecasting is not minimized it's optimized. You forecast until you have as much of forecast as you need to move forward. Is there something wrong with that? You don't know what you don't know until you know it, so get there as soon as possible.

Here's the list from the Tyner Blain blog;
1. Most companies today, when they commit to a million dollar project, want to know what they get for their money. - The purpose of agile is fail faster and defer commitment (until the last responsible moment). Spend some money to remove some doubt. Spend some more money to remove more doubt. With each iteration you're getting more "committed" and eliminating the big doubts up front. Always gaining more assurance of success without (over) committing resources. Lean, right?

2. They want to know when they get it too. - Don't we all, but who can say? And how do you know they're right? You don't know without metrics. So do something (complete a user story), see how long it took and you've determined velocity. Now multiply that velocity against the rest of the stories, not only did you get something done, but you've got a real metric.

3. ...they want to know before they sign the check. - That's the wrong perspective, if you're signing a single check for a project then you're over committing. Agile to the rescue - pay as you go, you're never over committed.

4. The less planning you do at the beginning of a project, the less you know about the end of the project. If you believe Occams Razor then the simplest decision is the right one. Too much planning is futile since you don't know what you don't know until you get there. Pretending that everything is (accurately) knowable is folly. Determine the next step, execute and then re-evaluate. Have a loose plan, but don't make it your constraint. Stop going forward when it's no longer fruitful, find a new approach or let it die...fail faster.

5. This is hard for non-Agile companies (or executives) to swallow. No it's not, it's simple to explain and painless to buy. "Hi Mr. Stakeholder, we are only gonna spend what needs to be spent." This does not preclude a budget, it only precludes wasting a lot of time on pretending to know how much a project is going to cost.

6. By minimizing the upfront planning, Agile teams minimize their ability to forecast the pending results. Wrong, agile teams minimize there ability to make flawed decisions based on overly confident forecasts.

I'm really glad that the Tyner Blain blog stated these "perceived" Agile weaknesses in such a specific way. It makes it much easier to refute them. Most Post-Agelist or Anti-Agelists use some vague metaphor, which doesn't really address the project conditions.

Refuting Lean?

How come most bloggers trying to refute Lean concepts and Agile methodologies sound like Durwood Fincher?

Requirements gathering


Some dude says this here

"If you believe that customers are responsible for defining their requirements, you will primarily employ interviewing and 'elicitation' techniques to obtain requirements. The definition of elicit is 'to draw or bring out or forth; educe; evoke.' The customer often perceives this as 'extraction' or even 'extrusion.' Using this method, you are at your customers' mercy--you know only what they tell you. Requirements will almost certainly be incomplete. Even if customers appear unable to define their requirements, you may believe that they are not only able to do so, but that they are responsible for doing so. You may believe that the correct elicitation tools and techniques will achieve success."

It sounds like he's saying customer's don't know what they want. I agree that is frequently the case. Showing them "concepts" can help them see what a potential solution looks like.

Start quick fail faster (be lean)

Kent Beck says this (Tyner Blain blog):
"...customer’s don’t know what they want, we should start building stuff right away, with the expectation that by seeing tangible results (good or bad), they will have epiphanies about what they really want. This approach treats requirement extraction as an emergent process, like strip-mining. With each new layer of mining, we unearth a new set of hidden requirements."

Build first ask questions later goes too far. I think we can prototype (hi or lo-fi) and show customers a vision of what they've requested. From that we can help them discern what they need. This makes me recall a session from Agile 2007, when we demonstrated functionality by each person playing a different role (replicating the technology) and users interacted with the interface. It made for fast process adjustment to user feedback.

Two soft concepts


This may be an interesting article on ROI. ROI is both hard and soft. For an automation hard costs could be a savings of man hours...very calculable and very predictable. Soft ROI numbers should be discounted 60% to 90% according to Tom Pisello.

I jacked this from the Tyner Blain blog: It's where another soft concept is introduced, the concept of utility:
"Agile software proponent Kent Beck argues that people don’t know what they want when you ask them. There may be some scientific support for his argument based on some research cited by Barry Schwartz in The Paradox of Choice: Why More is Less. Schwartz references psychologist Daniel Kahneman’s studies of how people remember events, in an explanation of how people measure and assess utility. To sum up, here’s the flow of events: A person has an experience, and recognizes some satisfaction from it. This is known as experienced utility. This is the function that economists reference when defining the indifference curve. When remembering the event later, a person will remember incorrectly. Their memory of their level of satisfaction is their remembered utility. The problem is that the remembered utility never precisely matches the experienced utility. This poses an interesting problem. Even if we find people who have experienced exactly what we’re trying to analyze, they will be unable to correctly tell us how much satisfaction they derived in the past."

Here's the Tyner Blain blog conclusion:
"The value of a requirement or feature is a function of user satisfaction and the financial benefit of having that requirement implemented. The user satisfaction can not be quantified in advance because we have no framework for reliably predicting satisfaction - even based on past experiences. "

That is very interesting, as much as user's demand certain features without being able to provide a cost justification for their demands.

Friday, November 30, 2007

Project Management Gems

Tyner Blaine has a blog full of great Project Management info. Most of it from an Agile perspective. Check it out. http://tynerblain.com/blog