How can you become a great developer, tester, and product owner?
There was a time when product
owner/business analyst would gather requirements from customers and write up a
detailed business requirement document (BRD). Based on that requirement
document, system architecture team would design the architecture of the system.
After overall architecture of the system is designed, developers would write
code based on the concrete requirements from BRD. When developers are done
coding, then they would throw everything over the wall for QA to test. Even
though some developers would write unit/integration tests before they hand off
the system to QA folks for testing, majority of the developers would just think
that QA folks are responsible for testing the quality of the product. After
spending 2-3 months testing the system (based on the release date), QA folks
would log all bugs and developers would fix those defects and hand over to QA
again. Then, at the end product owner and QA would use variety of testing
approaches (stress testing, acceptance testing, etc) to validate that system
met all requirements, and release the product for customers.
Does this process sound familiar?
This is our good old waterfall methodology. Things have drastically changed in
the software world now. Very few companies are still adapting waterfall
nowadays as customer requirements as well as technologies are changing every
day. Majority of the companies are adapting agile with continuous integration
and continuous delivery as their main focus. With a sprint of 2-3 weeks long,
agile teams commit to the user stories (requirements) that they plan to deliver
by the end of the sprint. Keep in mind that agile teams are small and
supposedly well structured. A typical agile team consists of 4-5 developers,
1-2 QA, scrum master and product owner.
Agile sounds fascinating, isn’t it?
Before jumping to the conclusion, let’s dive into agile methodology little
more. Within a sprint of 2-3 weeks – developers need to complete coding the
feature(s), have a good unit test coverage, QA need to validate the quality of
the product and verify that new feature(s) didn’t break any of the existing
features, and product owner needs to be confident that all user stories met the
definition of done. It definitely is a lot of work for a sprint cycle of 2-3
weeks. Therefore, developers, testers, and product owners should possess unique
traits and skills in order to make agile successful. For example: developers
shouldn’t just write code and throw everything over the wall for QA to test, QA
shouldn’t wait until last minute to test everything, and product owner
shouldn’t wait until the last day of sprint to provide feedbacks to developers
regarding the feature developers are currently developing. In agile, quality
should be everybody’s (all team members) mantra. I have summarized the traits
of good developers, testers and product owners below.
You are already a great developer if you possess the following traits/skills:
- At the beginning of the sprint, you understand the user requirements/user stories correctly. If you aren't clear, you ask product owner for clarification.
- You breakdown the story into several tasks.
- Before writing a single line of code, you use TDD (Test Driven Development) or BDD (Behavior Driven Development) to write failing tests. More about BDD.
- You do pair programming with your colleagues and start code reviews in timely fashion.
- You write unit tests to provide good code coverage.
- You continuously check in your code and not wait to check in everything at the end of the sprint.
- If you add code to the old legacy codebase which doesn't have any unit test coverage, you still go ahead and write unit tests for your new code.
- You collaborate fully with QA in identifying and fixing bugs.
You are already a great QA if you possess the following traits/skills:
- You don't wait until developers check in their code to start writing automated tests. When developers check in their code, your tests should pass. If they fail, then there is a BUG.
- You are equally competent as developers in writing test code.
- You continuously monitor the build server for failing tests and narrow down the problems for developers to investigate.
- You continuously work on expanding the automated regression tests, which helps in cutting the regression test cycle.
- You make good judgments in distinguishing between bugs and features.
- You collaborate with developers and product owners in identifying and fixing bugs.
You are already a great product owner if you possess the following traits/skills:
- You write user stories with detailed acceptance criteria and provide clear and thoughtful guidance to developers.
- You are able to comprehend the technical details. For example: if you are a product owner for API team and you don't understand the technical details about GET/POST/PUT etc. then it can be a problematic.
- You continuously provide feedback to the developers about the feature(s) they are developing during the sprint.
- You have good judgments in distinguishing between bugs and features.
- You don't comprise with the definition of done. If any user story doesn't meet the definition of done, then you mark such story as incomplete.
It is still not too late if your team doesn't follow the above workflows. Continuous improvement is another slogan of agile, so don't wait too long and start becoming a great developer/tester/product owner from today. Go agile!
Comments
Post a Comment