"No one is harder on a talented person than the person themselves" - Linda Wilkinson ; "Trust your guts and don't follow the herd" ; "Validate direction not destination" ;

March 28, 2010

Agile!! Agile!! Agile!! Will it be Fragile!!

Pair Programming- Two People working together on same problem at same time/place. Advantages-better code, code review, Share knowledge, Less Probaility of Injecting bugs. Pairing Types (Beginner & Beginner, Beginner & Expert, Expert & Expert). Intro video. Can it be Three people working together PM-DEV-Test all three of them sit together and code/Test it. Probably it might work for small applications.

Startup mode -  Work without everything having to be spelt out.


XP - Focus on Small Releases/Iterations. Deliver business value in every iteration. XP Intro

TDD - Developer writes automated test cases for the desired function. Then he codes for actual functionality. TDD Intro. Can it be Developer writes code, Tester writes automated code for the test. When dev is ready with code, Test is ready with automated code. Test & Dev Phase are integrated. Test-Driven C#

Kanban Software Development - A modified SCRUM methodology.
Kanban comes from the Japanese for “visual card”.

Comparision is provided
Scrum batches work in fixed iterations - Kanban is typically (but not always) iterationless
Scrum has no work-in-progress limits - Kanban always limits WIP
Scrum can have large backlogs - Kanban discourages large queues.
Scrum measures velocity after each iteration - Kanban uses limits to adjust productivity in real-time
Source - Link

Whatever process or model that comes into market. A clear BRD and a Clear understanding of intended functionality by DEV-TEST-PM only can provide a good code that meets business demands. With the expectations set by business, we can target for minimal working software and iterations on top of it. Writing a Hello World program can follow all of the above methodology but not for an enterprise application. Not all Process would suit every project. I am not discouraging these processes but a reality check need to be done on how effective they can help a project.

1. Document and communicate clearly what can be delivered in the minimum period (Weeks/Days) - Release Cycles
2. Business needs working software that helps to run a business. Incomplete functionality delivered in days is worse than complete functionality delivered in weeks (Product Size & Complexity)
3. Quality Speaks first than Time taken for delivery. Know what you code for. (Agility Vs Stability)
4. Don’t let your estimates become commitments. Remember the difference between an estimate and a commitment and keep the two activities separate. Link
5. Prioritize-Gather-Manage Changes during Release Cycles

I agree with the definition of Agile posted in link
  • Deliver a continuous stream of potentially shippable product increments
  • At a sustainable pace
  • While adapting to the changing needs and priorities of their organization
A couple of useful reads
How I Learned to Program Manage an Agile Team after 6 years of Waterfall
Iteration Planning Meeting with CodePlex
How Agile Works – My Program Manager Cheat Sheet
The philosophy of Kanban is Kryptonite to Scrum
Interesting read - Software's Classic Mistakes--2008

With Agile SCRUM model below items, you can also observe
  • Confusing estimates with targets and stretching to meet dates
  • Excessive multi-tasking
  • Research-oriented Development (Underestimation of unfamiliar tasks)
2009 State of Agility Results  - Lists Reasons for following Agile
Excellent Suggestion on Test Role in Agile Projects
7 Practices to Agile QA
  • Test Involves in all Phases - Reqmts, Design, Code, Testing
  • Prioritize Test Cases
  • Target and Improve Automation Testing
  • Encourage Peer-Reviews (Design/Code/Test Scenarios)
  • Encourage Pair Programming Developer + Test (Act as SME)
Agile isn’t always Agile - Excerpt - "Just turns into a micro-management environment, where devs have to defend their daily work. Of all the work environments I hate the most, micro-management environments are THE worst. I don’t like working in them, and I don’t like creating them"

Lisa Crispin talks about the 'Trends in Agile Testing'
Agile Development - Evolutionary Design
'Releasing to Production Every Week'
My 7 principles to design the architecture for a software project.
A Simple, Definitive Metric of Software Development Productivity

Nice pic from http://www.utest.com/ presentation...



Great Read from Quora Read 
Quote of Jeff Nelson's answer to Why is it that when "pair programming" produces better code, almost no company practices it? on Quora

Happy Reading!!!

No comments: