Scrum: Framework or Methodology?

Scrum is a framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value.

Why Scrum?

What is Scrum?

Scrum isn’t a fully-featured project management methodology. Rather, it describes an approach to Agile management with a focus on project teams, short “sprints” and daily stand-up meetings.

While it borrows the principles and processes from Agile, Scrum has its own specific methods and tactics for dealing with project management.

“Agile is the philosophy and Scrum the methodology. While Scrum is agile, agile isn’t scrum.”

The Scrum approach places the project team in front and center of the project. Often, there is no project manager. Instead, the team is expected to be self-organizing and self-managing. This makes it ideal for highly focused and skilled teams, but not so much for others.

Advantages of Scrum

  1. Scrum “sprints”: The Scrum approach is heavily focused on 30-day “sprints”. This is where the project team breaks down a wishlist of end-goals into small chunks, then works on them in 30-day sessions with daily stand-up meetings. This makes it easy to manage large and complex projects.
  2. Fast paced: The “sprint” approach with its 30-day limit and daily stand-up meetings promotes rapid iteration and development.
  3. Team-focused: Since the project team is expected to manage itself, Scrum teams have clear visibility into the project. It also means that project leaders can set their own priorities as per their own knowledge of their capabilities.

Besides these, it has all the benefits of Agile – rapid iteration and regular stakeholder feedback.

Disadvantages of Scrum

  1. Scope creep: Since there is no fixed end-date, nor a project manager for scheduling and budgeting, Scrum can easily lead to scope creep.
  2. Higher risk: Since the project team is self-managing, there is a higher risk of failure unless the team is highly disciplined and motivated. If the team doesn’t have enough experience, Scrum has a very high chance of failure.
  3. Lack of flexibility: The project-team focus means that any resource leaving the team in-between will hugely impact the net results. This approach is also not flexible enough for large teams.

Scrum is best for

The Scrum approach is best for highly experienced, disciplined and motivated project teams who can set their own priorities and understand project requirements clearly. It has all the flaws of Agile along with all its benefits. It works for large projects but fails if the project team itself is very large.

Scrum values

Below diagram depicts the core values of the Scrum framework.

 

Commitment

  1. This is not about the expectation that all scope will be delivered, no matter
  2. Commitment is about dedication and applies to actions, the effort, not the final result
  3. Maximum possible effort for achieving the goal and will be transparent
  4. Commitment towards –
    1. Quality
    2. Collaboration
    3. Learning
    4. Professionalism
    5. Excellence
    6. Self-organize
    7. Improvement
    8. Transparency

Focus

  1. Focus on what is most important now
  2. Future is highly uncertain, focus on YAGNI – “You aren’t gonna need it”
  3. Focus on the simplest thing

Openness

  1. Be transparent, inspect in order to make sensible adaptation
  2. Open about our work, progress, problems, and learnings
  3. Open for people and working with people
  4. Acknowledging people to be people, and not resources, robots or replaceable machinery
  5. Open to collaborate with stakeholders and wider environment
  6. Open in sharing feedback and learn from one another
  7. Open for change

Respect

  1. Respect for people, their experience and their personal background
  2. Respect different opinions, we might learn from it
  3. Respect for our sponsor by not building features that nobody will use
  4. Respect for users by fixing their problems and quality product
  5. Respect for wider environment by not behaving as an isolated island in the world
  6. Respect each other’s skills and expertise

Courage

  1. Courage to not build features that nobody wants
  2. Courage in admitting requirements will never be perfect
  3. Courage in admitting that no plan can capture reality and complexity
  4. Courage to not deliver undone features
  5. Courage to share risks and benefits
  6. Courage in sharing information that might help team and the organization
  7. Courage to change direction

Roles, Artifacts, and Events in the Scrum Framework

Below diagram depicts various roles and their correlation in the Scrum framework.

 

Roles

Various roles that comprise of scrum framework are:

Scrum Master

A Scrum Master is a team leader and facilitator who helps the team members to follow agile practices so that they can meet their commitments. The Scrum Master is responsible for ensuring Scrum is understood and enacted.

