Where did the term "Gherkin" originate and get used with Agile User Stories?

The term "Gherkin" is associated with Agile user stories because it is the name of a specific format for writing user stories that was introduced by the Cucumber testing framework. Cucumber is a popular open-source tool for Behavior-Driven Development (BDD), which is a software development methodology that emphasizes collaboration between developers, testers, and business stakeholders. The actual name is credited to Dan North, the creator of BDD, in a May 2006 blog post.

The Gherkin syntax is a way of writing user stories in a structured format that can be easily understood and shared by all team members, including non-technical stakeholders. The Gherkin syntax uses a simple language that is designed to be readable by both technical and non-technical people. It consists of a set of keywords, such as "Given", "When", and "Then", that describe the steps of a user story.

The Gherkin syntax is named after the small pickled cucumber, which is a reference to the idea of "pickling" or preserving the requirements of a user story in a structured, easy-to-understand format. The name was chosen to reflect the simplicity and ease of use of the syntax.

The Gherkin syntax has become popular in the Agile development community because it provides a standardized format for writing user stories that can be easily understood and shared by all team members. It can also be used to automate acceptance testing, as the steps of a user story can be mapped to test cases that verify that the software meets the requirements specified in the user story.

What is Model-based Testing in Software?

Model-based testing (MBT) is a software testing technique that uses models of the software system under test to automatically generate and execute test cases. The models used in MBT can be of different types, such as state diagrams, decision tables, flowcharts, or UML models. These models describe the expected behavior and interactions of the software components and can be used to generate test cases that cover all possible scenarios.

The main goal of model-based testing is to improve test coverage and reduce the time and effort required for manual test case design and execution. It also helps detect defects earlier in the development cycle, which can reduce the cost of fixing them. MBT can be applied to different software testing levels, such as unit testing, integration testing, and system testing.

The process of model-based testing typically involves the following steps:

  1. Model creation: Create a model of the software system under test that describes its behavior and interactions. This model is typically created using a modeling language or tool.

  2. Test case generation: Use the model to generate test cases automatically that cover all possible scenarios. The test cases are designed to validate the behavior of the software components and ensure that they meet the specified requirements.

  3. Test execution: Execute the generated test cases and record the results. The test execution can be performed manually or automated using a testing tool.

  4. Analysis and reporting: Analyze the results of the test cases and generate reports that provide insight into the software's performance and behavior. The reports can be used to identify defects and performance issues that need to be addressed.

MBT is a powerful software testing technique that can help organizations improve their testing efficiency and effectiveness by generating test cases automatically and increasing test coverage. It can be used to test different types of software, such as embedded systems, web applications, and mobile apps.

How is a PMO different than an EPMO?

A Project Management Office (PMO) and an Enterprise Project Management Office (EPMO) are both centralized groups within an organization that provide project management guidance and support to ensure that projects align with the organization's goals and objectives. However, there are some key differences between these two types of offices.

A PMO typically focuses on managing projects within a specific business unit or department, while an EPMO has a broader scope and oversees all projects across the organization. An EPMO is responsible for developing and implementing a standardized approach to project management across the organization, including processes, tools, and templates.

The primary responsibilities of a PMO include providing project management guidance and support, monitoring project performance, and ensuring that projects are aligned with the goals and objectives of the business unit. The PMO also facilitates communication and collaboration between project teams, stakeholders, and senior management.

The responsibilities of an EPMO, on the other hand, are much broader. In addition to the responsibilities of a PMO, an EPMO is also responsible for developing and implementing a project management methodology that is used across the entire organization. The EPMO ensures that all projects are aligned with the organization's strategic goals and objectives and that projects are prioritized and resourced appropriately.

An EPMO also typically has more authority and influence within the organization than a PMO. It has a higher level of oversight and governance over projects and may be responsible for strategic planning and decision-making related to project portfolios. An EPMO may also be responsible for managing the organization's project management resources, including project managers and other project management professionals.

In summary, while a PMO and an EPMO share many similarities, an EPMO has a broader scope and is responsible for overseeing all projects across the organization, while a PMO typically focuses on managing projects within a specific business unit or department.

Solutions to Common Challenges when Establishing a Project Management Office (PMO)

Establishing a Project Management Office (PMO, sometimes called EPMO for 'Enterprise' PMO) within an organization can be a complex and challenging process. Some of the common challenges that organizations face when creating a PMO include:

  1. Resistance to Change: One of the biggest challenges of establishing a PMO is resistance to change from employees and stakeholders. Some employees may not want to adopt new project management practices or may be skeptical about the need for a PMO.

