Saturday, February 11, 2017

Tips to succeed in Highly Agile and Complex Environments

I have got opportunity to work in all types of software development methodologies from waterfall to v-model to rapid prototyping to agile. I have been very grateful to all companies and people I worked with who have helped me learn so much in such a vast and highly technical industry. 

Today I would like to share few tips which might help fellow test engineers in getting successful while working under a highly agile testing software development methodology. But first I will tell what is agile methodology and how work is planned under it. 
  • An agile testing methodology has usually one or two weeks sprints or cycles in which a product manager/program manager, engineering lead/manager, engineers, test engineers, designers come together to plan out their work for the upcoming week or 2 weeks. This is basically called Sprint Planning.
  • Work is usually measured by story points or effort required which in turn is given weights using Fibonacci numbers i.e. 1, 2, 3, 5, 8, 13. 
  • Work usually includes new features and products but could include backlog of work and bug fixes. 
  • All the work is tracked by tickets (most favorable tool at least in Silicon valley is JIRA). 
  • All the people sit together and create/update/assign the tickets. Doubts are clarified and any deadlines/priorities are discussed openly. 
  • Once the sprint/cycle ends all people again come together to do a retrospective of what went well, what could have been done better, who gets the applaud for outstanding contribution. This meeting also targets on getting feedback most importantly on how everybody can work more efficiently and how the processes can be improved further. It is a fun meeting and very important part of agile process. 
  • Also important part of agile methodology is daily scrum. When all the team members come together every morning to discuss planned work for the day. Any hiccups/hurdles/dependencies  are discussed. It is also used to give heads up for any planned or unplanned release that might happen during the day. 
So this was agile methodology in short. A highly agile work environment would have all this done in short sprints with multiple releases and very limited time to automate or test.

In such work highly agile work environments here are some tips to be successful:
  1. Managers/Leads: Create a release calendar which could be updated every day for any unplanned releases and have planned releases visible on them for transparency.
  2. Devs: Mention tickets as QA or noQA so that test engineers need not waste time on figuring things out.
  3. Devs: Mention steps to test particular ticket.
  4. Test Engineers: Mention steps to reproduce bugs with screenshots and related metadata.
  5. Product Managers/Program Managers/Project Managers: Set a kick-off meeting for any features etc for clarification of work, related doubts and dependency on other teams.
  6. Raise alarm or incident immediately in order to avoid further delays.
  7. Test Engineers: Write test automation first for the highest priority tests only in case of newly developed features in testing.
  8. Test Engineers: Run nightly jobs for test automation so that build health is checked daily.
  9. Share knowledge of testing and build environments with everybody in the team to debug and report issues without any dependency on any particular engineer.
  10. Most important have documentation/Readme(s) for every work/repositories.
  11. Set time to transfer knowledge, clarification of doubts or do group testing as and when required.
  12. Team-Bug-Finding Exercises: Invite all engineers/managers/design team/product managers of a team to find bugs/defects in a new feature. This will help in building more collaboration, share knowledge of product with all the team members, and any doubts etc could be cleared instantly. 
  13. Get the test plan reviewed by product manager and engineering lead/manager for making sure the coverage is proper.
  14. Publish achievements to larger audience when the product is ready and released for visibility and work recognition.
  15. Write technical papers/white papers on something that could benefit whole industry.
  16. Work for the success of the team if that happens then individuals automatically succeeds.
  17. Interact regularly with team mates and managers to find out pain areas and try to work on solutions.
  18. Enjoy work and happy hour both :)
Thats all thanks for the read once again. I hope this helps!

No comments:

Bad practices for a Software Test Engineer

People mostly talk about the good and the best practices but it is also important to know the worst or the bad practices which a Software ...