A Scrum Master serves the Scrum Team

  1. Lead by example. Be the first one to be vulnerable. Be a living demonstration of team assets and scrum values. Admit your missteps.
  2. Create an environment of safety. Encourage debate, support it and keep it productive. Use coaching techniques like open questions.
  3. Facilitate Consensus. Try to have key decisions made clear at the end of team discussions, making responsibility and deadlines clear.
  4. Learn to read the room. Be connected without being present.
  5. Show patience. Be okay with silence. Let the team take action.
  6. Restrain from solving. Reveal, not resolve. Be careful not to steer the team towards premature resolution of conflict to protect people. Help team members develop conflict resolution skills.
  7. Be comfortable with failure. Team decisions may not lead to the anticipated outcome. This is part of learning and growth.
  8. Care for people. Listen to them without judgement. Assume positive intent. Meet them where they are and help them find the next step.
  9. Show low tolerance for organizational impediments.

Below diagram depicts the misunderstood stances of a scrum master

 

Stances of a scrum master

 

Stances of a scrum master are:

  1. Servant Leader
  2. Coach
  3. Facilitator
  4. Teacher
  5. Mentor
  6. Manager
  7. Impediment Remover
  8. Change Agent

Scrum Master as a Servant Leader

  1. Setting up Scrum as a servant process, not a commanding process
  2. Guiding the Development Team towards self-organization
  3. Leading the team through healthy conflict and debate
  4. Shielding the team from disturbance and external threats
  5. Helping the team make visible, remove and prevent impediment
  6. Creating transparency by radiating information via Scrum events and artifacts

Scrum Master as a Coach

  1. Coaching the Individual in –
    1. Focusing on mindset and behavior
    2. Using Scrum well
    3. Taking next step in his/her Agile journey
  2. Coaching the Team in –
    1. Creating a learning culture
    2. Changing mindset for continuous improvement
    3. Problem solving and conflict resolution
  3. Coaching the organization in –
    1. Collaborating with the Scrum team
    2. Doing product management with a focus on business value
    3. Delivering high quality and valuable products

Scrum Master as a Facilitator

  1. Facilitate the Scrum process and the continuous improvement of the process
  2. Facilitate the integration of Scrum team into the wider organization
  3. Facilitates the Scrum events to be purposeful and effective
    1. Daily Scrum – an atmosphere where healthy peer pressure occurs on delivering quality, commitment and addressing impediments
    2. Sprint Planning – collaboration between the Development Team and the Product Owner, keeping a strong focus on delivering value
    3. Sprint Review – Scrum team, sponsors and stakeholders collaborate to work as One team with the same purpose
    4. Sprint Retrospective – a safe atmosphere in which “elephant in the room” is addressed

Scrum Master as a Teacher

  1. Teach Agile during the team start-up
  2. Teach the Scrum team about Empiricism
  3. Teach about Scrum to Scrum team and other stakeholders
  4. Teach the difference between Scrum the Best practices
  5. Teach the team about the self-organization
  6. Team the team about removing impediments
  7. Teach the team about the importance of the product vision
  8. Team the team about visualizing progress
  9. Teach the Product Owner about Backlog Management
  10. Teach the team to have fun

Scrum Master as a Mentor

  1. Shu – Follow the Rules
    1. Scrum Master acts as a teacher
    2. Shares knowledge and skills
    3. Provide instructions on “How to do”
  2. Ha – Break the Rules
    1. Offers new perspectives and possibilities
  3. Ri – Be the Rule
    1. Act as a counsellor
    2. Give advice whenever asked for it

Scrum Master as a Manager

  1. Manages impediments
  2. Manages the process
  3. Manages the boundaries of self-organization
  4. Manages the team’s health
  5. Manages the culture

Scrum Master as a Impediment Remover

  1. Respect the self-organizing capability of the development team
  2. Creating environment where Development Team feel safe to raise impediments
  3. Understand the meaning of “Impediment”
  4. Don’t wait until the Daily Scrum
  5. Improve transparency by using the Impediment board
  6. Be bold and creative in removing impediments

