Showing posts with label writing. Show all posts
Showing posts with label writing. Show all posts

Tuesday, October 15, 2024

Hello Again! Have you Missed Me?

 Every once in a while, I have spent less time updating and participating in my blog than I want to. However, I wasn't aware that I had yet to make any posts since 2023! Part of this has to do with using a variety of other avenues to communicate and being in a mode of looking for work and doing contract work for the duration. It has left me little time or attention for blogging.

That, however, led me to realize that it was violating my prime reason for making this blog in the first place. That was a promise to learn in public and share what I learned along the way. I have learned quite a bit over the past 16 1/2 months since I held my last full-time job and my current gig (more on that later ;) ). I'll be blunt, much of my time and attention has been hunting for work and getting the chance to do interesting work. I've developed course material for teaching manual testers to become SDETs. I co-authored a book with Matt Heusser on "Software Testing Strategies" and while I am happy that it has been well received, I'm realizing I've been terrible about actually talking about it and what's in it. I've worked on a variety of writing assignments, one of which was writing landing page content for a QA company in South America that wanted a more human touch in how their information and services appeared to an English-speaking audience. That was a neat experience and one I learned a great deal about how to improve my writing for a different audience. 

I had several opportunities to develop and deliver talks that are built around the material in our book, which means I have stepped out of my comfortable wheelhouse of Accessibility and random topics and getting to look at some interesting challenges. I talked about the puzzle pieces of good testing and had the chance to deliver them a few times. Matt and I have presented a few times now on Lean Software Testing (which we should mention is not the same or related to the LEAN startup) and it has turned into a great way to look at the way we test and how to help organizations and individual testers improve their overall testing efforts (and often without having to ask for permission ;) ).

As I am at PNSQC this week, my history of doing live blogging to capture my thoughts and impressions still alive and well. I realized that PNSQC 2023 was the last in-person event I attended, and thus it has been a year since I've done these. Apologies or you're welcome, depending on where you fall on that sentiment.

It's good to be back. Let's try to keep this conversation going. 

Monday, December 25, 2023

Software Testing Strategies is NOW AVAILABLE!!!

 I realize that I am terrible at self-promotion at times but I have a very good reason to step up my self-promotion for a change.

I WROTE A BOOK!

OK, now that that's out of my system, Matt Heusser and I co-wrote a book. That's the much more honest answer but hey, my name is on the cover, so I'm claiming that credit ;).

Matt and I spent more than a year working on this project that has become "Software Testing Strategies" and its subtitle is "A Testing Guide for the 2020s". We have endeavored to create a book that is timely and, we hope, timeless. Additionally, we did our best to bring some topics that may not be in other testing books. Through several years of working on podcasts together, writing articles together for various online journals, presenting talks at various conferences, and developing training materials to deliver as training courses as well as online and in-person classwork, we realized we had enough experiences between us to inform and develop a full book.

From our Amazon listing:

Software Testing Strategies covers a wide range of topics in the field of software testing, providing practical insights and strategies for professionals at every level. With equal emphasis on theoretical knowledge and practical application, this book is a valuable resource for programmers, testers, and anyone involved in software development.


The first part delves into the fundamentals of software testing, teaching you about test design, tooling, and automation. The chapters help you get to grips with specialized testing areas, including security, internationalization, accessibility, and performance.

The second part focuses on the integration of testing into the broader software delivery process, exploring different delivery models and puzzle pieces contributing to effective testing. You’ll discover how to craft your own test strategies and learn about lean approaches to software testing for optimizing processes.

The final part goes beyond technicalities, addressing the broader context of testing. The chapters cover case studies, experience reports, and testing responsibilities, and discuss the philosophy and ethics of software testing.

By the end of this book, you’ll be equipped to elevate your testing game, ensure software quality, and have an indispensable guide to the ever-evolving landscape of software quality assurance.

Who this book is for

This book is for a broad spectrum of professionals engaged in software development, including programmers, testers, and DevOps specialists. Tailored to those who aspire to elevate their testing practices beyond the basics, the book caters to anyone seeking practical insights and strategies to master the nuanced interplay between human intuition and automation. Whether you are a seasoned developer, meticulous tester, or DevOps professional, this comprehensive guide offers a transformative roadmap to become an adept strategist in the dynamic realm of software quality assurance.


Table of Contents

  1. Testing and Designing Tests
  2. Fundamental Issues in Tooling and Automation
  3. Programmer-Facing Testing
  4. Customer-Facing Tests
  5. Specialized Testing
  6. Testing Related Skills
  7. Test Data Management
  8. Delivery Models and Testing
  9. The Puzzle Pieces of Good Testing
  10. Putting Your Test Strategy Together
  11. Lean Software Testing
  12. Case Studies and Experience Reports
  13. Testing Activities or a Testing Role?
  14. Philosophy and Ethics in Software Testing
  15. Words and Language About Work
  16. Testing Strategy Applied
Sound interesting? If so, please go and visit the link and buy a copy. Have questions? Want us to delve into some of the ideas in future articles here? Leave a comment and let's chat.

Wednesday, October 16, 2019

Two Down, Eight More to Go - Tackling More "30 Days of Testing" Challenges

As a re-enactor, a performer, and a musician, I appreciate the fact that there is a need for regular practice in any endeavor.

- While I dress up like a pirate and participate in occasional stage shows, I need to actually practice swordwork so that I can be prepared and ready, as well as SAFE, during stage performances. In short, I need to keep my body in practice with rudiments and fencing drills.

- As a musician, I can't just show up and improvise (well, I can and I have and the results have been predictably embarrassing). To be able to play at any decent proficiency and dexterity, I must practice, even if the practice I do is to play things by ear so that I can do better live improvisation. The same goes for writing songs. If I want to write better songs, I have to (gasp!) write songs in the first place. It's a little silly to think I'm going to get inspiration and write the perfect thing every time. Likewise, if I use the music theory I do know and write songs with it, I may not make something brilliant every time but my odds of writing something good go way up. Much better than if I just wait for inspiration to strike.

- When I make clothes for historical garb or cosplay, I can't just expect to come in and knock everything out the first time in perfect order. I'm just not that skilled a tailor. I can, however, make mocks and practice and try out the ideas so I can get it solid enough to make the items well.

Why should I think that as a blogger and as a tester I am just going to have intelligent things fall into my lap? The answer is "things probably won't but they definitely won't if I don't practice or prepare for them.

This brings me back to the "30 Days" Challenges. For various reasons I looked at a number of them and said "oh, that would be cool, I will check that out later" or "hmmm, not quite in my wheelhouse, I may check that out further down the road." Any guesses how many of them I've come back to? Yep, I've not come back to any of them except for the two that I chose to hit immediately. Notice that those both completed and I learned a lot from both of them. Let's have a look at a little graphic:


There are ten challenges there. Two are done, eight I've never started. Well, that's going to change. Next up is "30 Days of Automation in Testing". Why? I'm in the middle of learning how to set up C# and .NET Core for automation needs.

The problem is, we're already up to the 16th of October. Not a really convenient start time, right? Old me would say "OK, I'll start this beginning of November" and then I'd forget about doing it. I'd still feel good because I told the world I'd do it. I mean, who is going to check up on me, right? Well, that's a lame attitude and the answer is I'M GOING TO CHECK UP ON ME!!! 

By the way, expect me to talk about "Writing While ADHD" but I'm not going to promise a timeline for it just yet ;).

So what's my plan for the "30 Days of Automation in Testing"? Simple, I'm starting it today. Seems two posts a day should be enough to get me back on track and cover 30 days (that may be aggressive and ambitious but hey, fools rush in where consultants fear to tread ;) ).

Am I Really So Ordinary? - a #PNSQC2019 Blog Retro

This has been an amazing few days. I've received a presentation award from my peers here. You all voted with your evaluations and you felt my score warranted the second most highly rated presentation of the conference. WOW!