Solution: To overcome resistance to change, organizations should clearly communicate the benefits of the PMO to all stakeholders and involve them in the process of creating the PMO. It is important to create a culture of change management that encourages all stakeholders to actively participate in the PMO creation process.

  1. Lack of Resources: Creating a PMO requires a significant investment in resources, including personnel, technology, and training. Organizations may struggle to allocate the necessary resources to establish a PMO.

Solution: Organizations should develop a clear business case for the PMO that demonstrates the value it will bring to the organization. They should also allocate sufficient resources to support the PMO, including personnel, technology, and training.

  1. Difficulty in Identifying and Prioritizing Projects: Organizations may struggle to identify and prioritize projects that align with their strategic objectives. Without clear guidance, it can be difficult for project managers to determine which projects to focus on and how to prioritize them.

Solution: Organizations should establish a clear process for identifying and prioritizing projects, and communicate this process to all stakeholders. The PMO should provide guidance and support to project managers in determining which projects to focus on and how to prioritize them.

  1. Lack of Project Management Maturity: If an organization lacks project management maturity, it can be challenging to establish a PMO that can effectively manage projects and deliver value to the organization.

Solution: Organizations should assess their project management maturity and identify areas where they need to improve. The PMO should provide training, coaching, and support to project managers to improve their project management practices.

  1. Resistance to PMO Governance: The PMO may face resistance from project managers who may feel that PMO governance is too rigid and inflexible, which can hinder project delivery.

Solution: The PMO should establish governance frameworks that are flexible and adaptable to the needs of individual projects. The PMO should also provide guidance and support to project managers in following the governance frameworks to ensure that projects are delivered on time, within budget, and to the required quality standards.

Establishing a PMO can bring many benefits to an organization, but it can also be challenging. Organizations must be prepared to address the challenges that they may face when creating a PMO. By implementing the solutions outlined above, organizations can overcome these challenges and establish a PMO that can effectively manage projects and deliver value to the organization.

The Benefits of Establishing a PMO

A Project Management Office (PMO) is a centralized group within an organization that provides project management guidance, support, and oversight to ensure that all projects align with the organization's goals, vision, and objectives. PMO provides a set of standardized project management practices, tools, and templates that facilitate communication, decision-making, and project execution. Here are some benefits of establishing a PMO within an organization.

Benefits of Establishing a Project Management Office:

  1. Standardization of Project Management Practices: One of the key benefits of establishing a PMO is that it provides standardized project management practices, tools, and templates that can be used by all project managers within an organization. This ensures consistency in the way projects are planned, executed, and monitored, which reduces the risk of errors, delays, and rework.

  2. Improved Resource Allocation: PMOs can help organizations to better allocate resources by providing a clear overview of all ongoing projects, their status, and their priorities. This information helps organizations to make informed decisions about which projects to prioritize, which resources to allocate, and when.

  3. Enhanced Risk Management: PMOs can help organizations to identify, assess, and manage risks associated with project delivery. This can be done by setting up a risk management framework, conducting risk assessments, and providing guidance on how to mitigate risks.

  4. Better Communication and Collaboration: PMOs can help to facilitate better communication and collaboration between project teams, stakeholders, and senior management. This can be achieved through regular status meetings, project reports, and project dashboards that provide a transparent view of project progress and issues.

  5. Improved Project Performance: Establishing a PMO can improve project performance by ensuring that all projects are aligned with the organization's strategic goals and objectives. PMOs can also monitor project performance and provide feedback to project teams to help them improve their project management practices.

  6. Increased Project Success Rates: PMOs can increase project success rates by ensuring that projects are delivered on time, within budget, and to the required quality standards. PMOs can also help to identify and address issues that may impact project success and ensure that best practices are followed.

Establishing a PMO can bring many benefits to an organization, including standardization of project management practices, improved resource allocation, enhanced risk management, better communication and collaboration, improved project performance, and increased project success rates. These benefits can help organizations to achieve their strategic goals and objectives by delivering projects that are completed on time, within budget, and to the required quality standards.

Great Interview Questions When Hiring a Software Tester

