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.



PNSQC 2016: Day 2

Here are my sketchnotes for the second day of the Pacific Northwest Software Quality Conference (PNSQC) 2016 held in Portland, Oregon in October.   Click on an image to see the larger version.

For the opening keynote on the second day, Rex Black not only spoke about "Stupid Metrics Tricks – and How to Avoid Them" but decided to stage a live recreation of Dr. Edward Deming's Red Bead Experiment.  If you have never heard of this experiment in tracking quality metrics, check out the video of Rex's presentation.  The participants failed to manage quality, which meant the experiment had some interesting outcomes. Then he attempted to answer the questions "What are the most common metrics mistakes?  Why are they mistakes?  Why do people make these mistakes?"


After the keynote, I switched over to the Developer track to catch Justin Wolf from Cisco systems talking about "Automated Testing for Continuous Delivery Pipelines."   As the blurb said, "In our product, we use Gerrit, Jenkins, Gulp, Protractor, Jasmine, Docker, and Kubernetes...to perform automated testing on every release, execute long running soak tests, and support rapid iterations on deep performance tuning activities with complex cluster configurations."  Justin's presentation was a little daunting, but mostly inspiring: His team is showing the direction for managing automated regression testing during releases in an Agile environment.


I also wanted to catch "Don’t Forget Security When Delivering Software," presented by Kiriakos Kontostathis from the Software Engineering Institute (SEI).  "We are starting to see a new set of security testing tools that offer easy integration into existing delivery optimization tools."  I had helped review the presentation, and was eager to see how the audience received it.  Kirie did a great job, and covered all aspects of security in the software development pipeline.


The closing keynote was delivered by Darlene Bennett Greene, a retired US Navy Commander and former VP at McAffee. Similar to Peter Khoury's opening keynote, her presentation emphasized communication and leadership as key skills for anyone who works developing software systems.  Because the talk was so broad, I found it difficult to fully sketchnote "Cultivating a Champion Mindset and Skills to Dramatically Improve Your Life."  Instead I let myself listen to her words, and then captured a few key points. The most surprising? Only about 20% of US workers are engaged in their daily work.  She urged leaders in companies to open two-way communication with employees and really learn to listen to their needs.  As she said, "the top factors that bring success to people and companies are rooted in communication and leadership."


The theme of the 2016 PNSQC was "Cultivating Quality Software," so did I have any inspiration during the conference to cultivate anything? Yes.

I resolve to to read or listen to at least one of the speakers that I don't recognize _before_ the conference starts. This year I managed to read one of Rex Black's books conference. He is such a prolific author I was surprised I had not ever read a single of his books. Reading is a good way to get to know the speaker and have some relevant questions, or at least, have something to discuss during coffee breaks.  

If you don't have time for reading, try a podcast.  I only got a couple chances to speak with Brian Okken, but he was interesting enough that I decided to check out his podcast on Python Testing.

By engaging with authors and speakers before meeting them, I will have the chance to cultivate my ideas and also create better connections. Personally, during the year, my resolution is to also work on growing my communication skills: written, verbal and drawn (mostly verbal).

Thanks again PNSQC for an energizing and inspiring conference.



PNSQC 2016: Day 1

The theme of the 2016 Pacific NW Software Quality Conference (PNSQC) was "Cultivating Quality Software."  This theme alludes to how each phase of software develop necessarily contributes to quality, much like digging, hoeing, watering and weeding all contribute to the quality of the plants and vegetables in a garden. It can also refer to the NW software quality community: how presenters and attendees can work together to cultivate future thought leaders and innovators while tending our own "garden."

I tried to document through sketchnotes some of the keynote speeches and invited speakers, as well as a few selected technical paper sessions. For any of the sketchnotes, click on an image to see the larger version.

Peter Khoury from Magnetic Speaking opened the the conference with a presentation called "From Software Tester to Leader: How to Take a Radical Leap Forward at Work." Key to the idea of cultivating leadership at the conference, Peter's talk pointed out that "public speaking skills represent an essential element in the career of any engineer who aspires to rise high within the corporation," so in order to become a leader one must learn to communicate in a way that demands to be noticed.


Next up was Invited Speaker Johanna Rothman spoke how to "Deliver Quality with Agile & Lean." Johanna is an influential speaker on project management and the author of many books. Years ago I took a workshhop from her, and was curious to see what he had to say about integrating Lean concepts with Agile project management. Her talk was billed as "how agile and lean limit the batch size by either limiting scope or work in progress, and how each can help." She covered some of the nuances of Agile+Lean, but the key takeaway for me: keep tasks small - nothing larger than a day, preferably a 1/2 day.


Unfortunately I missed Brian Okken who was the afternoon invited speaker. He discussed "How Testing Strategy can Increase Developer Efficiency and Effectiveness."

Instead, I was drawn to a couple talks in the Developer track.  Ruchir Garg of Intel Security presented "Third-party Library Mismanagement: How it Can Derail Your Plans." Bottom line is that when third-party libraries are not managed in an organized manner, developers use and include numerous external libraries, without giving attention to their maintenance customers end up running third party libraries that are obsolete or possibly vulnerable. Ruchir presented a number of considerations for managing third party libraries.


I was looking forward to the talked "Innersource: Open Source for Test Automation" by James Knowlton of NAVEX Global.  Prior to the conference I had the opportunity to work with James and review an early version of his presentation.  I had never heard of the concept of Innersourcing based on the book “Getting Started with Innersource” by O'reilly, (hint: think of Opensourcing, but using company employees as the code community) and it seemed like an clever innovation for a tough problem. Read the paper, it's an interesting story.


I ended the first day listening to Eric Thompson from Puppet Labs answering the question "how do we retain top quality talent in QA? In software engineering there are many studies that support “three pillars” of motivation: Autonomy, Mastery, and Purpose."  His talk, titled "The Three Tenets of Engineering Motivation," gave some good ideas on engaging employees.  Interestingly enough, Darlene Bennet Greene, who gave the closing keynote on Day 2, also touched on the subject of engaging and keeping employees in highly technical work environments.


Click here to continue to Day 2 of PNSQC 2016.