I'm humbled by this but I'm also a little embarrassed. Why would I be embarrassed? Because for the past five months, my blog has been quiet. Why is that? Because I've felt that I don't have anything important left to say. TESTHEAD has been on the air for almost ten years. There are over 1200 blog posts I have written. What more could I possibly say without repeating myself? What can I possibly add that would be even remotely interesting?


I don't know if anyone else has these thoughts from time to time... or often... or every single day... but yeah, I do. I had a great conversation last night with a fellow presenter (they may or may not be cool with me sharing this so I'm cloaking in a little anonymity... but I'm pretty sure anyone who knows us can guess ;) ). As I was talking about how I struggled to come up with an idea this year and that I wondered if my experience would even be all that interesting, we recapped a few things and thoughts:

- experiences are all we can really share and there what people actually relate to. Me setting myself on high and offering pronouncements is boring. Me telling how I got completely lost or frustrated with a situation and what I learned from it is much more valuable.

- I joked that so much of my talk was "blinding flashes of the obvious" and the response back was "was it really? If it was so obvious, why was it a revelation when you addressed it?" Point being, what may seem patently obvious in hindsight may be hidden or not understood by everyone else. In short, if you are confused, it's a good bet a lot of other people are, too.

- it takes a lot to get people to get up on a stage or in front of a group of people to be willing to speak. What we may see as banal and every day is a major step out of the comfort zone for 95% of people. The act of presenting is courageous in and of itself, much less someone willing to do it again and again, year after year.

- what's more, think about what people do to agree to come to a conference in general. They give up their time, their families, their work commitments, their home commitments, many of them pack themselves into a plane for several hours and are not at all thrilled about the experience, yet they go because they want to hear what might give them an edge, a new idea, a new angle to help them do better work every day. They want to hear what you have to say, and really, the only worthwhile thing that you can share is your own experiences.

I should also mention that the thoughts for my talk didn't come together fully formed. The paper I submitted went through three revisions and extensive feedback from two other individuals that helped me take ideas that were half baked and get them to make more sense, as well as to be able to step back and help me emphasize the areas that needed to be and push back or disregard areas that didn't add as much as the parts they suggested I emphasize. For those who voted for my presentation, I must be absolutely clear that "I HAD HELP!"

Others have asked if I will be back next year and what I might talk about? The answers are "likely, yes!" and "I really do not know at this stage" but I have a few ideas. One thing I want to do is go back and review the other "30 Days" challenges that the Ministry of Testing has put together. I have several areas in my own work environment that is requiring me to step out of my comfort zone (have I mentioned I'm trading in my MacBookPro for a Windows 10 machine? Have I mentioned that I'm looking into what it takes to program in C# and run on .NET Core? Yeah, those are new realities for me. If you asked me last week, I might have said "yeah, no one is really interested in that." Today? I have a totally different opinion on that front. I'm still learning things and there's a lot to learn so it only seems reasonable I keep learning in public the way I've said I would :).

PS, I've been on a voyage of musical discovery with my younger daughter recently and part of that has been to introduce singer/songwriter Paula Cole to her. Today's title borrows from her first single "I Am So Ordinary" so credit where credit is due ;).


Sunday, October 13, 2019

My Other Passion Project - ENSIGN RED

This is about as indulgent as they come but I don't care. While this blog is mostly devoted to software testing, it also is the repository for many of my thoughts, ideas and half-baked schemes that I want to record and tell the world about in some way.

There's a running joke in the software testing world about the "rock star tester" and the fact that, at one point in my life, the first two words better described me than the third word did. In truth, I was never comfortable with the term "rock star", mainly because even at the most celebrated our material ever became, any "stardom" was a very local and niche kind of thing. I've actually been OK with that. I got to do all of the things I set out to do as a musician (well, most of them, in any event) without having to experience too many of the downsides. At the age of twenty-five, I chose to "retire" and live a more normal kind of life, one which involved a more standard kind of career and a family. Still, the desire to create, to write, to express my self in what is basically bad poetry, and to sing on a stage has never been far from my thoughts. Now, I'm actively enjoying that process once again and I'd like to tell you all about it.

I am the lead singer of a hard rock/heavy metal band called Ensign Red!



First, a disclaimer. I have no idea what any one person's definition of hard rock or heavy metal is. If you hear us and consider us metal, great. If you don't, that's fine too :).


Second, we are probably never going to win this battle of pronunciation but I'm going to state it anyway. Our name is "En-SIGN Red"! Think of a flag. An Ensign. Specifically, we are named after the red flag pirates would raise that meant "no quarter given" (more appropriately referred to as "The Red Ensign". We switched the words because we felt it sounded more interesting. We've also heard people refer to us as "EN-sin Red", as though it were a formal name of a person holding the military rank. The fact is, many people find it easier to say the latter so we're cool with either. It's all good :).

Third, this is a project that takes up a fairly large amount of my time and attention and I want a place to talk about it. I want to talk about the creative process of songwriting, of oddball source materials, of inspirations that make their way into our songs. Some things will be kept secret (so to speak) but otherwise, any thoughts or questions about being a later in life band member trying to exercise a bit of creativity are totally open.

I may even drop in some software testing relevant content with these posts from time to time. Who knows. In any event, here's to future days :).


Friday, August 10, 2018

Coming off a Long Break

Hello, everybody!

With the exception of yesterday's post to Jerry Weinberg, this blog has been quiet for a few months. That was partly by design, but it stretched way longer than I intended it to. There was a specific issue I was trying to deal with (elbow procedure that required me spending less time on the keyboard) but in reality, for a time, I felt like I had come to an end of what I wanted to say. After eight years and more than a thousand posts, I started to feel like I was going through the motions, repeating myself, or just posting content to promote other content I was producing elsewhere.

I intended to take a break for a few weeks but that break stretched into almost four months. In that time, my work life changed considerably. My company was acquired for the second time. Socialtext is still a part of PeopleFluent and PeopleFluent is now a part of LTG based in London, UK. Dealing with the changes from that took a lot of getting used to. In those changes is the fact that much of our old approach to work and doing things went out the window. I've had to adapt to new roles, new needs, and a new overall view as to what we should be doing. As part of that change, I've been asked to:

- Be the Scrum Master for our Engineering team (those who say "wait, isn't Socialtext a Lean/Kanban shop?", the answer is "we were, but now we are aligning with Scrum principles so as to be in line with other teams").

- Investigate a new approach to automation (we will be embarking on using Cucumber with the two lower layers in a yet to be determined configuration but it will be totally different than what we have used up to now).

- Upgrade and update our overall infrastructure for how we build and deliver our software (mostly dealing with a Jenkins modernization and moving to pipelining but also looking at our container strategy and what we could do differently or better).

- Somehow still find time to test software in an environment where we are now adjusting to two-week sprints.

While "life has been happening while I have been making other plans" I came to the realization I actually have been unlearning and relearning a bunch of new stuff. Why haven't I been talking about it here?

- Partly out of fear.
- Partly out of feeling inadequate.
- Partly out of not really understanding what I'm doing.
- Partly out of feeling like I'm making this all up as I go along.

I then realized,  "Wait! That's the whole point of this blog." Had I waited until I was an expert on anything, zero posts would have been written and this blog would not exist.

I was asked a couple of days ago on Twitter about what to do when someone wants to start blogging but doesn't know what to talk about or feels they don't really have any worthwhile experience to share. I said to "just start" and "while you may not be an expert in X, you are an expert in your own experience with X. Start there." That may have been helpful to them, but I realized that it was most helpful to me. It reminded me that there's a lot I'm learning and relearning and that process is rarely pretty, often incoherent and usually frustrating. That never stopped me before. Why am I letting it stop me now?

If you're still with me, thank you for indulging my "navel-gazing" for today. I have a lot of stuff I'm working on, and things I've wanted to talk about but not felt it would be worth saying. That attitude is over. It's time I started talking about my own worldview on "fill in the blank" again. Looking forward to re-engaging. I hope you will be, too :).



Monday, February 5, 2018

The Code Newbie Challenge for 2018 #CNC2018: BLOG MORE: Mission Two: Blog Outlines and Schedules



