7. What is Agile?
Agile Methodology involves continuous iteration of development and testing in the SDLC process. This
software development method emphasizes on iterative, incremental, and evolutionary development.
Agile development process breaks the product into smaller pieces and integrates them for final testing. It can be
implemented in many ways, including scrum, kanban, scrum, XP, etc
Agile methodology definition:
Agile methodology is a type of project management process, mainly used for software development, where
demands and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and
their customers.
The Agile methodology is a collection of principles that value adaptability and flexibility. Agile aims to provide
better responsiveness to changing business needs and therefore focuses on enabling teams to deliver in
workable increments.
Stemming from the values and principles of the Agile Manifesto, it was created as a response to the
inadequacies of traditional development methods such as the Waterfall method. The software industry is a
highly competitive market due to the fact that software is something that can be continuously updated. This
means that developers need to constantly improve and innovate their products to keep on top of the game—and
the linear, sequential approach of the Waterfall method just wasn’t cutting it.
What is the Agile Manifesto?
The Agile Manifesto is a declaration of the values and principles expressed in Agile methodology. Made up of
four foundational values and 12 key principles, it aims to help uncover better ways of developing software by
providing a clear and measurable structure that promotes iterative development, team collaboration, and change
recognition.
The values and principles of the ‘Manifesto for Agile Software Development’ are:
Values:
1.
1. Individuals and interactions over processes and tools
2. Working software over comprehensive documentation
3. Customer collaboration over contract negotiation
4. Responding to change over following a plan
Principles:
1.
1. Customer satisfaction through early and continuous software delivery
8. 2. Accommodate changing requirements throughout the development process
3. Frequent delivery of working software
4. Collaboration between the business stakeholders and developers throughout the project
5. Support, trust, and motivate the people involved
6. Enable face-to-face interactions
7. Working software is the primary measure of progress
8. Agile processes to support a consistent development pace
9. Attention to technical detail and design enhances agility
10. Simplicity
11. Self-organizing teams encourage great architectures, requirements, and designs
12. Regular reflections on how to become more effective
What is Agile project management?
Agile project management is a methodology that is commonly used to deliver complex projects due to its
adaptiveness. It emphasizes collaboration, flexibility, continuous improvement and high quality results. It aims
to be clear and measurable by using six main deliverables to track progress and create the product.
The deliverables:
1.
1. Product vision statement: A summary that articulates the goals for the product.
2. Product roadmap: The high-level view of the requirements needed to achieve the product vision.
3. Product backlog: Ordered by priority, this is the full list of what is needed for your project.
4. Release plan: A timetable for the release of a working product.
5. Sprint backlog: The user stories (requirements), goals, and tasks linked to the current sprint.
6. Increment: The working product functionality that is presented to the stakeholders at the end of the
sprint and could potentially be given to the customer.
There are various frameworks within Agile project management that can be used to develop and deliver a
product or service. Each framework highlights a specific approach and focuses on a determined outcome.
Depending on the requested outcome, the particular approach of Agile is chosen and applied. While they each
have their own set of characteristics and terminology, they share common principles and practices.
9. Two of the most popular ones that support the Agile development life cycle are Scrum and Kanban.
Agile Scrum methodology
Scrum is an Agile framework that is used to implement the ideas behind Agile software development. It is the
most popular Agile framework used in companies. Created by Jeff Sutherland and Ken Schwaber (who were
also part of the 13 individuals who cemented the Agile Manifesto), it comprises five values: commitment,
courage, focus, openness, and respect. Its goal is to develop, deliver, and sustain complex products through
collaboration, accountability, and iterative progress.
What distinguishes Scrum from other Agile methodologies are the roles, events, and artifacts that it is made up
of, with which it operates. Here’s what they are:
Scrum team roles
Product owner: Product expert who represents the stakeholders, and is the voice of the customer.
Development team: Group of professionals who deliver the product (developers, programmers, designers).
Scrum master: Organized servant-leader who ensures the understanding and execution of Scrum is followed.
Scrum events
Sprint: Iterative timeboxes where a goal is accomplished. Time frame does not exceed one calendar month and
is consistent throughout the development process.
Sprint planning: Where the entire Scrum team gets together—at the beginning of every Sprint—to plan the
upcoming sprint.
Daily Scrum: 15 minute time boxed meeting held at the same time, every day of the Sprint, where the previous
day’s achievements are discussed, as well as the expectations for the following one.
Sprint review: An informal meeting held at the end of every Sprint where the Scrum team present their
Increment to the stakeholders, and discuss feedback.
Sprint retrospective: A meeting where the Scrum team reflects on the proceedings of the previous Sprint and
establishes improvements for the next Sprint.
Scrum Artifacts
Product backlog: Managed by the Product Owner, it’s where all the requirements needed for a viable product
are listed in order of priority. Includes features, functions, requirements, enhancements, and fixes that authorize
any changes to be made to the product in future releases.
Sprint backlog: A list of the tasks and requirements that need to be accomplished during the next Sprint.
Sometimes accompanied by a Scrum task board, which is used to visualize the progress of the tasks in the
current Sprint, and any changes that are made in a ‘To Do, Doing, and Done’ format.
Kanban
Kanban is a highly visual method popularly used within Agile project management. It paints a picture of the
workflow process, with an aim to identify any bottlenecks early on in the process, so that a higher quality
product or service is delivered.
Its six general practices are:
1.
1. Visualization
10. 2. Limiting work in progress
3. Flow management
4. Making policies explicit
5. Using feedback loops
6. Collaborative or experimental evolution
A concept that was developed in the production line of Toyota factories in the 1940s, Kanban achieves
efficiency through visual cues to signal certain stages of the development process. The said cues are a Kanban
board, Kanban cards, and sometimes even Kanban swimlanes.
Kanban board: A visual management tool used to visualize the development process. It can be either physical (a
whiteboard, sticky notes, and markers) or virtual (like Zenkit’s online project management tool), and can be used
for personal productivity, as well as professional use.
Kanban cards: Cards that depict a work item/task in the work process. Used to communicate progress with your
team, it represents information such as status, cycle time, and impending deadlines.
Kanban swimlanes: A visual element on the board that allows you to further distinguish tasks/items by
categorizing them. Flowing horizontally, it offers distinction and provides a better overview of the workflow.
Other Agile development life cycle approaches
Extreme Programming (XP)
Based on the five values of communication, simplicity, feedback, courage, and respect, XP is a framework that
aims to produce a higher quality of life for the development team, as well as a higher quality product, through a
collection of engineering practices. These practices are:
The Planning Game
Small Releases
Metaphor
Simple Design
Testing
Refactoring
Pair Programming
Collective Ownership
Continuous Integration
40-hour week
On-site Customer
Coding Standard
Crystal
Crystal comprises a family of Agile methodologies that include Crystal Clear, Crystal Yellow, and Crystal
Orange. Their unique characteristics are guided by factors such as team size, system criticality, and project
priorities. Key components include teamwork, communication and simplicity, as well as reflection to regularly
11. adjust and improve the development process. This Agile framework points out how each project may require a
tailored set of policies, practices, and processes to meet the project’s specific characteristics.
Dynamic Systems Development Method (DSDM)
DSDM is an Agile methodology that focuses on the full project lifecycle. It was created in 1994 after users of
the Rapid Application Development (RAD) wanted more governance and discipline to this iterative way of
working. Based on eight principles, its philosophy is ‘that any project must be aligned to clearly defined
strategic goals and focus upon early delivery of real benefits to the business.’
It promotes the use of the following practices so that it can offer best practice guidance for on-time, in-budget
delivery of projects:
Facilitated Workshops
Modelling and Iterative Development
MoSCoW Prioritisation
Time boxing
DSDM is designed to be independent of, and can be implemented in conjunction with, other iterative
methodologies.
Feature-Driven Development (FDD)
FDD is a lightweight iterative and incremental software development process. With an objective to deliver
tangible, working software in a timely manner, it is an Agile methodology that entails specific, very short
phases of work, which are to be accomplished separately per feature.
Its development process is established on a set of best practices with a client-value aim. The eight best practices
are:
1.
1. Domain Object Modeling
2. Developing by Feature
3. Component/Class Ownership
4. Feature Teams
5. Inspections
6. Configuration Management
7. Regular Builds
8. Visibility of progress and results
Agile methodology best practices
It’s always handy to know how to do things best. Here are seven things you and your team should be doing
when implementing any type of Agile methodology:
Customer collaboration
One of the core values stated in the Agile Manifesto, customer collaboration is a vital part of Agile
methodology. Through consistent communication with the development team, the customer should always be
aware of the progress, and the combined effort will result in a higher quality product.
12. User Stories
A tool used to explain a software feature from an end-user perspective, the purpose of a User Story is to create a
simplified description of a requirement. It helps to picture the type of user of the product, what they want, and
the reason(s) for it. A common User Story format that is used is:
As a [role], I want [feature], because [reason].
Continuous Integration
Continuous Integration (CI) involves keeping the code up to date by producing a clean build of the system a few
times per day. With a rule stating that programmers never leave anything unintegrated at the end of the day, it
enables the delivery of a product version suitable for release at any moment. What CI seeks to do is to minimize
the time and effort required by each integration.
Automated tests
Performing automated tests keeps the team informed about which of the code changes are acceptable, and
whether or not a functionality is working as planned. Regression tests are run automatically before work starts.
Pair programming
Programming in pairs aims to enhance better designs, less bugs, and a sharing of knowledge across the
development team. One of the least-embraced Agile programmer practices, it involves one programmer
‘driving’ (operating the keyboard), while the other ‘navigates’ (watches, learns, provides feedback). The roles
can be rotated.
Test-driven development (TDD)
TDD aims to foster simple designs and inspire confidence. Instead of a process where software is added that is
not proven to meet requirements, it is a method based on the repetition of a very short development cycle where
requirements are turned into test cases, and then the software is improved to pass the new tests.
Burndown charts
A burndown chart is a graphical representation of the work that is left to do versus the time you have to do it.
Using one as part of your Agile project management plan enables you to forecast when all the work will be
completed. A detailed burndown chart will also include the amount of User Stories per unit of time.
Agile methodology is an effective process for teams looking for a flexible approach to product development. No
longer exclusive to the software industry, it can be implemented to any business venture that requires a non-
linear plan of attack that also needs to value customer collaboration, effective teamwork, responsive changes,
and of course, quality results.
13. Difference Between Agile and DevOps
Parameter Agile DevOps
What is it?
Agile refers to an iterative approach which
focuses on collaboration, customer
feedback, and small, rapid releases.
DevOps is considered a practice of bringing
development and operations teams together.
Purpose Agile helps to manage complex projects.
DevOps central concept is to manage end-to-end
engineering processes.
Task Agile process focusses on constant changes. DevOps focuses on constant testing and delivery.
Implementation
Agile method can be implemented within a
range of tactical frameworks like a sprint,
safe and scrum.
The primary goal of DevOps is to focus on collaboration,
so it doesn't have any commonly accepted framework.
Team skill set
Agile development emphasizes training all
team members to have a wide variety of
similar and equal skills.
DevOps divides and spreads the skill set between the
development and operation teams.
Team size
Small Team is at the core of Agile. As smaller
is the team, the fewer people on it, the
faster they can move.
Relatively larger team size as it involves all the stack
holders.
Duration
Agile development is managed in units of
"sprints." This time is much less than a
month for each sprint.
DevOps strives for deadlines and benchmarks with
major releases. The ideal goal is to deliver code to
production DAILY or every few hours.
Feedback Feedback is given by the customer. Feedback comes from the internal team.
Target Areas Software Development End-to-end business solution and fast delivery.
Shift-Left
Principles
Leverage shift-left Leverage both shifts left and right.
Emphasis
Agile emphasizes on software development
methodology for developing software.
When the software is developed and
released, the agile team will not care what
happens to it.
DevOps is all about taking software which is ready for
release and deploying it in a reliable and secure
manner.
Cross-functional
Any team member should be able to do
what's required for the progress of the
project. Also, when each team member can
perform every job, it increases
understanding and bonding between them.
In DevOps, development teams and operational teams
are separate. So, communication is quite complex.
14. Parameter Agile DevOps
Communication
Scrum is most common methods of
implementing Agile software development.
Daily scrum meeting is carried out.
DevOps communications involve specs and design
documents. It's essential for the operational team to
fully understand the software release and its
hardware/network implications for adequately running
the deployment process.
Documentation
Agile method is to give priority to the
working system over complete
documentation. It is ideal when you're
flexible and responsive. However, it can hurt
when you're trying to turn things over to
another team for deployment.
In the DevOps, process documentation is foremost
because it will send the software to the operational
team for deployment. Automation minimizes the impact
of insufficient documentation. However, in the
development of complex software, it's difficult to
transfer all the knowledge required.
Automation
Agile doesn't emphasize on automation.
Though it helps.
Automation is the primary goal of DevOps. It works on
the principle to maximize efficiency when deploying
software.
Goal
It addresses the gap between customer
need and development & testing teams.
It addresses the gap between development + testing
and Ops.
Focus
It focuses on functional and non-function
readiness.
It focuses more on operational and business readiness.
Importance Developing software is inherent to Agile.
Developing, testing and implementation all are equally
important.
Speed vs. Risk
Teams using Agile support rapid change,
and a robust application structure.
In the DevOps method, the teams must make sure that
the changes which are made to the architecture never
develop a risk to the entire project.
Quality
Agile produces better applications suites
with the desired requirements. It can easily
adapt according to the changes made on
time, during the project life.
DevOps, along with automation and early bug removal,
contributes to creating better quality. Developers need
to follow Coding and Architectural best practices to
maintain quality standards.
Tools used
JIRA, Bugzilla, Kanboard are some popular
Agile tools.
Puppet, Chef, TeamCity OpenStack, AWS are popular
DevOps tools.
Challenges
The agile method needs teams to be more
productive which is difficult to match every
time.
DevOps process needs to development, testing and
production environments to streamline work.
Advantage
Agile offers shorter development cycle and
improved defect detection.
DevOps supports Agile's release cycle.
15. PMP (Six Performance Domains)
1) Initiating the project
2) Planning the project
3) Executing the project
4) Monitoring and controlling the project
5) Closing the project
6) Professional and social Responsibility
PMP (Five Process Group)
1) Initiating
2) Planning
3) Executing
4) Monitoring and controlling
5) Closing
Each Process Group consist of many Processes (42 mapped to 5 groups)
Process Group -> Processes -> Knowledge Area
Knowledge Area
1) Project Integration Management
2) Project Scope Management
3) Project Time Management
4) Project Cost Management
5) Project Quality Management
6) Project Human Resource Management
7) Project Communication Management
8) Project Risk Management
9) Project Procurement Management
Task (project management)
In project management, a task is an activity that needs to be accomplished within a defined period of time or by a
deadline to work towards work-related goals. It is a small essential piece of a job that serves as a means to differentiate
various components of a project. A task can be broken down into assignments which should also have a defined start
and end date or a deadline for completion. One or more assignments on a task puts the task under execution.
Completion of all assignments on a specific task normally renders the task completed. Tasks can be linked together to
create dependencies.
Tasks completion generally requires the coordination of others. Coordinated human interaction takes on the role
of combining the integration of time, energy, effort, ability, and resources of multiple individuals to meet a
common goal. Coordination can also be thought of as the critical mechanism that links or ties together the
efforts on the singular level to that of the larger task being completed by multiple members. Coordination
allows for the successful completion of the otherwise larger tasks that one might encounter.
In most projects, tasks may suffer one of two major drawbacks:
Task dependency: Which is normal as most tasks rely on others to get done. However, this can lead to
the stagnation of a project when many tasks cannot get started unless others are finished.
Unclear understanding of the term complete: For example, if a task is 90% complete, does this mean that
it will take only 1/9 of the time already spent on this task to finish it? Although this is mathematically
sound, it is rarely the case when it comes to practice
16. NoteJS
Node.js is an open source server environment. – Free - runs on various platforms (Windows, Linux, Unix, Mac OS X,
etc.)
Node.js allows you to run JavaScript on the server.
Node.js runs single-threaded, non-blocking, asynchronously programming, which is very memory efficient.
Node.js can generate dynamic page content
Node.js can create, open, read, write, delete, and close files on the server
Node.js can collect form data
Node.js can add, delete, modify data in your database
To include a module, use the require() function with the name of the module:
Use the exports keyword to make properties and methods available outside the module file.
NPM is a package manager for Node.js packages, or modules if you like.
Modules are JavaScript libraries you can include in your project.
Every action on a computer is an event. Like when a connection is made or a file is opened.
Objects in Node.js can fire events, like the readStream object fires events when opening and closing a file: