Learning a new coding language

When I start learning a new coding language, I work through the same set of exercises each time. They are my coding kata, problems I know the answers to in several languages now, where the goal is to get the same results each time.

Exercises in ascending order of difficulty:

In a console/terminal window, display the number of days until Christmas this year, or a date that is meaningful to you.
Getting input from the user, display the number of days between two dates.
Write that output to a file, including whether the year you chose is a leap year or not.

Concatenate two user-entered words together, output to a console (string manipulation).
Count the number of a specific letter in a phrase (e.g. “The quick brown fox jumps over the lazy dog” has 3 of the letter e).
Count the number of a specific letter in a phrase entered by the user

Starting from a user-entered number, display “99 bottles of beer on the wall,” counting down to “No bottles of beer on the wall, go to the store and pick up some more.” (loops and control structures)

Display the factorial of a user-entered number (recursion)
Display the cube of a user-entered number
Display the cube root of a user-entered number

Return a true/false for if a given month/year combination has a Friday the 13th.
Count the number of Friday 13ths in a given year (always 1-3, never 0 or 4).
Display which months this year have a Friday 13th, using the system locale for month names (system information, loops).

Get the latest weather data on Mars from https://maas2.jiinxt.com/ (JSON file access and parsing).
Display the latest Martian min and max temperatures in Celsius and Fahrenheit.
Display the current Martian Sol (a Sol is the Martian equivalent of a day).

New Mac build

I got a shiny new Mac laptop for work use this week, and was thinking about the stuff you put on a machine to make it useful. This is my current set of necessary-for-work software:

Homebrew (to get everything else)
Chrome
Firefox
Git (to get code in progress)
Node.js (to get npm, and all the other hundreds of node modules)
Java (trying v9)
Gradle (was a PITA to get working, needed manual config)
IntelliJ IDEA community edition (to make sure Java and Gradle are both working, took some tweaking)
Visual Studio Code (nifty for JS work)
iTerm2
MS Office and OneDrive
The Slack app

It is a very different list to a few years ago. Android Studio isn’t currently needed on the work machine, Sublime was supplanted by VS Code, and Node is a relative newcomer.

St. Louis Techies Project

The St. Louis Techies Project aims to highlight people in tech in the St. Louis area. This year, for International Women’s Day, the global Women Techmakers group has the theme of “telling our story.” We want to tell your story!

This is my story, also available on the St Louis Techies website

How many years have you been in tech?
Since 2005, so 12 years now.

Tell me about your background. What were your early years like?
I was the science and maths nerd at school, did a physics degree because I loved the subject, and got into coding there via Fortran77 and then Visual Basic 4 and 5. My husband and I are British, we immigrated to the US in 1998 and got US citizenship in 2009.

How were you exposed to tech?
I had a Commodore VIC-20 as a small child and spent many happy hours typing stuff in, watching it run, and playing games. At University studying physics, we got access to Unix machines and Windows boxes. I married a programmer and taught myself Java so we could converse at dinner, then HTML, CSS, and other useful acronyms. After years of listening to him tell me about working with bad QAs, I got a job in that field so I could do better, and because it sounded fun.

What is your current role?
Director of Quality Advocacy for Asynchrony Labs. I serve nearly fifty quality advocates in two states, spread across three cities.

What is your proudest accomplishment?
Introducing the idea of a QA apprenticeship to the company. I took a candidate with no development background and trained him to be a QA automation engineer on one of our larger teams. After less than three years as a QA, his work is outstanding and contributes to a high-performing team responsible for multiple applications. We are currently training apprentices seven, eight, and nine.

“She was warned. She was given an explanation. Nevertheless, she persisted.” Tell us about a time that this applied to you.
When I arrived at Asynchrony in 2013, I was one of nine QAs for about two hundred developers. Many teams did not have a QA person, and the QAs worked in isolation. I wanted to change that, despite being told that “Test-driven development means we don’t need a QA.”

I implemented automated tests on my team, learned C# from my team lead. I started a weekly QA stand-up to connect the QA team, asked for and got a free month of Codeschool.com for QA people to continue learning, and drove hard to be the best QA automation engineer my team had ever seen.

Now the QAs are a team of nearly fifty for four hundred developers. Teams request a QA on startup, the QA team meets every other week to share knowledge, and we are continually training each other, pairing with QAs and developers, and having fun.

What are you learning right now?
The Elixir language. Current goal is to write myself a web server that will return a correctly formed HTCPCP 418 error, see https://tools.ietf.org/html/rfc2324 for details of the spec I’m working from.

Describe a time where you solved a problem in a creative way. For example, did something in your personal life trigger a solution to a problem at work?
I was trying to coordinate QA activities while being a full time QA on my team, and we hadn’t been able to hire a replacement for me. I asked for and got permission to hire an apprentice, thinking of my father’s experience when he was apprenticed to a local carpenter as a teen. His apprenticeship changed the course of his life, I wanted to give someone else that chance. It was a risk, my apprentice took a huge leap of faith and we muddled through a three month boot-camp until he was ready to start flying solo. I’ve continued to meet with him to advise and encourage and hear his successes and experiments, I’m so proud of what he has become.

What was the last fear that you faced? How did you feel after you conquered it?
Speaking in front of groups of strangers has always been terrifying for me. My mentor challenged me to visit the CoderGirl meetup and talk about software QA. I prepared a speech, got myself a green laser pointer and did it. I felt horribly nervous but people liked the talk. I have taken on part of the new hire orientation presentations at work, so I speak in front of a group every month and over time it has become easier. It’s still scary though.

