Agile mindset and software development
Note taker: Takahiro
Agile Development Workshop / Scrum
- Kevin: facilitator working in Agile for many years.
- Kevin In late 90s originally defined as "lightweight processes" but changed to Agile.
- Evolved in response to waterfall planning where everything was mapped out from beginning to end; focus on allowing for adaptable change to conditions.
- Back in 2000 Agile was a radical idea that scared developers and managers.
- Nowadays pretty widely accepted. Believes that Agile is more humane than other types of project management processes.
- Development is part of design (or is it design is part of development?) process, each developer has to think of how each part will fit into the whole. Focuses on communication/connection.
- Core focus: human oriented
- Individual and interaction over processes and tools.
- Working software over comprehensive documentation.
- Customer collaboration over customer negotiation
- Responding to change over following a plan
The Different flavors of Agile
- Daily meetings, prioritized backlogs
- A number of rules and practices, but just doing them may or may not work. Need to see how it fits into your particular workflow
- It's like Scrum but...
- Moving through system as quickly as possible
- Very flexible
- Half of each
- Pair programming
- Frequent face-to-face meetings with customers/client/stakeholders
Experiences and Questions
Jessie Past experience of sticking to one implementation road map even if it doesn't quite work/fit.
Claire "Coding your way to victory" one definition. Outside of these systems, what are the questions, checklists, systems that actually makes it Agile?
Kevin: Instead of focusing on strict adherence to any given system check if it works for you, how does it fit with the goals of the client/customer/stakeholders?
- Agile relies on good quality code,
- Need to be responsive, but have a solid base.
- Again the human side-developers need to communicate with users/product managers/clients.
Miles Summary: the main focus of Agile is one of good communication and efficient integration.
Kevin Get something out there, maybe it's not good enough, but customers will provide feedback.
Neal what about use cases or a walkthrough? How is Agile embedded in project conversations, how does it increase efficiency and communication?
Miles how does it work in a solo context?
Kevin it does work in a solo context, and is optimal for smaller groups < 7.
Use Cases & Process
- 3 person development team
- Many sources of customer feedback; talking to users for features/requirements.
- Uses off-the-shelf software.
- Have collected many "user stories"
Kevin One part of process is to collect user stories from stakeholders.
- Interviews of groups, user stories turned into feature list.
- Currently in process of starting to write code.
Kevin What's relevant at this stage is to identify the MVP--what's the Minimum Viable Product? In order to prioritize core functionality need to really understand user needs.
Yesenia How do you divide and delegate tasks?
Kevin This is where you get into the different types of Agile systems defined above. Usually this relies on people taking responsibility for tasks and writing high quality code/doing things well.
Kevin In an Agile workflow a hierarchical organization may not be compatible
Jessie, Yesenia has a 1.0 version of something that was created, but doesn't necessarily fit current goals, needs. Do we start Agile using existing crap, or start afresh?
- Is Agile something that can be retrofitted into an existing project that wasn't developed in that manner?
Kevin The bigger and worse off the inherited project is from the start, the harder it is to adapt an Agile workflow into the project.
Typically these cases come in two flavors:
- someone built an existing prototype,
- or built something for production, but it's not quite what we want.
A big red flag in these circumstances is that there are no well defined boundaries, which may lead to huge scope creep.
Petersen how do you interact with clients?
Kevin First build your MVP, then show the client in stages every two weeks so that they can provide feedback. During the process add features, and/or address bugs.
Tak How do you manage timelines?
Kevin Kanban approach: you can collect metrics based on history of the rate in which you complete stories/features.
Kevin Scrum approach: you can estimate number of story points over a period of time and then once you have experience you can fine-tune that estimate.
Miles So how does this work within a set timeline?
Kevin having a set "triangle", (an inflexible timeline/ scope/ quality of product) will create problems when using an Agile workflow. It 'will' create issues with the ability to produce quality code. With Agile you try to focus on maximizing the quality of your code. Instead an Agile methodology says that you will get 'something' by a 'certain date', it will have 'some features'--maybe more or less than what client wants.
Oscar How do we get the feedback loop right, fine-tune it?
Kevin Many people get fixated around end product delivery, but this kind of thinking can be dangerous within an Agile context.
Agile in Other Contexts Beyond Software Dev
Oscar Can you apply Agile in other contexts beyond software development?
Miles Relates to process of writing an essay in high school. When you're working in a small group, the ability to self assess is important.
Kevin Even working alone without being able to interview a client/audience, you can still put yourself in the shoes of the end user. Works really well for processes that are amenable to change and amendment, but not so great for building physical, end results focused things like a skyscraper.
Oscar Can Agile be used for community organizing?
Kevin Absolutely. Relates experience developing software for a non-profit embarking on a campaign. Iterative thinking vs. traditional end focused process: deliver what the customer wants now, instead of focusing on delivering something that they wanted and planned 1 to 2 years ago. Try to pilot your project, frequently adapt and respond to changes.
Tak Related experience working with policy think tank that publishes reports. Needs to work with communities on the ground to update/fine-tune goals and release cycles for reports. Works in an Agile manner, though policy analysts wouldn't see it that way.
Kevin works well with documentation, wikis blog, information that needs to be freqquently updated--living documentation.
Drawbacks to Agile
Claire What about Agile and security?
Kevin Agile workflows create issues for the security focused, and for UI designers. UI design usually has a fixed idea of the end product. Security experts would typically emphasize that security needs to be a foundational part of a project at the beginning. This is a known point of contention between proponents of Agile and security folks. You need to understand security issues and risks from the beginning of the project--i.e. don't make security part of an Agile workflow.
Agile, Education, Implementation
Oscar are they teaching Agile in high school?
Miles at Oakland Tech they aren't explicitly teaching Agile or CI (Continuous Integration), but they are imparting the concepts implicitly.
Christy senior year at Oakland Tech they're learning Python, junior year Java.
Jessie what about testing, CI and its implementation? How does one wrap their head around a cultural issue, write tests and then leveraging tools to implement it?
Kevin this is a quandary that other organizations--much larger, and more well funded--are struggling with, don't feel bad.
Tools, No Pain No Agile??
Kevin From a tool standpoint you need a way to track changes, and version changes (i.e. Git)
- CI works hand-and-hand with Agile, if something is painful and takes too long, do it more often!
- If you commit to do something more frequently that is painful, having to do it more often will force you to address the issues, improve the process and make it more efficient.
Kevin The goal is to find an Agile process that works for your team at this moment and context. Not a rigid adherence to some set process or tools. However, it's advisable to stick with one flavor of Agile first before tweaking and mixing them.