Scrum Master as a Change Agent

  1. Creating an environment that allows the spirit of Scrum to thrive
  2. Leading and coaching the organization in its Scrum adoption
  3. Helping employees and stakeholders understand and enact Scrum development
  4. Causing change that increases the productivity of Scrum Team
  5. Working with other Scrum Masters to increase the effectiveness of Scrum in the organization
  6. Planning Scrum implementation within the organization

Scrum Master Service to the Product Owner

  1. Finding techniques for effective Product Backlog management.
  2. Helping the Scrum Team understand the need for clear and concise Product Backlog items.
  3. Understanding product planning in an empirical environment.
  4. Ensuring the Product Owner knows how to arrange the Product Backlog to maximize value.
  5. Understanding and practicing agility.
  6. Facilitating Scrum events as requested or needed.

Scrum Master Service to the Development Team

  1. Coaching the Development Team in self-organization and cross-functionality.
  2. Helping the Development Team to create high-value products.
  3. Removing impediments to the Development Team’s progress.
  4. Facilitating Scrum events as requested or needed.
  5. Coaching the Development Team in organizational environments in which Scrum is not yet fully adopted and understood.

Scrum Master Service to the Organization

  1. Leading and coaching the organization in its Scrum adoption.
  2. Planning Scrum implementations within the organization.
  3. Helping employees and stakeholders understand and enact Scrum and empirical product development.
  4. Causing change that increases the productivity of the Scrum Team.
  5. Working with other Scrum Masters to increase the effectiveness of the application of Scrum in the organization.

Scrum Team

It is the team which works for SDLC of the application. This team includes developers, testers, technical lead, product owner and scrum master. Scrum Teams deliver products iteratively and incrementally, maximizing opportunities for feedback. The Development Team consists of professionals who do the work of delivering a potentially releasable Increment of “Done” product at the end of each Sprint. Only members of the Development Team create the Increment.

  1. They are self-organizing. No one (not even the Scrum Master) tells the Development Team how to turn Product Backlog into Increments of potentially releasable functionality;
  2. Development Teams are cross-functional, with the skills as a team necessary to create a product Increment;
  3. Scrum recognizes no titles for Development Team members other than Developer, regardless of the work being performed by the person; there are no exceptions to this rule;
  4. Scrum recognizes no sub-teams in the Development Team, regardless of domains that need to be addressed like testing or business analysis; there are no exceptions to this rule.
  5. Individual Development Team members may have specialized skills and areas of focus, but accountability belongs to the Development Team as a whole.

Product Owner

A Product Owner drives the product from business perspective and is the one who decides and defines requirements, prioritize their values and release dates. Product owner is also involved in iteration planning and release planning meetings.

  1. Clearly expressing Product Backlog items;
  2. Ordering the items in the Product Backlog to best achieve goals and missions;
  3. Optimizing the value of the work the Development Team performs;
  4. Ensuring that the Product Backlog is visible, transparent, and clear to all, and shows what the Scrum Team will work on next;

Artefacts

Sprint Backlog

  1. Sprint backlog consists of the selected product backlog items and a plan to deliver them.
  2. Selected Product Backlog items are often decomposed.
  3. Work for the Sprint emerges.
  4. Development team members sign up for work, they aren’t assigned.
  5. Development team members may modify the Sprint Backlog anytime, as they see fit.

Product Backlog

The product backlog is a list of all the product features generally defined by “user stories”. User stories define everything potential users want to do on the site. There are many tools to keep track of your project backlog, both analogue and digital options.
After all user stories are created, they are ranked based on the priority and grouping on the stories. Grouping is done based on the inter-dependencies of the stories

Events

Sprint

Agile projects are broken down into small, consistent time intervals. These intervals are referred to as sprints.
Sprints are time-boxed iterations that serve iterative-incremental development.

  1. All development is done within a sprint
  2. A Sprint contains the time-boxed scrum events
  3. A Sprint is one month or less, and it is best to have a consistent duration
    1. Sprint length is determined by acceptable planning horizon
  4. Scrum known no phases, only Sprints
    1. No testing, hardening, release, analysis Sprints

