Agile Development Interview Questions and Answers
What are some of the key features of agile development?A
- Collective code ownership and freedom to change.
- Incremental approach (e.g. user stories are incrementally implemented)
- Automation (e.g. TDD -- Test Driven Development).
- Customer focused (for e.g. internal and external users and business analysts are your immediate customers)
- Design must be simple. Designing is an ongoing activity with constant re-factoring to achieve the rules of code simplicity like no duplication, verified by automated tests, separation of responsibilities, and minimum number of classes, methods, and lines.
How do you know that you are using agile development?A
. You are using an agile practice when
- You have daily stand-up meetings.
- You use CRC (Class Responsibilities and Collaborators) cards.
- You use timeboxed task boards.
- You use TDD (Test Driven Development), Continuous Integration, regular code reviews, pair programming, automated builds, continuous deployment and delivery, etc.
- You have iteration planning meetings and carry out iterative development.
In agile practice, what does the daily stand up meetings
. Each day, at same time and same place (in front of the task board
) the team meets to bring everyone upto date. This meeting addresses SCRUM's three questions listed below
- What have you completed since the last meeting?
- What do you plan to complete by the next meeting?
- What is getting in your way?
Q. What is a task borad?
A. It is generally a white board divided into 3 sections -- To Do, In Progress, and Done. Each task is written on a sticky note, and moved from one section to another to reflect the current status of the tasks. The task board is frequently updated, especially during the daily stand up meetings. Different layouts can be used.
Each task allocated to each team member is timeboxed. You can have variation to the layout as shown below and each sticky not can have points that add up towards the velocity points (calculated by adding up the estimates of the features, user stories, requirements or backlog items that are successfully delivered in an iteration. ).
The task board is also known as the kanban board. Kanban is a Japanese word meaning card or sign. Each card or sign is equated with a user story. Whenever a particular user story is blocked for whatever reason, then the priority is to clear current work-in-process with the help of other team members to help those working on the activity that’s blocking the flow.
Q. What do you understand by the agile term timeboxed?
A. A timebox is a previously agreed period for a particular task to be completed by an individual or team. The key aspect of the timebox approach is that stopping of work when the time limit is reached and evaluating what was accomplished instead of allowing the work to continue until the goal is reached, and evaluating the time taken.
Q. What are CRC cards?
A. CRC stands for Class, Responsibilities, and Collaborators. It is used for rapidly sketching an Object Oriented design and playing out the roles and responsibilities to validate the design. The role play dialog will be something like
Hello, I am a trader and responsible for placing and cancelling buy and sell orders on behalf of my customers. Before placing a trade, I must know my trader details like number, name, address. I need to collaborate with order to fill in the relevant order details.
Q. What do you understand by the term "collective ownership"?
A. Collective ownership, as the name suggests, every team member is not only allowed to change other team member's code, but in fact has a responsibility to make changes to any code artifact as necessary. This means every developer will review code written by others when integrating others' changes from the code repository into their code to familiarize themselves and to identify any potential issues and mistakes. Every developer will be motivated to check in the code progressively and incrementally with proper automated unit and integration test cases as part of the continuous code integration.
Q. What do you understand by the term Behavior Driven Development (BDD)?
A. Behaviour-Driven Development (BDD) is an evolution in the thinking behind Test Driven Development (TDD -- Writing tests before writing code) and Acceptance Test Driven Development (ATDD -- write acceptnce tests, and for many agile teams, acceptance tests are the main form of functional specification and the formal expression of the business requirements). The BDD basically combines TDD and Domain Driven Design. It aims to provide common vocabulary that can be used between business and technology.
The acceptance tests are generally written using the "Given-When-Then" approach. For a given story/context, when some action is carried out, then a set of observable consequences should be obtained. For example, Given that you have enough available cash, when you place a trade within your available cash, then placing of your trades should succeed without any errors.
Q. What do you understand by the terms user stories, story mapping and story splitting?
User stories: Dividing up of the customer's or product owner's requirements into "functional increments" so that it can be worked on via the task board. This is done in consultation with the customers, product owners, or business analysts.
Story mapping: When you have a backlog full of user stories, you can select a few of them to work on during the next iteration. This step involves ordering of the user stories. The "map" arranges user tasks along the horizontal axis in rough order of priority and the vertical axis addresses the implementation details. It can be done either on a white board with sticky notes or using tools like Silver Stories.
Story splitting: Before a story is ready to be scheduled for implementation, it needs to be small enough to pass the usual rule of thumb that "a story should be completed within the iteration". So, "story splitting" consists of breaking up one user story into smaller ones, while preserving the property that each user story separately has measurable business value.
Labels: Agile development