Week three and mission two are completed. My thanks to Christian Haas for feedback and some additional commentary in this post :).


This week's homework for Blog More is to complete an outline for each of the three blog post ideas.


Homework:
1. Post your favorite outline below.
2. Find someone’s posted outline in the group and give them some feedback. What stands out to you? What points were most interesting? What did you want to learn more about? Be kind but specific in your feedback.

Mission 2:  Outlines and Schedules

My Top Three

1. Writing Code around Accessibility and Inclusive Design
  • Intro: a quick explanation as to what Accessibility and Inclusive Design are.
  • Sample Code that is not accessible and why (web example)
  • Using Inclusive Design Patterns to help set the stage
  • Changes to code that will make it more accessible
  • Methods to check and validate such things
  • Sample Code that now IS accessible and why (web example)


My initial thoughts: 
I’m realizing this is a topic I could write examples for every week for a year and probably still have plenty to write about. I will probably have to tailor this down to an introductory article first and then go into specifics about individual inclusive design patterns, etc.

Christian's comments:
I'm curious about this topic as a whole. For me, your first entry could be about setting the stage, with one or two examples showcasing how far the topic could reach. I myself am more interested from a theoretical point of view. It would affect my daily work only if there were info/references to "closed" systems; I'm not working on web UI, but for a dedicated, trained, target audience using Java UI.

My follow-on thoughts based on feedback:
This is an interesting angle and one I hadn't considered. How do we make applications accessible in a more specific programmatic focus? By Java UI I am assuming these are applications that have a command line style interface or otherwise interactions at the Operating System level and not online or via the web. To be honest, I haven't given a lot of thought to how this would work for a command line application, but it's an interesting thought experiment. When I'm writing a script or some interactive piece of code, how Accessible or Inclusive am I making those interactions? Definitely worth considering.

2. Skeleton Keys: a resource for TDD/BDD in the shell and other programming languages
  • What is skeleton-keys?
  • Why would anyone need it?
  • TDD/BDD in the shell? Really?
  • Unit Testing Tools in three languages (bash, ruby, and python)
  • Starting small: structure, tests, and output
  • Compare and Contrast the three languages and approaches

My initial thoughts:
Why did I pick three languages? OY!!! Oh yeah, so I could actually make some comparisons. I think these might end up being rather long (like book chapter long), but on the plus side, once I get this started, I will probably have plenty to write about for a very long time.

Christina's comments:
Bash: yes - Ruby/Python: is there a particular reason to have both? I don't have experience in either language and see (from the outside) they are somewhat similar in terms of capabilities. Mainly procedural with object-oriented additions; weak type system, and interpreted. For a broader coverage, it should have a variation in perhaps at least two of these points. (e.g., using C, C++, Java, C#, Go, or ...). Since you already identify that this can be done in various languages (taking time and effort to write this), I suggest that, if you want three initial examples, they should be quite distinct from each other. Or reduce to two. (Or give particular reason why Ruby & Python)

My follow-on thoughts:
This is a very good point. I picked Ruby and Python mostly because they are languages I'd been either working with or had some recent exposure to and wanted to set up as a way to focus on some starting poitns for those languages. Having said that, they are two languages that fill a similar niche. They're not the exact same, but Christian makes a good point that they are similar enough that they may not prove to be all that interesting a comparison. Perhaps using a language such as Java or C++ would make more sense, though I haven't used either in a meaningful way in a long time. Still, for this purpose, it may make for a more interesting comparison, so worth re-examining.


3. Creating a framework from the ground up (Jenkins, Docker, Protractor, Angular, Jasmine)
  • You Keep using that ‘Framework’ word. I don’t think it means what you think it means.
  • Jigging your Jig-Saw Pieces (short intro/tutorial on all five pieces, including installation)
  • Setting up a basic application to test
  • Puting the onion back together
  • writing the Angular App
  • testing with Protractor/Jasmine
  • putting it into Docker
  • managing it with Jenkins
  • Lather, rinse, repeat


My initial thoughts: 
This would make for a great series with a minimum of five posts for each piece (plus the many that I haven’t even mentioned yet, such as plug-ins or add ons to make the job easier to manage).

Christian's comments:
With your first point about using "framework" wrong, I suspect this title is intentional. Still, is the overall goal to write a Javascript based template project?
If so, I'd be less interested as I don't work in JavaScript (That should not be a reason to change your goal, I understand that), though, if it were pitched as "how to create a template stack with Jenkins, Docker, ..." might be half interested as I'd consider an automation pipeline for different languages. Perhaps this could even be a two-parter: How to set up a build-pipeline with Jenkins & Docker and then specializing it for a JavaScript project, and then specializing it for a Java project for instance... (These are all just ideas, I believe your thoughts go already in that direction...)

My follow-on thoughts:
Yes, the use of the word "framework" in both the title and the shout-out to The Princess Bride reference is in part to say that the word framework gets thrown around a lot and maybe doesn't really mean what a lot of people think it means. My goal is to address the broad areas and try to see how to implement the pieces. Just setting up the scenario would be a series of posts (setting up Jenkins, working with git, creating docker containers, setting up a project, making tests for the project, running those tests, making sure they integrate with the CI pipeline, etc.). Perhaps skeleton-keys could be the project that allows me to put this all together and integrate into a series of posts.


One thing is certain, this challenge series is showing me that there are plenty of things to write about in these spaces and I will probably have ample to write about for a long time.

Monday, January 29, 2018

Code Newbie Challenge 2018: #CNC2018 #BlogMore: Mission One: Blog Ideas

The first official mission for the Code Newbie Challenge has completed. Here are my follow-up and thoughts about this week's assignment.

Mission 1:  Three Ideas

Goal
Develop and validate the three blog ideas for this challenge.

Homework 
Come up with 10 blog ideas, then narrow those down to 3.

This challenge had a lot of great supporting material to help people get into the mindset of what it would take to create a technical code blog post. 

Research: 
  • Search Twitter for hashtags related to areas of interest.
  • Search blogs that talk about areas of interest. Medium, Dev.to, FreeCodeCamp, Hackernoon, Codeburst, basecs, Mozilla Hacks, etc.
  • Look at Newsletters like JavaScript Weekly and RubyWeekly
  • Think about things I am actively working on and wish there were posts that answered my concerns.

Brainstorm:
Aim for ten ideas. Here's the list I came up with:
  1. Examining Accessibility and Inclusive Design (this is my personal touchstone topic, as if I really want to make a transition to writing code, I want to do it in a way that can help me advocate for Accessibility and Inclusive Design better) - Explainer for concepts, tutorial or project for specifics
  2. Walking through Developer Tools that emphasize Accessibility - Explainer
  3. Making a Skeleton Resource for Coding (my biggest problem is getting started, so my overall goal is to make something that will help me do that. I figured I could explain along the way as I make it). Project, possibly tutorial
  4. Writing shell scripts using TDD and BDD principles (using shunit2) - Tutorial, Project
  5. Quick Fixes for Big Headaches (the shell can be your friend) - Project
  6. Deploying your own little CI Pipeline (Deploying Jenkins on your local machine) - Tutorial, Project
  7. Containers for the curious (Deploying Docker on your local machine) - Tutorial, Project
  8. Blending Angular, Protractor and Jasmine into a testing framework - Tutorial, Explainer, Project
  9. Road Rash: Cautionary Coding tales while the wounds are still healing (I did something, I got stuck, it hurt but I figured a way out of it) - Explainer
  10. How Would You Automate This (an actual Series I’m Currently Working On) - Explainer

Narrow it down to 5:
Many of the ideas I came up with are not so many ones I would want to eliminate as they are either peripheral to or prerequisite of what I'd want to write about. By taking my original list and grouping them, I came up with the following more condensed list:

  1. Examining Accessibility and Inclusive Design, Walking through Developer Tools that emphasize Accessibility  - Explainer for concepts, tutorial or project for specifics
  2. Making a Skeleton Resource for Coding, Writing shell scripts using TDD and BDD principles, Example shell fixes to demonstrate the project - Project
  3. Deploying your own little CI Pipeline (Deploying Jenkins on your local machine), Containers for the curious (Deploying Docker on your local machine), Blending Angular, Protractor, and Jasmine into a testing framework - Tutorial, Explainer, Project
  4. Road Rash: Cautionary Coding tales while the wounds are still healing (I did something, I got stuck, it hurt but I figured a way out of it) - Explainer
  5. How Would You Automate This (an actual Series I’m Currently Working On) - Explainer