The entire point of Scrum is to create a Done increment

A sprint has a time duration of 1 – 3 weeks depending on the extent of the overall project. Before each sprint, there is a sprint planning meeting. This meeting determines what the goals are for that sprint. Based on the team velocity, a set of features are pulled from the top of the backlog. During the sprint, no features are added, and the sprint goals don’t change

Sprint Planning

This is the first meeting of every sprint and the amount of work which can be achieved in the sprint is decided in this meeting depending on the team velocity. User stories are assigned to the dedicated team as per the requirement and analysis.

 

Daily Scrum

Every morning of the sprint the project team gets together for a short (under 15 minute) meeting. This meeting takes place at the same time every day and includes everyone on the project.

  1. 15-minute time-box daily event.
  2. Consistent place and time.
  3. Development team inspects their progress toward the Sprint goal
  4. Development team creates a plan for the next 24 hours.
  5. Not a problem-solving meeting.
  6. Not a status meeting.

Each person on the team is tasked to answer 3 simple questions:

  • What did you do yesterday?
  • What you are going to do today?
  • Any blockers or dependencies in your way?

Sprint Review/ Retrospective Meeting

At the end of every sprint, A Sprint Retrospective meeting takes place with a functional demo of the user stories that has been completed during the sprint. The sprint review meeting brings together the project team and other project stakeholders like the client to present the work that was completed.

  1. Scrum Team inspects how the last sprint went
    1. People, relationships, process, tools
    2. Definition of “Done”
  2. Scrum team selects actionable improvements for implementation in next Sprint.

Scrum events quick reference

Event

Inspection Adaptation Who Attends

Time-box for 1 Month

Sprint Planning Product Backlog Sprint Goal, Forecast, Sprint Backlog Scrum Team 8 hours
Daily Scrum Progress toward sprint goal Sprint Backlog

Development Team

15-minutes (always)
Sprint Review Increment, Sprint, Product Backlog Product Backlog Scrum Team Stakeholders 4 hours
Sprint Retrospective Sprint Actionable and committed improvements Scrum Team

3 hours

 

ResourceResolver Object in AEM6.1/6.0 Sling Services

As we know that getAdministrativeResourceResolver() method has been deprecated from ResourceResolverFactory interface in AEM6 and above versions. Then the question is-

Q1). How to get ResourceResolver object in Sling services in AEM6.0 and above versions?

If you are working with AEM6 or AEM6.1 then you have two options-

  1. If you know the credentials of an User and want that user credential in your service then go with getResourceResolver() method.
  2. If you don’t have user credentials and want to access ResourceResolver object then you have to use
    getServiceResourceResolver() method. as shown below –
    Note : – In this case you have to add a configuration in your Felix Console to your AEM instance.
Q2). What configuration I need to do for AEM6.0?

For AEM6.0,  configuration steps are –

  1. Go to Felix Console configuration tab i.e. http://localhost:4502/system/console/configMgr
  2. Search for User Mapping as shown in figure-
  3. Click on this service to edit it’s configuration.
  4. Here you have to add one entry and the syntax of the entry is –
    “Bundle symbolic Name”:”SubServieName”=”User Name”

    1. “Bundle symbolic Name :-  Here you have to add the bundle symbolic name where you are creating service.
    2. “SubServieName”:- This is the name you provided as a value of  ResourceResolverFactory.SUBSERVICE property i.e. “testService”.
    3. “User Name” :- This  is the user name for ex. “admin”So in my case this configuration field value becomes “com.blog.blog-bundles:testService=admin”
    After adding this entry your configuration looks like-
  5. Now everything is set for AEM6.0.
Q3). will these configurations work for AEM6.1?

No

Q4). What configuration, do I need for AEM6.1?

