Monday, March 12, 2012

Agile Development - Don't Go Crazy


Based on my experience as a first time user of agile development process, I have come to a conclusion that agile process is not a solution for everything.

In my opinion what I think are the advantages and disadvantages of agile process are listed below:

PROS

1. Running, real, tested, customer-shipment-ready software is available from first release cycle (which is usually in few weeks)

2. Everyday face-to-face collaboration, conflict and dependency resolution decreases the overall development time

3. The focus is only on running software throughout the development duration

4. Development cycle(short ones) is not just one; it repeats time after time until the product is finished

5. Incremental and iterative development really tests your product well for regression as you integrate new features, and gives confidence in the product from the beginning

6. Customer can start using the product and give feedback from day one of the development process

7. Progress and low level detail visibility is high

8. Every new piece of code is accompanied by unit test code

CONS

1. Too much micro management on developers

2. User story is highly susceptible to change due to unexpected events which might spawn another user story

3. Design, documentation and such soft areas of product development may not fit into the model of showing progress everyday in standup meetings

4. The crucial skeletal design done before the agile development process starts, has to be correct. If that went wrong, the previously integrated and finished user stories might be reintroduced or new user stories might be added to remove them from the product

5. There is a certain overhead in making the product easy to extend and friendly to integrate new features from day one. That is what piece of the product has to be finished first and whether it can change later or not. If it changes later, all other finished user stories at that point of time may go invalid

6. Many firms adopt Agile process for quick development and micromanaging the employees, which is sad. Because Agile  roots for usable software from day one and puts all the efforts into making the product running on daily basis than anything else.

7. In the chaos of finishing user stories and high visibility of dependency and conflict, the great guys like creativity, innovation, research, added perfection, and documentation plus presentation die HORRIBLY at the hands of micromanagement

8. While developing the user story, the developer also needs to fix the bugs spilled over from last cycle. This becomes usual due to short test duration and not really there is a time allocated for the product to go back and forth between testing team and development team. Or we can say, the collaboration between testers and developers fails.

9. Since, tester and developer meet on daily basis, and due to short release cycles, tester is tempted to follow developer's mind in testing the user story(test cases of developer and tester become identical), which defeats the purpose of a third eye look to find faults.

10. Since, new features are plugged into the product in every short release cycle(especially when it is weekly based) testers only test the new feature in isolation for the most part. They are not allowed the luxury of thinking about integration test cases and what other parts of the product might be affected by this new feature may not have been thought of when the user story was defined for that tester. Or it may not be possible to think through integration test cases in the previous release cycle.

11. When a new user story is added unexpectedly, or a user story is modified it introduces lot of grey areas and errors into agile tracking system itself. User stories for testers might be affected. Integration test cases might be affected. Already integrated features might be affected, which might spawn further changes in those finished user stories and it might cause an avalanche. Basically when the product is complex, things might simply can go crazy.

12. There is no place for learning new skills as part of agile development or it simply looks silly when you update your learning task on daily standup meetings

13. It rather becomes worrisome for the developer to keep the agile tracking system updated with valid tasks and hours everyday along with his worries about developing the feature

14. Sometimes it might look like the developers are in lime-light based on their spent time rather than the quality of work they have done

So, finally a word of advise. I hear that agile works only when the developers involved are highly skilled in what they develop. It may be true, because learning new stuff and incorporating into the product is not really welcome in agile environment. Everything has to be known prior to the development. Agile works very well for the development of new product and that too only when the developers involved have experience in developing similar products and are well aware of what technologies to use for the product and they are already skilled in those technologies.

When management team takes a strict position in maintaining the agile tracking system, there happen a lot of silly things in agile trackers like, user story to undo a user story, user story to do a presentation, few minute standup meetings becoming many hour discussions due to complex dependency and where that time has to be updated? Hey I had a long personal meeting with my manager and boom, it can't be tracked in the agile tracker and today I've nothing much to update. Hey some of us go for a few days technical training, boom there can't be user stories for that. Hey somebody is going on vacation, the dependencies must wait. Hey, scrum master himself has to update his progress and allocate time to resolve conflict with other team members as well, and boom where he has to update that time?

So, I plead to the management community to not kill things around, but just take the good stuff from agile. Allow changes to agile process itself if necessary. And do not confuse the agile tracker for tracking developers spent time at office. Agile tracker is there only to track the time to develop the product. Leave managing the developer's time out of agile process and stop treating people as dumb resources for god's sake!

Friday, March 9, 2012

Google Privacy Policy - Made Easy

Information Google Collects:

Name, email address, telephone number or credit card, photo, your hardware model, operating system version, unique device identifiers, and mobile network information including phone number, your search queries, your phone number, calling-party number, forwarding numbers, time and date of calls, duration of calls, SMS routing information and types of calls, Internet protocol address, crashes, system activity, hardware settings, browser type, browser language, the date and time of your request and referral URL, cookies that may uniquely identify your browser or your Google Account, your actual location, like GPS signals sent by a mobile device, use various technologies to determine location, such as sensor data from your device that may, for example, provide information on nearby Wi-Fi access points and cell towers, browser web storage (including HTML 5) and application data caches.

  • When showing you tailored ads, we will not associate a cookie or anonymous identifier with sensitive categories, such as those based on race, religion, sexual orientation or health. 
  • We will ask for your consent before using information for a purpose other than those that are set out in this Privacy Policy. 
  • We may reject requests that are unreasonably repetitive, require disproportionate technical effort (for example, developing a new system or fundamentally changing an existing practice), risk the privacy of others, or would be extremely impractical (for instance, requests concerning information residing on backup tapes). 
  • After you delete information from our services, we may not immediately delete residual copies from our active servers and may not remove information from our backup systems. 
  • We provide personal information to our affiliates or other trusted businesses or persons to process it for us, based on our instructions and in compliance with our Privacy Policy and any other appropriate confidentiality and security measures. 
  • For legal reasons, your personal data will be disclosed 
  • If Google is involved in a merger, acquisition or asset sale, we will continue to ensure the confidentiality of any personal information and give affected users notice before personal information is transferred or becomes subject to a different privacy policy. 
  • We restrict access to personal information to Google employees, contractors and agents who need to know that information in order to process it for us, and who are subject to strict contractual confidentiality obligations and may be disciplined or terminated if they fail to meet these obligations. 

NOTE: You can opt out from most of the above things, like personalized ads; removing your public profile, etc.