Here are some interview questions that can be useful when hiring a software tester:

  1. Can you describe your experience with software testing? What types of testing have you performed (functional, regression, performance, etc.), and what tools have you used?

  2. Can you describe your experience with test automation? What tools and frameworks have you used, and what types of tests have you automated?

  3. Can you walk me through your testing process? How do you plan tests, write test cases, and execute tests? How do you track and report on defects?

  4. Can you give an example of a time when you found a critical defect in a software application? How did you discover the defect, and how did you work with the development team to resolve it?

  5. How do you stay up-to-date with the latest trends and best practices in software testing? What resources do you use to stay informed?

  6. Can you describe your experience with exploratory testing? How do you approach exploratory testing, and what techniques do you use?

  7. How do you prioritize testing activities? What factors do you consider when deciding which tests to perform and in what order?

  8. Can you give an example of a time when you had to work under tight deadlines? How did you manage your time and prioritize your testing activities to ensure that the software met its quality goals?

  9. Can you describe your experience with performance testing? What tools and frameworks have you used to measure software performance, and what metrics do you track?

  10. How do you work with other team members, such as developers and product managers, to ensure that software meets the requirements and quality goals? What strategies do you use to communicate and collaborate effectively?

These interview questions can help you assess a candidate's experience, skills, and approach to software testing, as well as their ability to work effectively with other team members and adapt to different situations. You can also ask follow-up questions to get more detail and context around a candidate's responses.

A Summary of Common Software Development Life-cycles

The software development life-cycle (SDLC) is the process of planning, designing, building, testing, and deploying software. There are various models for the SDLC, each with their own advantages and disadvantages. Here are some of the most common models:

  1. Waterfall model: The waterfall model is a linear, sequential approach to software development, where each stage is completed before the next one begins. The stages include requirements gathering, design, implementation, testing, and maintenance. This model works well for projects with well-defined and stable requirements, but can be inflexible and slow to respond to changing requirements.

  2. Agile model: The agile model is an iterative and incremental approach to software development, where software is developed in short cycles called sprints. The stages include planning, requirements gathering, design, implementation, testing, and deployment, and the process is repeated in each sprint. This model works well for projects with evolving requirements and a need for flexibility, but can be challenging for teams that are new to agile methodologies.

  3. Spiral model: The spiral model is a risk-driven approach to software development, where risks are identified and addressed in each stage of the SDLC. The stages include planning, risk analysis, design, implementation, testing, and deployment, and the process is repeated in a spiral fashion as risks are identified and addressed. This model works well for projects with high levels of complexity and uncertainty, but can be time-consuming and expensive.

  4. V model: The V model is a variant of the waterfall model that emphasizes testing and verification throughout the SDLC. The stages include requirements gathering, design, implementation, testing, and maintenance, and the testing process runs in parallel with the development process. This model works well for projects with a strong emphasis on testing and verification, but can be inflexible and slow to respond to changing requirements.

  5. DevOps model: The DevOps model is a collaborative approach to software development that emphasizes the integration of development and operations teams. The stages include planning, development, testing, deployment, and monitoring, and the process is highly automated to enable rapid and frequent releases. This model works well for projects with a need for rapid release cycles and a high degree of automation, but can be challenging for teams that are new to DevOps methodologies.

Each of these models has its own strengths and weaknesses, and the choice of model will depend on the specific requirements of the project, the experience and preferences of the team, and the organizational culture. Successful software development requires careful planning, effective communication, and a willingness to adapt to changing requirements and circumstances.

Book Review: Motivating Employees

Employee motivation is an ever-present concern for most proactive managers.  Interestingly enough, motivation can come from both functional and dysfunctional sources.

I've seen employees motivated for many different reasons: recognition, financial incentive, empowerment, personal growth, tension release, fear, and finally there's that weird Lord of the Flies thing where employees get motivated together against another employee.

In their book, Motivating Employees, Anne Bruce and James S. Pepitone describe the most effective ways to motivate a team.  They describe the three C's which are vital to functionally motivating employees:

1. Collaboration: Be sure to involve employees in decisions and discussions where their efforts are involved.

2. Content: As they produce suggestions, act on those suggestions immediately.

3. Choice: Be sure to offer choices to your employees--even if you can predict what they will decide.

These three techniques actually empower your employees.   Involving employees in decisions that affect them, or the outcome of what they are working on produces a level of buy-in that is hard to match any other way.

Bruce and Pepitone continue with an examination of Theory-X and Theory-Y motivation and management styles.  These styles were originally presented in the 1960's by Douglas McGregor.