If you are working with AEM6.1 that you have to complete all steps explained for AEM6.0. To make these configurations  working for AEM6.1, you have to ensure that the “jcr:PrimaryType” of your user is “rep:SystemUser” i.e if you are trying to use “admin” user. Then it will not work as it’s “jcr:PrimaryType” value is  “rep:User”.

Q5). What do you mean by “jcr:PrimaryType” as “rep:SystemUser”?

It means that user is just not a repository user. It must be system user.

Q6). How to create System User in AEM6.0?

For creating System User, follow these steps-

  1. Go to CRX Explorer http://localhost:6502/crx/explorer/index.jsp
  2. Login as Administrator i.e. using “admin:admin”
  3. Click on “User Administration”, you will see a screen just like this –
  4. Here you will see a option of “Create System User”, Click on this button.
  5. Add a value for User Id field for ex. “testUser”
  6. Click on green button.
  7. Close the window.
  8. Go to CRXDE Lite, your “testUser” will be created under /home/system directory. If you are not able to find then search for “testUser” in home screen. You will get the location.
Q7). How to use this user?

In your “Apache Sling Service User Mapper Service” configuration change your entry from –
com.blog.blog-bundles:testService=admin to com.blog.blog-bundles:testService=testUser

Q8). Should I do this configuration at “Apache Sling Service User Mapper Service” configuration or should I create a “Apache Sling Service User Mapper Service Amendment” service configuration?

You can do it by both ways. But as “Apache Sling Service User Mapper Service” is a service factory in AEM6.1 so as best practices you should create another service configuration by clicking on plus button at the front of “Apache Sling Service User Mapper Service Amendment”.
When you click on “+” button, one new configuration will be created at the end. Click on that service and do this configuration there. Your code will work in same manner as working before.

Happy Coding..!!

Ankur Chauhan
Tech Lead.

Secure Apache from Clickjacking

In this post, I will explain an important Apache2 configuration, this configuration is used to stop clickjacking. I got to know about clickjacking when I was working with security checklist in AEM.
Q1. What is clickjacking?

Clickjacking, also known as a “UI redress attack”, is when an attacker uses multiple transparent or opaque layers to trick a user into clicking on a button or link to another page when they were intending to click on the top level page. Thus, the attacker is “hijacking” clicks meant for their page and routing them to another page, most likely owned by another application, domain, or both. If it is still not clear to you then I am attaching a video URL that will explain it in a much better way.

Q2. How to stop clickjacking in the AEM using Apache2 Server?
There is a header configuration named as X-Frame-Options, using this configuration, you can stop the clickjacking.
Q3. What is the syntax of this configuration?

Header set X-Frame-Options: “sameorigin”

Q4. Where do we find this configuration?
In Apache2.4 you have a security.conf file in conf-available directory. In this file, search for X-Frame-Options, it is already present there but commented by default. Now you have two options.
  1. Uncomment this setting and restart your Apache2 server. 
  2. Copy and paste this setting in apche2.conf file, uncomment it, and restart your Apache server.

In my case, I copied and pasted this setting in apche2.conf file, uncommented it and restarted my Apche2 server.

Q5. Apache Server is throwing error when restarting after this configuration?
It may be possible that you will get an error  at the time of starting the Apache2 server, after adding this configuration, the reason is, this configuration requires mod_headers.so module enabled, which is by default disabled. So enable mod_headers.so module and your Apache server will start running successfully.
Q6. How to enable Headers.mod in Apache2 server?

For enabling this module you have a headers.load file present in mods-available directory in your Apache2 server. In my case, it is present at /etc/apche2/mods-available. Just do one thing, create a softlink in your mods-enabled folder. If you are an Ubuntu user execute this command-

Now you will see this soft link in your mods-enabled folder. Restart your Apache2 Server.
 Q7. How to check whether it’s working or not?

After restarting your Apache2 server, just hit a non cached page via Apache2 Server. Open debugger and check the response header. You will  see X-Frame-Options header field, as shown below

If you get this option on your page it means your configuration is working.

Happy Coding..!!

Ankur Chauhan
Tech Lead.