What advice do you wish someone had given to you? What advice would you give to others starting out?
Don’t let anyone tell you that you can’t do this, that something is ‘too technical’ for you to understand, that your role and discipline is a second class citizen. March forth and be awesome!

What are your hobbies?
I’m a 1st degree black belt in Chinese Kenpo, which took over eight years of training. I knit, I spin yarn from fleece, and I write a novel every year with National Novel Writing Month.

What do you like about St. Louis? The midwest? Why do you live here?
The people here are friendly, the weather is constantly changing and the summers are glorious. The town is big enough to get band concerts but not so large it feels like a New York or London. I have history here, my favourite bread shop and coffee place knows my name and my order, and I feel like I belong here.

Who inspires you?
The people in my life who struggle with mental illness and refuse to give up against often overwhelming difficulties. Walking forwards against a depression hurricane is a struggle I share with them.

What tags would you use to describe yourself?
Android, C#, cat-herder, English, immigrant, Java, kenpo student, knitter, leader, lifelong student, manager, muppet-wrangler, QA, QA engineer, tester, wife.

Agile Transformation

My employer lets take one day a year as a "Day of Caring" to be used at a non-profit organization of our choosing. I did mine with an associate pastor of Life Community Church in Columbia IL. I’ve spent two and a half years immersed in Agile software projects, and the way we manage teams is different to anywhere else I’ve worked. We spent the day doing an Agile Transformation bootcamp on these subjects:

  • Incremental improvement
  • Experiments and the scientific method
  • Big visible metrics
  • Kanban and acceptance criteria
  • Brainstorming and dot voting
  • Time-boxing
  • Meeting agendas
  • Stand-up status meetings
  • Retrospectives and feedback
  • Office layout

The goal was to improve visibility into who is doing what, put in some lightweight structure around projects, and make sure important stuff got done. We did a brainstorming exercise, a demo of Kanban using Trello, some ways to make meetings short and useful, and a lot of time management and project management lessons.

My plan is to return around February and continue the Agile transformation. It’s cool to see the tools and methods I’ve been taking for granted applied in a completely different setting, but still be amazingly useful.

Goodbye FitBit, Hello Garmin

I’ve had a FitBit tracker on my wrist for about two years, first the Flex, then the Charge, which was a Christmas gift from Husband last Christmas. Less than seven months ago I had a brand new Charge, what I currently have is a Charge where the adhesive has failed and the tracker is pulling away from the band. FitBit customer service is sending a new one, after I sent them a picture of the damage.

The FitBit Flex was bought for me by my employer. The band broke twice, with the plastic pulling away from the clear window, FitBit replaced the first band, the other got replaced when the Flex stopped charging and they sent me a whole new Flex. Kudos to their customer service for putting things right, but the build quality of their products just isn’t good enough for me. Every FitBit product I’ve used has broken in less than a year of use.

Enter the Garmin vivofit 2. Battery powered, so no charging, and the batteries should last a year. Waterproof to more depth that I’d get to, so I don’t have to take it off to shower. Tough clasp that locks in place. I’ve lost the tracking on floors climbed, but that wasn’t important to me, and I never knew if I’d log 9 or 11 floors on the way in to work. I still have step tracking and sleep tracking, the two features that were most important to me.

Now I have an always-on digital watch, and it’s pretty nifty. Weighing in at 25g, it weighs a whole gram less than the Charge did. I gained the Move Bar, a red line that comes on when I’ve spent too long sitting. It’s fun to get up and walk until it goes away. So long, FitBit, and thanks for all the fish.

What NOT to say to your QA

It’s a feature, not a bug.
But why would you even do that?
QAs are just failed developers.
My code is perfect, I don’t write bugs.
You’re not supposed to do that in the app.
It’s a design error, not a bug.
I’m not fixing that.
Why are you worried about that? No one ever does THAT…
QAs aren’t technical, they don’t need to attend to that meeting.
You’re testing it wrong.
This doesn’t concern QA.
Get me on %MANAGER%’s calendar for tomorrow afternoon.
It works on MY machine, so it’s fine.
Load testing is for developers to do, not QAs.
We turned off all the tests.
The user will never be able to do that, so it’s an invalid test.
It’ll be fine in production.
You’re using invalid data, that’s why you think it’s a bug.
This way is better.
You need to take notes in the meeting for everyone.
QA can do that admin task, they’re not doing anything worthwhile.
Where are the batteries kept?
This has to be tested by developers, not QA
Can you hurry up? We have a deadline.
I thought you were a nice person.
So when will you be DONE?

(Some mine, others collected from Asynchrony QAs Slack channel.)

First speaking event complete

Last night I spoke at LaunchCoderGirl, an all-women group learning how to code. I spoke about what QA does in an Agile software development environment. People laughed at most of the places I wanted them to laugh, and when I was done there were several questions, then people wanted to talk to me.

This was my first ever public speaking gig. I almost ran out of business cards, and I have no idea how long I talked. My slides had a Dilbert cartoon, an xkcd cartoon, and the D&D alignment chart, plus some screenshots and links to QA resources.

Public speaking has always terrified me. I’ve taken baby steps with helping to facilitate our Agile QA class, and speaking at the new hire orientation session twice. Last night was not terrifying, and it was fun. And I used the green laser pointer I’ve wanted to get for years.

Edited to add:

I put my slides and transcript on Slide Share. I’m told I talked for about half an hour.