McGregor states that Theory-X managers proceed from the assumption that their employees are uninformed, lazy, and needy of high-structure.

Theory-Y managers, however, proceed from the assumption that their employees are qualified, intelligent, and capable of making proper decisions provided they are given proper goals, accountability, authority, and resources to accomplish their tasks.

Although Theory-X is the most effective approach during some situations, if you consider the amount of college-educated employees in the workforce today, it's easy to see how Theory-Y, if applied properly, yields much higher performance.

The authors continue with a formula for encouraging Entrepreneurial Thinking.   Their five-step formula is:

1. Explain the organization
2. Demonstrate how the organization operates and generates income
3. Help your employees understand the competition
4. Encourage intelligent risk-taking
5. Inspire innovative thinking

Another great idea the authors present is to link motivation to performance.  They suggest you develop a written-list of performance standards for meeting and exceeding the expectations you've agreed upon during collaborative sessions with them.

The authors talk about how important it is to weave fun into everything your organization does.   This may sound like a unusual suggestion at first, but the authors point out that there is a direct correlation between fun on the job and employee productivity, moral, creativity, satisfaction, and most importantly--retention.

The final few chapters in the book discuss de-motivating factors (or individuals), and how to deal with them.  There is also a good chapter on conducting effective employee-reviews.

Overall I recommend this book to any manager.   It's a great book to re-read every so oft r/>
Mike J. Berry
www.RedRockResearch.com

PMI Announces the PMI-PBA Certification!

The Project Management Institute (PMI) announced a new certification for Business Analysts.  Called the Professional in Business Analysis, the PMI-PBA is a program for business analysis, and many other professionals who perform business analysis activities.

 

Think of Business Analysis as what happens before a project, the Scope development and change management happening during a project, and the post-release RIO work that may happen after a projects.  

Before a large project concept is approved, a Business Analyst may be commissioned to perform a feasibility study, and assuming the concept is feasible, create a Business Case Analysis showing the most recommend option and a few lesser options.

Assuming the Business Case is approved by the proper authority, a project is created and the Business Analyst transfers their information to the new Project Manager and may or may not become part of the team.

If they become part of the team, they likely will manage the Scope baseline, while the Project Manager manages Schedule and Cost baselines. During this process they will also work closely with the Project Manager to implement change control.  They will also makea good 2nd witness for assessing how well the project team is working with other stakeholders.

When the project is complete, they will help evaluate the projects success criteria, which was put into the Project Charter from the Business Case they created. If the success criteria is met, the project can be Closed.  

Any post-solution deployment ROI work can be measured and calculated by the Business Analyst to determine if the target ROI was reached with the solution. This target ROI, and the pre-determined techniques to measure it are found in the Benefits Measurement Plan, also created by the Business Analyst to compliment the original Business Case. Multiple measuring points and a Statistical Process Control chart, and an efficiency frontier chart can be used to assess ROI.

Mike Berry Red Rock Research

One or Two Day Tasks

Recently while coaching Agile to a large client in the Salt Lake City area one of the developers on one of the teams asked me why an Agile team should decompose features into one or two day units of work.  It seems, he said, the particular unit of work he was considering could not be broken down into anything smaller than 4 days.

This is a common question for groups first exposed to Agile.   Decomposing features into one or two day tasks can be challenging at first.  Here are several reasons why it is a good practice:

1. Breaking down features and large tasks into one or two day units of work forces the Agile team member to really understand the nature of the tasks.  Ambiguity is the enemy of success and large units of work really are ambiguous.

2. Smaller units of work limit the amount of risk that a particular task can adversely impact a schedule that was estimated incorrectly.

3. Decomposing work into many one or two day tasks gives the team member a win every one or two days.   They and their teammates will enjoy a sense of accomplishment more frequently, helping team morale.

4. Decomposing work in to one or two day tasks creates more transparency and precision so the team can account for completed work more accurately.  This many not be noticeable for one single work item but imagine the effect if the entire team kept work items at a non-decomposed level...too much ambiguity.

5.  Some teams I encounter hold stand-up meeting less frequently than daily.  This is a mistake.  Stand-up meetings should be held daily.  When I drill down and ask why, I typically hear that the team is reporting on the same work item the whole week.  Further questioning reveals they are not decomposing work into one or two day tasks.  When they start decomposing work into one or two day tasks then they have something new to report each day, and the stand-up meetings become more helpful.

Mike J. Berry Red Rock Research