One of the reasons I ordered this list this way is that I couldn't figure out how to put Road Rash into another location other than as a sidebar, and it felt the weakest of my choices. How Would You Automate This I deliberately put at the bottom as I'm already writing the series. I want to emphasize posts and areas that I'm not already doing or that would actually be new territory for me.

Validate your ideas
I received some great feedback and interest from several people who reviewed my list and who expressed interest in seeing certain topics get covered. That had a lot to do with my grouping and decisions on which topics I would want to focus on.

Pick your top three

The top three and the working titles for each:
  1. Making Your Pages and Apps Accessible Using Inclusive Design Principles
  2. Skeleton Keys - A Project for Getting Started in bash, Python, and Ruby
  3. A Testing Framework From the Ground Up - Jenkins, Docker, Angular, Protractor, Jasmine

Turn In Your Homework 
 
Turned in to the CNC2018 Facebook group, but also this blog post :).
 
Bonus Reading 
 
Here are some additional blog posts to check out:

Monday, January 22, 2018

The Code Newbie Challenge for 2018 #CNC2018: BLOG MORE: Introduction

Hello to new readers that are coming across this blog for the first time. To those who have read these pages for a while now, this should not surprise any of you at all ;).

I've decided to take on the Code Newbie Challenge for 2018. There are four "tracks" that you can choose. They are:

Start Coding
Code More
Blog More
Get a Job


I have chosen the "Blog More" challenge for a specific reason. Much of the time on this blog I have talked about testing and peripheral topics from a layman's point of view. I've strived to "speak dude" as often as possible, and to that end, I've kept coding specific stuff to a minimum. that sounds like a simple answer, doesn't it? Well, let's get real here. There's a darker secret. Part of the reason why I don't post code frequently is that I harbor a fear that people will look at my code and think it's simplistic, stupid or just plain lame. To tell the truth, that may happen. Maybe it won't. Regardless, I've always been a little leery of posting code samples beyond language tutorials because I've just been concerned about getting it picked apart.

That's the overwhelming reason why I chose this challenge. I can't get better if I don't actually put something out there, right? I can talk a mean game about what I know about things like automation and web development, but does it really matter if my actual code is lacking? More to the point, wouldn't it make a lot of sense to actually talk about code, show examples, explain it from my perspective and let people who do know about code comment on it?

Sure, it might bruise my fragile ego but isn't that the whole point? How do I expect to learn or actually demonstrate I know anything if I'm not willing to show what I actually know and take the chance that someone might be willing to tell me a better way to do it? On top of that, there may be lots of things I may be doing that are actually interesting and may be helpful to others. Finally, if I can explain what I'm doing in a blog post or several, I can explain it to anyone and draw on it when I write code in the future.

Let's get this party started. Each assignment as part of this challenge will be posted here. This is my own preamble to get the ball rolling. Look for the tags CNC2018 and CodeNewbieChallenge to see posts specifically targeted for this challenge.

Exercise Zero: The Pre Mission

Read 3 tech blog posts you wish you wrote. Jot down why you like them and what you'd change.

Find examples of good tech writing to see what you'd like to incorporate into your own posts, and what you might want to avoid. 

You'll refer back to these later in your challenge.

There are three styles that were described for this challenge. First is the "Tutorial", which actually walks through how to do something. Second is the "Explainer", which take a concept and breaks it down. Third is the "Project" which describes how to do something and gives actual examples that you can follow along and build yourself. The pre-challenge is to pick three examples, (one from each category) that I wish I had written, describe what I like about it, and what I would like to see to improve the piece.

Tutorial: "Protractor for Beginners, Part 1" by Hannah Pretswell

Why a tutorial on Protractor? Because it's what we are exploring as a replacement for our current automation framework. Nothing like a pressing business need to get your mind racing and your thoughts flowing. Hey, you know it will come in handy very soon, right? For starters, let me comment on something I really appreciate. Hannah said she struggled with getting the pieces to work together. Hearing that up front helps me in two ways. First, it lets me know that the tasks ahead may be challenging. Second, she also lets me know that she's done her best to document those frustrations and help let me know that I likely will succeed if I'm patient and follow her advice. Too often, I've gon through tutorials that expect a user to jump in and get moving with little concern over the sticking points. Gladly, that's not the case here.

Another positive is the fact that there are a fair number of repetitive steps. It's tempting to spell them all out, but by doing so, it makes updating a tutorial daunting and thus something the writer would likely not do. Instead, she points to a few additional tutorials already written that explain the process of setting up your environment and making sure everything is working correctly before getting started. Additionally, the resources listed point to the protractor GitHub page. This is a good practice because it lets the user get started with the most recent advice from the maintainer of the framework so that if the instructions change, the writer of the tutorial doesn't have to be the one to change the details on her site as well.

So, what would I have done differently? Truthfully, not much. I think it's a solid opener and it goes through the specifics as the first part of a tutorial should. I suppose I would have liked to have seen some example output of the code as displayed and some output of tests as well. For me, with a variety of tutorials, I think this is a good step so as to show what you could expect. I understand why many people don't in that OS changes and formatting details could put images like that out of date quickly, and it does add overhead to downloading what would in many cases be pictures to demonstrate the output. Still, on the whole, this is a really solid example.





Explainer: Test Driven Development in BASH by Torstein Krause Johansen

This is presented as a talk, but in many ways, that's a great way to explain a concept in a few words, with the impetus on the reader to go and learn more if they are so inclined. Specifically, I like the curt and focused content, the way the information is presented and the walkthrough of the ideas with examples. Each slide builds on the previous one and lets you see why the topic makes sense and the reasoning behind Torstein's approach. I was also excited to learn about shunit2 and I must say I'm more than a little curious at this point.

So what would I do differently? Again this is a set of slides from a talk, and at first glance, I'm guessing the HTML code was put there for a reason, but if the point was to demonstrate bash syntax and how it interacts with a testing framework, the HTML was distracting and made the underlying code hard to read. Again, I may be missing a key context here as to why that was presented that way (perhaps to prevent copying and pasting willy-nilly) but if that were the concern, I could see saving screenshots of the code itself and displaying pictures (great to prevent copy and paste but admittedly a nightmare to update and keep current).

Project: 10 Angular and TypeScript Projects to Take You From Zero to Hero by Dan Wahlin

This interested me seeing as I will be doing work with Protractor and Jasime as a testing framework for Angular apps. To that end, it helps to have something to look at, play with and practice on and these ten projects will allow me to do that. I like that the projects start simple and get progressively more difficult as they go. Each project is laid out with sample images of what you will build with links to each of the projects so that the project page is independent of each of the individual listed projects. The projects are lust listed with a title, a basic description, level of difficulty, a link to the files and some pictures of what the project will look like when completed.

On the whole, this is a nice layout and method. It leaves it up to the individual reader to decide where to expend their energy and each project simply links to the necessary packages to get them done. Were I to do it myself, I would probably split each project out to its own page and try to give some instructions about what to do with each. Having said that, the economy of having ten projects to choose from without a lot of navigation and page dancing is a good tradeoff.

There's the start. The assignments proper start on January 22, which is the same day this post goes live. Feel free to follow along and, as I tackle each assignment, your feedback and commentary is appreciated :).

Wednesday, August 23, 2017

Regarding Comments and Interaction on TESTHEAD

