Featured Whitepapers
- Apples, Oranges, and Acorns - All Agile Development Tools Are Not the Same
- One's Enough for Agile Application Development Management
- Requirements Management 101 – 4 Basics Everyone Should Know
- Tips on Requirements Traceability – Learn How to Control Change and Improve Quality
- Scaling Continuous Integration to Large and Distributed Teams
|
- The Beatles “A Day in the Life” (Lennon & McCartney) People are creatures of habit, particularly programmers: we seek consistency, whether it is the tried and true Waterfall/SDLC method or our morning routine of reading the newspaper with a hot cup of coffee. Companies or projects looking to adopt an Agile process usually begin by asking, "What is the ROI (return on investment)?" and "Will projects be delivered better, faster and cheaper?" While these are excellent management focused questions, they neglect the fundamental concern of an individual developer: "What will my day-to-day look like working in an Agile environment?" Let’s ease this concern by walking through a typical “Day in the Life” of an Agile developer. Specifically, we’ll look at a typical mid-Iteration day (Agile prescribes a Planning/Demo session followed by a one to four week long Iteration). We will examine the developer’s responsibilities, challenges and gratifications. We will also look at typical daily interactions the developer experiences. While there are many forms of Agile, the focus is a Scrum management and an XP engineering process that utilizes local (co-located) team members. Background
Diagram 1.1 – Office Setup Tuesday, Mid-Iteration Agile breaks down a project’s work into small increments called tasks (e.g. “Allow user to spell check their entered text”). The Agile team estimates the duration of the tasks and keeps track of them in the product backlog. The product backlog is subdivided into the tasks for the given Iteration, aptly called the Iteration (Scrum) backlog. Last night I completed a task from the Iteration backlog, so I head over to the storyboard that contains all of the remaining task cards and choose another task. I pick a relatively easy task (estimated time length required: one hour). I create unit tests, code and refactor until I complete the task and have a successful integration build. Within half an hour I’m done and mark the task as complete. 9:15 AM – 9:30 AM Everyone shows up on time today since yesterday the ScrumMaster enforced the rule, “You’re late, you’re lunch”. Let’s just say I didn’t enjoy going out into the cold to pick up lunch for everyone on my tab. We begin the meeting by everyone answering four questions (traditional Scrum has three similar questions): Diagram 1.2 – Stand-Up Questions Stand-Ups are kept focused and short (15 minutes). These questions create a structure to deliver status updates quickly and efficiently. Follow-ups are noted and discussed immediately following the meeting or later that afternoon. A developer named Cynthia begins and halfway though her update Bill interrupts her to discuss his related status. Our ScrumMaster gently reminds everyone that “one person speaks at a time and no side conversations,” and currently Cynthia has the floor. I’m grateful for this reminder because when we don’t adhere to this practice the 15-minute Stand-Up easily turns into a 30+ minute Stand-Up. 9:30 AM – 9:50 AM 9:50 AM – 10:50 AM Test-driven development is another important practice we follow. First we write a simple failing unit test case for the functionality (fails because there is no code yet), then write code to pass the unit test followed by refactor the code to clean it up. Repeat. These mini-iterations of test-driven development take no more then 10 minutes and we perform one after another. Once you get the hang of test-driven development, you’ll find it an incredibly powerful programming technique that produces “modularized, flexible, and extensible code” (Wikipedia). Pavel and I write some nice framework code for the portfolio allocation, so we check the code into the version-control system SVN. Within a few minutes CruiseControl, a continuous integration tool, builds the code and notifies us of the result – All Good! The frequent check-in and build feedback is essential for maintaining a low integration overhead. 10:50 AM – 11:00 AM The Agile process facilitates communication through co-location. The ability to turn to your co-worker and share ideas, ask questions or just listen in on a conversation is vital for a successful Agile team. Also, the co-location facilitates the building of interpersonal relationships that are invaluable for creating a unified team. 11:00 AM – 11:55 AM
11:55 AM – 12:05 PM 12:05 PM – 1:00 PM 1:00 PM – 3:02 PM Suddenly from behind us someone loudly declares, “I saw the movie Avatar last night and it was awesome!” Our inner geek takes over and we spend the next 15 minutes debating the CGI quality. Conclusion: Amazing! 3:02 PM – 3:12 PM While we are in the Client Manager’s office he mentions that one of the acceptance tests he wrote and ran on a completed task failed (a responsibility of the Client Manager). No worries. That’s what the tests are there for. We quickly discover that we had a misunderstanding on one of the calculations; we were to divide not to multiple. It takes all of three minutes to update the unit test, make the change, test and check-in. 3:12 PM – 3:25 PM 3:25 PM – 5:30 PM Agile is a fast paced process that tries to remove inefficiencies from standard development methodologies, such as Waterfall/SDLC. Agile’s collaborative, communication focused mantra helps yield higher quality and greater business aligned products. However, there are two sides to every coin. Agile’s intense environment can magnify interpersonal conflicts and pair programming’s close partnering further fueling disagreement. We continue to argue until our ScrumMaster comes over to investigate. Pavel and I each hold our ground and state the reasoning behind our viewpoint. Our ScrumMaster says, “Let’s look at the long term. How will these classes fit into the tab navigation’s future flexibility and integration with the over all project?” Agile often focuses on the current Iteration, so it’s necessary to stay focused on the “Big Picture”. Pavel and I were so stuck on “I’m right, you’re wrong” that we lost sight of it. Almost simultaneously we come to the realization that we were building complexity when simplicity was the answer: an inner class. We’re almost done with the task after a few more sessions at the white board and a few more classes developed. We take some camera snapshots of the design on the white board and put together some documentation on the tab navigation API for our team members who will be using the navigation. We do a final build, upload the snapshots and documents to the team’s SharePoint directory, and mark on task complete on the burn-down. 5:30 PM to 5:45 PM I’m in a good mood and feel pretty relaxed. A nice part about continuous integration is that at the end of the day you either successfully integrate or throw the code changes away and try again tomorrow. Wait a minute. Throw the code changes away? That’s right. A rule is that you must always check in working code…don’t break the build. At the end of the day if the integration fails and it isn’t readily fixable, take a step back by revisiting the problem tomorrow. Either check-in working code or revert to the previous check-in. Of course, this doesn’t mean you can’t keep your non-working code local and see if inspiration strikes tomorrow. Why is this nice? Every successful build is an accomplishment and by day’s end there are typically several. Sure, the failed build might require more work, but you’ve had so many successes today that one more makes no difference. Leave work with a clear mind. 5:45 PM Final Thought
Bibliography Llopis, N. (2006, 02 06). A Day in the Life. Retrieved from Games from Within: http://gamesfromwithin.com/a-day-in-the-life Manifesto, A. (2001). Manifesto for Agile Software Development. From The Agile Manifesto: http://agilemanifesto.org/ Schwaber, K. (2003). Agile Project Management With Scrum. Microsoft Press. Shore, J., & Warden, S. (2008). The Art of Agile Development. O'Reilly. About the Author Geoffrey Bourne has 11 years of experience in the financial IT field, successfully managing several global Agile teams in Mumbai, Bangalore, Hong Kong and Japan. He has worked at J.P. Morgan, Goldman Sachs and several start-ups. He has a B.S. in Computer Science from Washington & Lee University and is a certified Sun Java Developer and PMP. Geoffrey is currently a Vice President at a major financial institution in the Personal Wealth Management division and can be contacted at gbourne@gmail.com
Set as favorite
Bookmark
Email this
Hits: 5655 Trackback(0)Comments (2)
|
| Last Updated on Tuesday, 09 March 2010 18:05 |
Agile Marketplace - Announcements and Special Offers
The Business Case for ALM Transformation
Are legacy systems holding your company back? Breakthrough these technical constraints with an open and scalable environment that meets your unique business need to transform. There is no reason to be locked into an obsolete platform. The output of a number of recent transitions from legacy systems, this is practical white paper shares lessons learned and illustrates how guidance and enablement can pave the way for change.
Download this Whitepaper


Woke up, fell out of bed,


