6/21/18

Testing, Agile and Devops: How does it all jive?

Devops is slightly nebulous phrase because it's a mix of technologies, methods and roles.  In short, it means that operations works tightly with development during the development cycle and beyond.  Think of it as “shifting right” in the same way that many people talk about shifting quality left in the development process.

Some of the technologies are 
While there are many parts to Devops methods, the most interesting are:
    • With containers you can treat configuration like code -- storing the configuration as scripts in a revision control system.  So, the container configuration can be static and tracked.  This enhances security as well as making the configuration more transparent.
    The Devops role, is someone who specializes in these technologies. Also essential is someone who can work with the team and help interface with QA, security, development, operations.  The ultimate idea of Devops is embedding someone representing operations in the development team.

    So, how does it all come together?  Agile methods mean that you have potentially deployable code at the end of a sprint. With Devops that can become actually deployable. But, devops also helps make deploying to production less scary:
    • The deployment is automated.
    • SDETs have written automated regression tests to check the existing system.
    • Containers allow you to run multiple test deploys in parallel, testing multiple configurations.

    • Security configuration can be built in to the container scripts.
    Since automated tests, deployment and configuration are all code, they can be revised, tested and run automatically often.  This allows QA to focus during a sprint on the new functions, including end-to-end and user experience.


    3/12/18

    Product Camp Portland 2018

    Over the weekend I had the opportunity to attend Product Camp Portland.  My motivation was that usually I'm on the technical side of projects. Product Camp was a chance for me to explore and hear how people who work with the customer-side of development solve problems and explore possibilities.

    Product Camp is an Open Space conference, or un-conference, similar to Agile Open Northwest. This means that attendees pitch potential sessions and everyone votes on the topics they want to attend.

    The pitch process took about half an hour and it was interesting how interactive even that process was. Teresa Torres was the first woman in the line-up. She remarked how the gender ratio was biased 5:1 towards men. From her encouragement, more women proposed sessions and the end result for the conference was closer to 50/50. It was an immediate and inspiring outcome.

    There were slots for 16 sessions in all. I was only able to attend four, but I took sketchnotes of the sessions I attended. It's a fun way for me to quickly internalize the topics and I like to share with attendees on twitter.  It's also a good way to meet people.
    Here are my notes.


    Arya from Cambia told her story how she became a product owner, and then discussed the key points for creating a compelling story that engages customers and colleagues.


    Dave Flotree covered the key points of how to gather user-validated design data through interviews. He also discussed how to use Affinity Diagrams to create a holistic picture of your users' needs.

    Teresa Torres gave her definition of continuous product discovery and then discussed the problems and questions people had about the process. 

    Paul W. Save and Dr. Quentin Caudron from CBRE had traveled all the way from Vancouver, Canada to talk about how product managers can integrate machine learning into their systems.  I really appreciated their talk, and also how enthusiastic they were about my sketchnotes.

    Overall, Product Camp Portland was conference which managed to stay cozy despite having over 350 attendees. I look forward to attending again.

    FYI, here's Mike Rohde's "The Sketchnote Handbook" which has a lot of good ideas and inspiration about using drawing to capture the ideas during meetings and conferences.


    10/20/17

    Pacific NW Software Quality Conference (PNSQC) 2017

    Once again I had the opportunity to attend the Pacific NW Software Quality Conference (PNSQC) in Portland, Oregon in October.  Although "Scaling Quality" was the official theme, the unofficial subtext seemed to be the importance of recognizing that people and teams have feelings. Humanity, doubt, uncertainty and joy were all topics covered by speakers. Unfortunately, I missed Penny Allen's keynote on the first day on "Quality Engineering 2017: Trends, Tricks, and Traps," but here are my sketchnotes from the talks I attended.

    In "The Power of Doubt," Zeger Van Hese acknowledges that "I don't know" may be the hardest phrase for any tech team to admit, but at the beginning of any project it is the most honest answer.  He discussed how to use skepticism and the scientific method to explore assumptions and advance incrementally without bias.


    Clyneice Chaney's presentation "Trimming Down your QA Effort While Maintaining Quality" covered ways for companies to apply Lean manufacturing principles to QA and development.  She looked at techniques for finding waste and methods for applying Lean solutions.


    Taking a cue from Stephen Covey, Phil Lew examined the "Seven Habits of Highly Effective Agile." His message is that agile is a long-term habit, and building an agile mindset takes time and should be deliberate.


    In Lee Copeland's talk he applied ideas from Eric Ries' "The Lean Startup" to the test environment.  "The Lean Startup Method and Its Value for Testers" related the core ideas of a the book: customer development, the build-measure cycle, the MVP, validated learning and "1 metric" to the testing process.


    Katy Sherman started her keynote with a some early morning dancing and then a flashlight poll to ask "Who Owns Quality In Agile?"  Then she got into the tough questions: after the first success of an agile transformation, how to integrate Quality into the full development lifecycle?


    A definition of ecology is "the branch of biology that deals with the relations of organisms to one another and to their physical surroundings."  In his talk "Product Ecology for the Elicitation of Requirements," Ruud Cox explained his method for exploring the relationships between the system under development and the people and environment where it will be used. By using various heuristics he maps the ecology of the stakeholders and other ecosystems such as value chains, supply chains, and user scenarios. He talked about using this method on projects ranging from medical devices to parking lot streetlights.


    I didn't get a chance to sketchnote it, but Berglind Bergsdóttir's presentation on "Feeling Like a Fake – The Impostor Syndrome" was inspiring and endearing. Her presentation was both vulnerable and empowering at the same time.

    Her team's project was to achieve alignment among all the Scrum teams in the company.  She presented the case study and lessons learned along the way.


    In "Scalable, Humane Code Review" Ian Dees pointed out a paradox: sometimes we can be more humane by automating the parts of the process that raise conflict.  As he mentions, "let the robot be the enforcer."



    Of all the talks, I was most looking forward to hearing from Rich Sheridan of Menlo Innovations and the author of "Joy, Inc." Earlier this year I had read his book as part of an Agile book club, and Menlo sounded like an ideal workplace. Later that day I had the opportunity to have dinner with Rich and some other PNSQC attendees, and he was as gracious and interesting as his writer's voice is in the book. My notes on his closing keynote "Build A Workplace People Love – Just Add Joy" are very sparse -- mostly because he covers the details much better in his book, but there were a few points I wanted to pull out for posterity.




    10/17/17

    Better Software 2017

    I had the good opportunity to speak at and attend TechWell's Better Software West in Las Vegas in June, 2017.  I helped present a workshop on Agile Risk Management, which was a great experience, but I also sketched the talks I was able to attend.  Here are some of the highlights.  Click on the images to see larger versions.

    Tanya Kravtsov from Audible presented a keynote on "Finding the Bottlenecks in the Agile and DevOps Delivery Cycle."



    Neal Ford of Thoughtworks gave a presentation called "Modern Evolutionary Software Architecture." It is based on his new book "Building Evolutionary Architectures."
    Its idea is that incremental developments in software engineering practices require rethinking how architecture changes over time. Ford presents ideas for designing an architecture that allows for evolution.


    David Litvak gave a wonderful talk called "From Monoliths to Services" about how he used microservice architecture to reduce the system's technical debt.


    Agile coaches Bob Galen and Josh Anderson took coaching to the next level by comparing "Football + Agile: Like Peanut Butter & Jelly?".  This was a fun talk, but it also gave some real insights into how coaching can improve the team.


    Lisa Calkins talked about project alignment in her presentation "Is Your Project Doomed at the Start?" Her IDGEM method helps product owners and managers understand the real value of the system.



    Ken Johnston of Microsoft gave a keynote on "Big Data: The Magic to Attain New Heights." He explained how Microsoft uses big data to assess everything from security and threat detection to a study on preventing SIDS (Sudden Infant Death Syndrome).


    Ryan Ripley of the Agile for Humans podcast gave a really interesting talk on "The No Estimates Movement."  I had previously heard Woody Zuill talk about this, and Ryan's presentation made me eager to try this out. #noEstimates



    Some of the most interesting and useful presentations were those that "accidentally" attended. "Agile Release Planning" by Sarah Harper  was one such talk. Within the hour I purchased a book she recommended, "Actionable Agile Metrics."


    10/16/17

    Pycon 2017

    Here are some live sketchnotes from Pycon 2017 in Portland, Oregon

    Pycon is a conference covering a variety of topics on the Python programming language. The conference travels around North America, spending two consecutive years in the host city. I missed the 2016 conference, but heeard good things so I wanted to attend while it was still in Portland (the 2018 Pycon will be in Cleveland, Ohio).

    Python is a Turing complete programming language which can be used for any software project, but because it has a lot of mathematics libraries it is frequently used by scientific communities for numerical data processing and manipulation.  As an open-source language, it has also a lot of extensions which make it useful as a daily cross-platform utility language. Because of this utility, I expected the talks to span a wide range of topics. I was not disappointed.

    Brendan McCollam covered a variety of different web authentication methods: OAuth, OAuth2, OpenID, OpenIDConnect, SAML, and Facebook Connect and the related options with his talk "Web identity: OAuth2 and OpenIDConnect."


    I was truly moved and inspired by Susan Tan's "Rants and Ruminations From A Job Applicant After 100 CS Job Interviews in Silicon Valley." As she says "In late August 2016, I quit an uninspiring full-time software job and talked to 100 employers in the San Francisco Bay Area to find the best fit."


    Andrew Baker presented "Five Ways to Deploy your Python Web App in 2017." This included ngrok, Heroku, “serverless” with AWS Lambda, Google Compute Engine and Docker.


    Moshe Zadka's talk was titled "Automate AWS With Python" and covered how to automate AMI builds, building Cloud Formation Templates and automating S3 bucket management.


    Deborah Hanus talked web-scraping with Python and Beautiful Soup in her presenation "Lights, camera, action! Scraping a great dataset to predict Oscar winners."


    Likewise, Sam Agnew of Twilio led the crowd in an amazing demo, using the FCEUX NES emulator to hack into the Legend of Zelda and hooking it up with Flask and Twilio so the crowd could control game play through texting in his talk "Hacking Classic Nintendo Games with Python."



    I didn't take sketchnotes on "Hacking Cars with Python," but it was an especially interesting presentation. I never realized how much data is available in even 2010 cars.  Eric Evenchick inspired me to buy an OBD2 Car Diagnostic Scanner and try it out.


    In his presentation "Look mum no hands! From blinking LEDs to a bike speedometer with MicroPython," Tim Head showed how to hack together a micro-controller in a wifi-enabled speedometer for your bike, using MicroPython.


    10/15/17

    2017 Terroir Creative Writing Festival

    These sketchnotes are from the 2017 Terroir Creative Writing Festival, held April 2017 at Chemeketa Community College, McMinnville.  The one-day festival is a mix of talks by authors and poets, as well as some interactive writing workshops.  The conference is organized by the Arts Alliance of Yamhill County, with the tagline "Our vision is to make Yamhill County a creative arts community."

    Kathleen Dean Moore, Ph.D., was completely amazing. Her keynote emphasized the human impact on species extinction and then underlined how artists, writers and visionaries are needed to have the influence to preserve Earth's diversity. Moore is a philosopher, climate activist, and the author or co-editor of thirteen books including "Great Tide Rising" and "Piano Tide." www.riverwalking.com


     Andrea Stolowitz held a group reading of the play "Teeth" and then led a writing exercise wherein we created a setting and populated it with characters and a backstory. www.andreastolowitz.com

    Author C. Morgan Kennedy, talked about world building and creating a context for your genre novel. Kennedy also writes The Melting Pot: Stories with Diversity & Multiculturalism column for Night Owl Reviews’ The Booklover e-magazine. www.cmorgankennedy.com


    Daniel Wilson, author of "How to Survive a Robot Uprising," "Robopocalypse," and other books talked about his new novel "Clockwork Dynasty" and provided his unique take on writing science fiction.


    I also caught the afternoon keynote by Oregonian columnist Steve Duin. He talked about the power of comics such as in Alison Bechdel's "Fun Home." He also listed some of the most amazing recent graphic novels:


    Jeff Lemire's "Essex County" and "Royal City"



    Nate Powell's "Swallow Me Whole"



    Lefevre's "The Photographer", a graphic documentary subtitled "Into War-torn Afghanistan with Doctors Without Borders."





    Mariko Tamaki "This One Summer"


    Royden Lepp's "Rust."











    The website for the annual festival is terroircreativewritingfestival.com. Or you can join their Facebook page for more info.

    1/22/17

    A Paper Prototyping Workshop


    Recently, I had a chance to sit in on a Paper Prototyping Workshop presented to a group of high school kids.  Here's the workshop description:
    "We'll learn about design thinking and prototyping and then guest speaker Daniel Wood, UX Designer at Liquid Agency, will give us tips on designing a user interface.  For the rest of the session we'll launch into a series of hands-on exercises that will guide us from brainstorming app ideas through creating paper prototypes to testing our user interfaces with real users."
    I had two reasons for attending the workshop.  A secondary goal was to see if I could get any tips for improving the way we use paper prototypes at work, but my primary goal was to see how to conduct a full-day workshop. Previously, I had conducted one-hour exercises at work but I was about to help with a full-day workshop at PNSQC in the fall of 2016, and I wanted to understand the arc of a multi-hour session.  This blog post documents the workshop, and adds some observations about the paper prototyping process I plan to document the workshop, but also to make some observations about 

    Step 1 - Understand the problem space

    The kids heard heard a short 15-minute lecture from a UX design expert, then spent the rest of the hour generating ideas for apps. The kids were asked to list sets of users (such as "gamers," "pet owners," or "elderly people"), various industries ("medicine," "entertainment") and technologies ("mobile," "VR," "IoT"). They wrote these ideas on sticky nodes and then combined the notes to create ideas for apps.

    Often software systems are generically called "solutions" because they are built to solve a problem.  Identifying and understanding the problem early is core to developing a good solution. The lecturer pointed out that to provide a good solution, the designer must understand the audience. He suggested the kids use empathy to put themselves into different viewpoints -- seeing from the point of view of the user.  He also suggested that design concepts should be kept small, digestible -- easily understood.  At this phase of design, don't try to invent new concepts.

    Steps 2 & 3 - Generate and share ideas
    Next, the kids listened to a talk about storytelling, then broke into small groups where they could agree on a set of ideas they wanted to work on. Storytelling and sharing ideas is a fairly simple process with a large benefits.  First, you have a story to tell, and by telling the story it helps shape your ideas into fully-formed concepts that others can understand. Also, you can see how other react to those stories and whether there is a common concept that excites interest in the solution.  Others on the team will have different viewpoints and may have suggestions that strengthen the story, or ideas that will push the story into a new realm.  This storytelling phase is key to forming a complete vision of the solution.

    Although it was fairly free-form, kids liked this portion of the workshop. The open-ended space allowed them to imagine and follow odd tangents.  During their discussion, some of the stories evolved. But the limited time (1 hour) helped frame the session and to eventually focus them on a single solution for their groups.

    Step 4 - Develop disposable paper prototypes
    Finally it was time to create the paper prototypes. The kids grabbed paper, crayons and markers, scissors and string to create the UI for their app prototypes.  The adult coaches ranged around the room providing advice about standard UI components and suggestions for how to work as a team.  The kids innovated in all sorts of ways: folding paper, gluing together "buttons" and literal drop-down pick lists.

    This segment reminded me that a successful workshop needs to have all the materials on-hand and ready.  If you're going to use sticky notes, make not to run out.  Not everyone brings writing implements, so have plenty of pens and markers on hand.  Try to predict the needs of the students in the workshop.

    This session left lots of space, so the kids were free to take breaks or use the restrooms.  Remember: breaks are important.

    Step 5 - Test and iterate the design
    The final leg of the workshop was the rapid iteration session. Kids shared their "apps" with each other and the experts.  Sometimes the workflows didn't work as expected, so they revised the prototypes and retested them.  The key was to get a large set of tests and opinions in a small amount of time for relatively little investment.  The kids were encouraged to discard solutions that did not work, or were potentially problematic.  After this session the kids gathered to reflect on the day's work and share their thoughts and insights.


    From this workshop, I gathered several key takeaways:

    • Lecture is good for a basic understanding, but hands-on learning seals the deal.
    • Provide space for ideas. Don't expect participants to be 100% efficient as they learn.
    • Don't expect to do more than one exercise per hour, unless the second exercise builds on the results of the first.
    • Provide any supplies that might be needed. You don't want to interrupt the session to track down paper and pencils.
    • A full-day workshop can be intense and possibly fatiguing. Breaks and food help keep the energy going and keep everyone happy.
    • If possible, ask people to help document the workshop by tweeting or taking photos

    Thanks to Gage Choat for allowing me to sit in and observe the workshop.