As I've been going through the site to determine changes I want to make regarding Accessibility and Inclusive Design, I've been doing a review of past posts (with more than 1,000, this is taking awhile, but I'm getting there). In the process, I've also noticed a recent uptick in comments. At first, I was excited, but quickly saw that most of them tended to be the same:


nice blog has been shared by you. before i read this blog i didn't have any knowledge about this but now i got some knowledge. so keep on sharing such kind of an interesting blogs.

This would then be followed by a link to some other site, usually offering training of some kind.

At first, I tended to approach this with a bit of a buzzsaw approach, just deleting them out of hand, but during CAST, I talked to a friend and colleague and described my frustration with this approach. They suggested something I hadn't considered. It may be SPAM. It probably is SPAM if it is linking to a commercial link, but there is a possibility that this is also a new student fulfilling a class assignment to find a technical blog, read a post and comment on it.

Fact is, I don't know, but the better, possibly more naive part of me wants to believe that some of this traffic might be legitimate, so I'm going to make a few requests.

1. If you read something that you appreciate, let me know specifically what you like about the post. That at least gives me an indication that you have read it.

2. Ask me a question about the post. This may be a mild psych thing with me, and I may regret admitting this down the road, but I'm the type of person that, if you ask me a question in social media or via blog posts, I feel compelled to answer. My answer may be "I don't know" or "I'd have to point you to [x]" but I will answer :).

3. If you are posting a link to a site that supports or substantiates what I'm saying, or disproves what I'm saying, that's fair game. Posting a link to your training site without at least explaining why you are doing so is just rude. If you are saying "Hey, I like the pattern matching examples you gave in your post. I'm currently attending a training academy that also covers this, and you might find this useful (link to a specific example that corresponds with the blog post)", seriously, I'm fine with that.

Nonsensical praise like what's posted above tells me that you haven't even read the blog post, you want to get your link on as many of my page as possible, and will guarantee that I will go through and mow such comments out of my feed aggressively. Also, the time I have to spend chopping out bunches of bogus comment posts limits the time and attention I can spend writing new stuff.

For those who have posted informative and inquisitive comments, I thank you and appreciate the fact that you do so. For those who want to do so, but aren't sure how I promise, I'm a rather wordy fellow who is happy to answer questions and do not mind sharing links of a genuinely informative nature. Let's make this a place where we can communicate ideas and not a jumble of SPAM comments that I have to consistently prune.

Monday, June 5, 2017

Wrapping It Up: 30 Days of Accessibility Testing



The Ministry of Testing has declared that May should be "30 Days of Accessibility Testing". As in the days of yore when I used to take on these challenges and blog regularly, I'm in the mood to get back to doing that. Therefore, I am looking to write a post every day around this topic and as a way to address each line of their checklist.

Yes, it's past May. In fact, it's June 5th. An extended absence for Memorial Day weekend turned into a frantic last week of school for my girls and my having a lot less time to finish strongly, however, a promise is a promise, and I said I was going to do all 30 days, and I'm gonna' cover them all. Therefore, today, you get a "fourfer" and a wrap-up commentary all in one.

27. Learn how to use your mobile device screen reader.

Since I have an iPhone, this is fairly straightforward. iPhone has VoiceOver, and to enable it, you go to Settings: General: Accessibility: VoiceOver.

VoiceOver presents you with a few options to configure, such as:

- VoiceOver speed, which can be slower or faster with a swipe.
- Use Pitch change
- Verbosity: gives you an option for speech hints and to also read out emoji content.
- Voice: select a speaker whose voice you want to hear (you have a few defaults, and you can download other voices as per your preferred gender and accent).
- Pronunciations: If you want to make sure that you have certain words pronounced the way you want to you can create a custom phrase.

The biggest challenge as a sighted user is that the system slows you way down and forces you to select an area, listen to what it is and then press twice to enable that area to do something. Using the keyboard is slow because every key stroke is effectively three steps. First to locate the item and confirm that it is the item in question, and then two taps to make sure that the item has been selected. Even with full sight, I found it frustrating to type in a simple statement. I couldn't imagine keeping track of what I was typing if I was sight-impaired.

In any event, it's an interesting piece of tech and there's quit a few areas I ned to still look at to really get a feel for what it can do. More to play with after the challenge is over (which really, means later today ;) ).

28. Download and test a word document for accessibility issues.

I was hoping this would be an easy thing to test since I trade Word docs back and forth to get the show notes for The Testing Show completed, but alas, it seems that my documents are not interesting. Therefore, I figured I'd find a document somewhere interesting enough to give me an example to work with. I found "Word 2010 Accessibility Guidance - GSA" which let me do exactly that:

Example of analysis using Check Accessibility button

By clicking on Review and selecting the Accessibility Checker button, I can see in a preview window areas that can be improved. Interesting enough, a document based on 508 Accessibility Guidelines for Word Documents could use some Accessibility help. Well, I found that amusing.

29. Find 3 accessibility issues without using an evaluation tool.

Time to pick on Blogger again, or should I say, time to pick on TESTHEAD again ;).

1. Should have a default skip to content link in the tab order as soon as it enters the page. May have to hack my template to make that happen.

2. Numerous images going way back need alt tags. That's my own fault and will be a long process, but if I'm serious, I best get to it, eh :)?

3. Since I'm doing this without a tool, I am looking at the background for my blog (dark gray) and my text (light gray). It may be conformant, but I think it should be more pronounced than it currently is. 

This month's challenge has been interesting in that I was able to come up with those with less than 30 seconds of looking at the page. OK, I've been focused on it for an entire month, but from thinking my site wasn't too bad to be able to think that quickly about what could be improved, not a bad return on investment, in my humble opinion :).

30. Review the complexity of a website’s content with the Hemingway app.

Awww, this is a pay-for app. Nothing against that, but since this is a blog post about a daily challenge, I don't want to specifically purchase an app just to qualify it (at least not just yet), plus I'm already a paid Grammarly User, but Hemingway does offer a "write" option to test it out, so I'm going to take my last full blog entry and see what it says:

an example text analysis from the Hemingway App


OK, so that tells me that "therefore" is a bit stuffy and I could use a simpler word, I have a big sentence that could be cut down a bit, and I can make the page more readable, but as it is it's readable at a 5th grade reading level, and that's cool with me. Always room for improvement, but I don't want or expect my writing to require an English degree to decipher.

Wrapping it All Up

Wow, this was an eye-opening month, and this is coming from someone who professes to be an active Accessibility Tester. My thanks to the Dojo for putting this challenge together and giving me a chance to consider anew what I can do to better test for Accessibility and Inclusive Design. 

So what's next? A  few tools are going to get a documentation treatment for my internal testing pages for my company, and even more important, I'm going to do some digging to figure out how to hack my blog template to qualify for WCAG 2.0 AAA rating. I've made a few changes to it this month, but there's plenty of room for improvement, and therefore I should be busy with this challenge well beyond my tardy week past May. 

For those who have read along, I thank you. For those who have taught me much this past month, I thank you even more. For new friends I have made through this challenge, thank you for your patience, your consideration and opening my eyes to ways I can both test better and be a better advocate. 

It's been fun, and I look forward to the next "30 Days of Testing" challenge, whenever it may be. 

Wednesday, March 15, 2017

So You Want To Produce a Podcast? Part Five: Write Down all the Things

I'm guessing some people have noticed it's been awhile since my previous post. You may be asking what I've been doing between posts. If guessed editing a podcast for a deadline, you'd be correct. If you also guessed writing up a transcript and show notes for the same show, you'd be correct again.

Wait, both at the same time? Why on Earth would you do something like that? I'm happy to tell you.

There's a lot of information you can include with podcast episodes. Some publish the title of the show, date of the show and a brief description of the contents. Others provide a lot of detail about the episode, including a list of resources and references relevant to the episode. If you want to be comprehensive, you provide a full transcript for the show.

Let's take a step back... why provide a full transcript? As an advocate of Accessibility, I believe in making the show usable by as many people possible. For most normative users, listening to the show is sufficient, but what if you can't listen to the show? Closed captioning for podcasts is a limited technology and typically used with videocasts as opposed to audio-only podcasts. Therefore, I provide a full transcript for each "The Testing Show" episode.

Transcribing a podcast is slow, time-consuming work. What about speech recognition software? Yes, I've tried quite a few. In most cases, I get a partial response mixed with a lot of stalling and correcting large areas of text. I've experimented with using Soundflower to direct WAV audio to a text file. When it's just my voice, speaking slowly, I get a good hit rate of spoken words to transcribed text. The more speakers on a recording, the lower that hit rate. With how much time I spend editing and fixing errors that appear in the transcript, the less I experience any real time savings. Therefore, I kick it old school and manually transcribe the shows.

"Dude, you can totally farm that work out to other people". I've done exactly that on more than a few occasions. When I am far ahead of the deadline and I feel the conversation is clear and concise, I am willing to have other people (read: pay) do the transcription. To have that be effective, I need to complete audio editing at least a week before the deadline. Sometimes, that's easy to do. Other times, not so much. Real life finds ways to take away from podcast production time, especially since I don't do this full-time. If I can't guarantee a long enough lead time to have a service do the transcription, I do it myself. If you do decide to have a service do your transcription, I give high marks to "The Daily Transcriber".

Waveform editor on the left of me.
Text editor on the right.
Here I am, stuck in the middle with you ;).


Along with a transcript, I also provide what I refer to as a "grammatical audio edit" for each show. What's a grammatical audio edit? It's where I go through each statement from each speaker and remove elements that would not flow well in a written paragraph. That includes verbal tics (those "um", "ah", "like", "you know"), repeated sequences, tangents, semantic bleaching, etc. Realize, I cannot magically fix the way people speak. At a certain point, I have to let them say what they will say in their style. Any transcript will, of course, reflect this. I do a word for word scrubbing of the recorded audio. Since I'm editing by the second, simultaneously transcribing as I'm editing is a reasonable approach. I listen to a section of dialogue, edit and sequence the conversation with a reasonable cadence, and while I'm doing that, I type out (or use Apple's "dictation" option, which can be activated with the "fn fn" sequence) to write out the words recorded.

To this end, it's important that you have already done a rough edit of the podcast. You should know which sections you are going to keep and which ones you are going to "leave on the cutting room floor" and have silenced out those sections, and then run "Truncate Silence" to squeeze everything together. This way, you know the sections you are editing and transcribing will be in the finished podcast. You can always add a section back later if you change your mind, but removing a section you've already done a full edit and transcription for is frustrating. Minimize this if you can.

GEEK TRICK: If you use Audacity, you can use the Transcription tool. It slows down or speeds up the audio to a level that you determine. It has its own playback button that then plays the audio at the designated speed. It also lowers or raises the pitch of the audio, which can be an annoyance. Still, making sense of a fast passage, or listening at the pace that you type, this feature is helpful. The Transcription tool can also, in fast playback mode, check levels between speakers.

Audacity's Transcription Tool. Slow Down or Speed Up audio.


"Dude, that's overkill". It certainly might be. If you don't want to provide a full transcript, you don't have to. Clear and interesting show notes and a catchy embedded description with the show will do a lot to help get the point across about each episode. Some cool examples of embedded show notes for episodes are the "Back 2 Work" and "CodeNewbie" podcasts, in that they include almost all of the details of the show and resource links. Some shows include timestamps along with their show note links ("Greater Than Code" and "Ruby Rogues" are both good examples of this).

Something I would also encourage if you want to go the route of detailed show notes is to develop the notes while the show is happening. That's hard if you are the only person recording the show or you a doing a one on one interview. It's easier if you have a panel of speakers. As the show runner, I try my best to keep track of what people are talking about. If I hear a comment about a talk, a video, an article, or something that I think might be helpful to reference, I jot down a quick note in my schedule sheet so I know generally where to look for it and reference it.

GEEK TRICK: Here's my basic method for transcribing and writing show notes.

1. Create a header. In that header, make a list of everyone speaking on the show. Confirm name spelling and pronunciation, etc. This way, it's easier to know who you are listening to and how to tag each line of speech.

2. Create a Macro to replace your regular contributors, and add new names as you choose. For this, I put an initial and a colon for each full name, such as "ML: " (yes, preserve the space ;) ). When I'm finished editing, I run the macro and it goes a find and replace for all of the "ML: " tags and replaces them with "MICHAEL LARSEN: ". Same for all of the other names I've gathered. One run and done.

3. I use "Insert Endnote" option each time I come across something I want to provide as a show note reference/resource. This creates a running list of resources at the end of the document. If I have the link to the reference, I include it while I am in edit mode. If I don't or I'm offline at the time (often since I do a lot of the editing and transcribing while I'm sitting on a commuter train) I make the list with as much detail as I can, then fill in the link later after I've had a chance to look it up.

Every show should start with a descriptive paragraph copy. It should be fun, interesting and hopefully engaging. As I stated in the first post of this series, sometimes I find this to be the most difficult part.

Some final details that I do are to add metadata tags to the podcast. At this point in time, I keep it very basic. I list the name of the show, the title of the show, the episode number, the year published, and that it is designated as a podcast. Also, to preserve the audio, I export the final podcast as Ogg Vorbis format and then convert it to MP3 using Max (which I like because it makes it simple to tag with metadata and to add cover art). From there, I upload it to the shared folder that we all use, I alert the folks at QualiTest that we have an episode ready to publish, and they handle updating their website and posting to iTunes, Libsyn and their RSS Feed.

Next time, let's talk about ways to encourage people to download, listen to and share your podcast.

Tuesday, December 29, 2015

How Do I Work This?

It's another year end, and another chance to come back to the Talking Heads song "Once in a Lifetime", since I feel it to be an apt metaphor for this blog, as well as the past couple of years of growth, change, learning, unlearning, accomplishments and frustrations, steps and mis-steps, and all of the other things that come with being a software tester in a changing software world.

I celebrated five years of Testhead this year, and passed 1,000 blog posts. I also had an opportunity to expand my blogging to some additional areas, including a stint with IT Knowledge exchange and the Uncharted Waters blog. As with many things, times, priorities and situations change, and I wrote my last blog post for Uncharted Waters back in November. It was a good run, and I thank ITKE, Matt Heusser and Justin Rohrman for letting me offer my perspectives on a few things this past year.

This was "The Year of Accessibility" as Albert Gareev and I decided we would combine our efforts and work on talks, test ideas, workshops, presentations, and a stretch goal of preparing a treatment of a book about Accessibility testing. I am happy to say we made some great steps in that direction. we both delivered several talks at various local testing groups, as well as national and international conferences. We proposed and collaborated on ways to present the materials, and we introduced two mnemonics related to accessibility testing (HUMBLE and PaSaRan). We did not complete the treatment for the book, at least, we have not completed it yet. Part of it was time and other things getting in the way, but for me it was also the discovery of and a developing interest in the parallel discipline of Inclusive Design, which I think can be an excellent addition to the discussion Accessibility Development and Testing. 2016 will see me branching into other areas to talk about, but rest assured, this is a labor of love for both of us, and you will see plenty more from us on this topic in 2016 (that is, if Albert wants to keep going with this; I'll not presume to speak for him ;) ).

This year saw many personal changes, most sparked by one defining factor. In April, I said goodbye to Ken Pier, my director, my mentor, and my good friend. He died of cancer, and he left a hole in our testing team that we are still recovering from. After several months of searching, we found another tester to join our team, but we did not replace Ken. We cannot replace him. We can only carry on, while keeping his legacy and influence alive. Part of that meant we chose to integrate our testing team with the broader engineering group. We all report to the VP of Engineering, and we all are "developers" on the same team. In addition, I've taken on the responsibility of being the release manager for the company, which has required some "interesting" lessons in the realities of software development, continuous delivery, continuous deployment and continuous testing, and the limitations that corporate entities may require to make these systems work. In short, this year saw me step into more of a "specializing generalist" role, and to spread into more development initiatives than I had been involved with before. If I thought I was ignorant on software delivery concepts before, it's been made abundantly clear just how much i still need to learn.

This change, and the necessities of the demands of work, required that take a hard look at the things that I could effectively do, as well as the things I could not do any longer. After four years of involvement, I stepped down from involvement as part the Board of Directors for the Association for Software Testing. I did this for a number of reasons. First was the demands of work and home were making it less possible for me to deliver on what I felt the organization should do. I would rather say I cannot do something than say "yes" and not deliver. Sadly, I saw more of the latter happening than I wanted to. Additionally, I feel that organizations are not well served when people become "too comfortable" and "too entrenched". We as people stop growing, and the organization loses out on new ideas and innovations that others can provide. I am still actively involved with AST, both as an instructor and, going into 2016, as what I hope will be more of a content provider role as we develop new materials to supplement current classes and, we hope, create brand new ones.

One area that I have likewise addressed, and has been a big part of my life for the past few months, is a focus on my personal health, and a change of habits that I became determined was necessary. The deaths of two coworkers within the past year, both from the same condition, and one I have genetic markers for, have made it a priority with some urgency for me. Many of my posts have been written around fitness, health, and using software testing principles to re-create myself. For some of you, that's been a nice addition to this blog. For others, probably an annoyance ;). Still, it's part of my learning, and I think much of what I have learned has relevance to testing and discovery, so I will continue to talk about and post those items here. I will, however, be making a slight change going forward. From now on, when you see a post with the word "Aedificamus" in it, know that that post likely has something to do with health, fitness, food or some other learning on my journey to get and stay as healthy as possible. Aedificamus is Latin and, loosely translated, means "rebuilding through practice".

As I bring this year to a close, sometimes I wonder if people still consider this blog relevant, or if what I write has had an impact for other testers out there. Needless to say, I was both humbled and gratified to hear Brent Jensen and Alan Page both mention the TESTHEAD blog as one of their picks for 2015 on the A/B Testing podcast. It was really touching to hear Brent say that he appreciated that I was learning about, and publishing as I went along, the changing landscape of software testing, and where I felt my role in it might lie both currently and in the future. Some years ago, I did an extended review of 'How We Test Software at Microsoft" and I recall Alan Page writing about how he appreciated that I "got it", that I understood ultimately what he and his co-writers were trying to say. For me, it's my turn to return the favor. Thank you, Alan and Brent. thank you for "getting" TESTHEAD, and thank you so much for the shout out in your year in review podcast. I am proud to have you at the top of my list of alphabetically ordered favorite podcasts ;).

This year requires a lot of thanks to a lot of people, some of which I have mentioned already, but additionally I want to say thank you to Erik Davis, Markus Gaertner, Keith Klain, Alessandra Moreira, Justin Rohrman and Pete Walen, my fellow Board of Directors members with AST for the 2014-2015 year term. Thank you for your support during my year as President, and all of your help and encouragement along the way. Additionally, thank you to Ben Yaroch for being an advisor, for letting me know when I was doing something good, as well as when I was doing something stupid. I appreciated the advice every time, even if I did or did not always act on it. My thanks also to Ilari Aegeter,  Alex Bantz, Roxanne Jackson and Eric Proegler for stepping in this year and becoming Board Members to keep the work moving forward. I love the energy you all bring, and I am excited to see what we all do next. My thanks to Justin Rohrman (again), Albert Gareev (again) and JeanAnn Harrison for your continued efforts along with me to facilitate Weekend Testing Americas. We celebrated our fifth anniversary this year, and I am happy to say we are still going strong, thanks in no small part to your efforts. My thanks also to Matt Heusser for his willingness to include me on a variety of projects and to always be a springboard and feedback for ideas both well formed and, sometimes, in need of considerable polishing. I look forward to many more opportunities to keep storming the castle. Thank you Josh Meier and Curtis Stuehrenberg for working with me to keep Bay Area Software Testers a thing. We have a lot of software testing talent in the Bay Area, I want to see that talent grow and us help that process. There's lots to do :). Finally, my thanks to everyone who listened to me speak, participated in a class, joined a weekend testing session, came to a meetup, or read and shared a blog post of mine throughout this year. Thank you for making 2015 a great year for me, and here's looking forward to 2016. I'm curious to see what the title will be next year ;).

Monday, February 9, 2015

Writing the "Michael Larsen" Way?

First off, I have to say "thank you" to my friend Jokin Aspiazu for inspiring this post today. He wrote a piece about writing a blog from your own experiences and how he found inspiration from a number of people, including me.

The statement that prompted today's blog post was the following. In it, Jokin is explaining different styles and approaches to writing a blog post, and ways in which those posts are done:

"The Michael Larsen way. He wakes up early, so he has time to write before his daily routines start. The thing is that if you write late at night, when the day is gone, you are going to be tired in body and mind. And your writing won’t be as fluid as you would like, and the next day, when you read your text, you will hear “I’m so tired…” in the background."



I have to say that this is mostly correct. If given a choice, I much prefer writing in the early morning over any other time of day. I think Jokin was referencing a comment I said to him at EuroSTAR when we were talking about the ideal times to do certain things, and that for me, that sweet spot is early in the morning, and by early, I mean any time before 6:00 a.m. The quote, as I remember saying it (because I do say this a lot ;) ), is that "I can get a lot done while everyone else I know and relate with is asleep".

Having said that, there are a few other things that I do, and I find them helpful as well.

The Voice Recorder on my Phone is a Really Good Friend

Oh, Voice Recorder, how kind you are to me. You make it possible for me to capture any insane and rambling thought I might have, and not lose it to the ether. I should also add I am grateful for the headphone and mic combinations now available with SmartPhones, because they make me look like less of a lunatic while I am walking down the street.

Some great spots where I can let loose with my thoughts are on my daily commute legs. I park my car about a half mile from the train station I use because I'm cheap and don't want to pay for a parking permit, but also because it gives me a bit of a walk each day. That walk is often a golden time to think out loud (something I do regularly), and having the voice recorder lets me capture all of that. Also, it gives people walking past me the impression I'm just talking to someone on the phone, so I'm not looked at as though I'm crazy ;).

Often, the ramblings don't amount to much, and those I tend to delete at the end of each week, but every so often, I'll find something that sticks, or that gives me a reason to say "OK, I want to explore that some more". Often that will result in something I want to write about.

Every Book Has a Story to Tell

Generally speaking, I love to read. Though my book buying habits have changed with Kindle apps and e-books, I still love having a lot of choices to choose from and read from. My SmartPhone has become my secondary reading device, but my first is my laptop computer. I often find myself reading books and grabbing passages or parts of a book that I have found interesting, and I pull them over into a Notes app that I use. Sometimes they sit there for months, but every once in awhile, something will happen, or I'll see something that jumps out at me and I'll say "hey, that fits into a problem I'm dealing with".

Very often, those discoveries are not limited to technical books or books about testing. I'm a fan of history, and I love reading about interesting things that have happened in the past, both distant and more recent. I often borrow the Dan Carlin quote of "history has all but ruined fiction for me", and that shows up in the things that I read. It's rare that you will find me reading fiction, though I do from time to time. Most of the time, it's non fiction of a historical, technological, or business perspective. Those lessons often make their way into my posts.

"That Reminds me of a Testing Story..."

I owe this phrase to the Cartoon Tester, aka Andy Glover. He used it as a comical way of showing the different type of testers out there, but it illustrated something I frequently try to do. Even in the mundane aspects of my life, I find things that both inform my testing, and also inform my view of the world as I see it, which in turn informs my testing. Something as simple as a way to mow the lawn, or deal with pests in the yard, or trying to manage the delicate balance of life in my fish tanks, or the daily dilemmas my kids face, or the often interesting and noteworthy events that happen in my role as a Scout Leader, all of these shape what often becomes an analogy to software testing. They may be helpful to others, they may not, but overall, I remind myself that they are helpful to me. Whether they be specific to ideas, events, or interactions with individuals, each of them informs what I do, and gives me ideas of ways that I can do it better... maybe :).

Again, I want to thank Jokin for helping me consider this, and give me a chance to respond a little more in depth. While everything Jokin says is accurate, I hope this gives you a little more of a glimpse into how I think and work, and how I like to gather material that ultimately makes its way into my blog. If these ideas help you to write better, more frequently, or at least think a little differently about how you write, awesome. If not, again, it felt good to give some additional thoughts as to what writing "the Michael Larsen way" actually means, at least to me.

Thursday, November 20, 2014

TESTHEAD Paddling Through "Uncharted Waters"

A couple of months ago, I agreed to come on as part of the team that writes an IT blog over at IT Knowledge Exchange called "Uncharted Waters". This blog was started by Matt Heusser a couple of years ago, and Matt invited Justin Rohrman and myself to write articles for the blog as well.

Since September, I have contributed a few pieces to the blog, and so far the reaction has been quite positive.

What did I not do? I didn't tell anyone HERE that I was writing them (well, outside of my little Twitter feed that appears in the corner of my blog). Needless to say, I am not doing well in the sphere of self promotion, but I aim to change that going forward.

For obvious reasons, I want to encourage people to read them. If you read them, and enjoy them, and comment on them and share them with others, that gives IT Knowledge Exchange, and other outlets, reasons to have me write more articles for them. It also gives me a chance to do more research, learn about different things, and develop ideas that I hope can benefit all of us.

So to that end, here are a few links to recent entries.

Twenty Years, Seven Companies, Nine Different Styles of Testing

Your First 30 Days in the New Gig (and if You’re on the Old Gig, They Begin TODAY)

Create Your Own Career Trajectory

Using Collaborative Tools To Improve Software Work

The Art of “Making Time”

My View of the Future: Mixed, but Guardedly Optimistic


These articles have been interesting opportunities for me to go into areas I don't normally talk about, and share my message with people who may not otherwise read it here. I would also like to encourage my regular readers to check out these articles as I write them, and perhaps add Uncharted Waters as a regular part of your daily or weekly read (Matt and Justin publish some great stuff). It's been a pleasure to get into the groove of this initiative with them, and I look forward to future entries, both there and here.

Monday, March 10, 2014

Happy 4th Birthday, TESTHEAD :)!!!

As I find myself having conversations with a hosting company trying to find out why a database provisioning tool isn't working, a number of modules for SummerQAmp are nearing final drafts and re-visioning, and a few talks are being finalized for conference presentations both near and a few months from now, I came to a realization today. TESTHEAD just turned four years old.

Back on March 10, 2010, I posted the very first message on this blog. It was a bit hesitant, but it made the point of what I hoped it would be:

Welcome to TESTHEAD

"OK, why the need for a blog like this? Well, truth be told, I don’t know that there really is a “need” for this blog, but I’m doing this as a challenge to myself. I consider this an opportunity to “give back” to a community that has helped me over the course of many years, as I have been the beneficiary of many great insights and learned a lot from a number of people and sources over nearly two decades.

[...]

this will be a site where I share my own experiences, both good and bad, and what I've learned from them. Expect there to be talk about tools, both proprietary and open source. Expect some talk about test case design (and how I so hate to do it at times). Expect to hear me vent about some frustrations at times, because like all people, I have my share of frustrations when things don't seem to work correctly or go the way that I planned them to. 

[...]

Most of all, expect to get a real person's perspective on these things and an attempt to communicate them in plain English, whenever I possibly can."


So how have I done on that front? Well, it looks as though many of the initial ideas that I had fell by the wayside pretty quickly. This blog does talk about tools, but it's less specific than I think I initially intended it to be, and I think that's for the better. This blog definitely has taken on a human touch and dealt with a number of the things that I have found to be frustrating and interesting, and sometimes both. 

Overall, this blog has become a repository of a lot of interconnected experiences, and the fact is, one thing leads to another. So many of the things I've talked about these past four years I had no idea I'd be discussing when I first started this challenge. I had no idea I'd join AST, become a BBST instructor, spearhead facilitation for Weekend Testing in the Americas, become a guest blogger at a variety of sites, be invited to speak at conferences halfway around the world, be asked to contribute to a body of knowledge for QA Interns, or be a mentor to other up and coming testers. The opportunities that come my way never cease to amaze me, and very often, those opportunities have stemmed, in some way shape or form, from what I talk about here, at TESTHEAD.

Four years, 889 posts (including this one), zeroing in on a half a million page views, and a lot of great friends and interactions. Thank you, everyone, who has in any way been touched by this blog. Thank you for your Likes, your re-tweets, your favorites, your re-pins, your email forwards and any other ways you've helped to share my blog with other testers and interested parties. It seriously means a lot to me, and I hope to keep making this a destination that you will want to keep coming back to. It looks like pre-school is about to end. Time to get TESTHEAD ready for Kindergarten :)!!!

Sunday, August 18, 2013

Focus on the Issues, not the People: 99 Ways Workshop #63

The Software Testing Club recently put out an eBook called "99 Things You Can Do to Become a Better Tester". Some of them are really general and vague. Some of them are remarkably specific.

My goal for the next few weeks is to take the "99 Things" book and see if I can put my own personal spin on each of them, and make a personal workshop out of each of the suggestions. 



Suggestion #63: When reporting, try not to be seen as the enemy; assign blame to systems and applications rather than individuals and stick to the facts. Equally, emphasize the positives, and the efforts made to correct issues; this time ignore the systems and applications and focus on the individuals who got the defects fixed. - Joseph Brannan


This is an aspect of everyday life, not just software testing. As has been mentioned previously, software is written by humans, for humans, and ultimately is human. We all share the processes of getting software that is useful, usable, and defect free as possible. We can be effective and we can also do so in a way that focuses on the fact and the issues, and minimizes getting personal.


Workshop #63: Use the paradigm of the journalist/beat reporter. Make each story relevant to the community you are reporting to. Be an ethical reporter, and keep the editorializing to a minimum.


Jon Bach, through his writing over the years, was the one that first cemented in my head the idea that software testers were being mis-cast in their roles as "guardians of the code".  For many years, I was taught that there was a focus on breaking the software; we had to find the problems made by those "lazy developers who didn't know better". We had to protect our customers from "shoddy code and practices".  This was also fostered during an era or very separate development and testing organizations. Jon helped me see that this was a bad focus, and an improper use of all of our time. Instead, a better metaphor for us was that we were journalists. We were interviewers, and we were developing stories to share in the local paper for our community. In this case, the local paper was our organization, and the readers were all of the engineers, testers, senior management, etc.

With that in mind, think about how you would write a front page story for your community.

- How you'd you craft the headline?
- What would be your lead paragraph?
- How far into the details would you go?
- Is your story front page news, or is it something for one of the special sections of the paper? 

Additionally, imagine that you are also potentially going to read about your own actions in this paper.

- What you would want to see people write about you?
- How would that level of exposure make you feel?
- What information would you want to have public, and which would you prefer to remain private?

The metaphor for telling stories and using a newspaper as the medium is a strong one, and it really brings home to me the value of what we do. Yes, we test, and yes, we look for problems, but we don't do that in isolation. We do that as part of a broader community, and in this case, that community is the people we work with everyday, and by extension the customers that we serve. Our "reporting" needs to focus on the most important details, which should be "what information will I find that will be the most informative and helpful to my community? What kind of a reporter do I want to be?"

Personally, I do not want to be seen as a gossip columnist. I don't want to be seen as a partisan. I don't want to be seen as vengeful or mean spirited. I don't want to be considered a "Papparazzi". I want to be seen as one who provides good reporting, solid information and gets to the heart of the matter in a way that will help the most people. Take the time to show what the questions are, and also show how we asked them. In a literal news report, that is easy. In a software testing framework, we need to balance the test reporting with the issues we have discovered, and help make a narrative that will either give those who make the decisions the confidence to move forward, or the willingness to stop and focus attention on fixing the issues that need to be fixed. 


Bottom Line:


The job of software quality is shared by the entire team. As such, we all share in shaping the narrative and telling the story of what the product will ultimately be. We provide information for the organization so that the ones responsible for making decisions can do so with the best insights possible. We are much more likely to be effective if, in this process, we focus on the issues, and leave the personal or the political out of the mix, as much as possible.