Wednesday, October 17, 2018

How I became Remote Guy


For over five years, I have been working from home one day a week. This has been a huge benefit to me as I had a one hour commute each way. I am now working from home full time. Here is how that happened.

A few weeks ago, my employer announced that they would be closing their Seattle area office at the end of this year. They had already reduced the staff at that office by 80%, and removed most of the computer hardware from the building. So the announcement was not a complete surprise. But what happened next was.

Right after the announcement, I was invited to a ten minute meeting with two people I did not know. I learned later that they were HR people from the new headquarters. I was told that I had three options: relocate, work remotely, or leave at the end of the year. The first two options included incentives, but if I left I would get nothing.

When I discussed the options with my wife, the remote option was the only way to go. Our family has strong roots in the Northwest, so relocating out of this region was not a preferred choice at this point in our lives.

After two days I told the company I would stay on as a remote employee, knowing nothing about why I had gotten that option or what they wanted me to do next year.

Within a week, a manager from the new headquarters called me. He told me about a new team that was forming there that he wanted me to be involved with. I was careful because I did not know if he was aware of the site closure announcement. A few days later we talked again, and he made it clear he did know, and was offering me a job. And not just any job, but one that sounded like it was a good fit for me.

Once I had made the decision to work remote, I was told I could start working remotely at any time. Given that information, I wanted to start as quickly as possible. Continuing to drive to the office every day seemed to serve no purpose if I would not be staying in my current job with my current team.

And so, I picked a date, and let everyone know I would start working remotely from that day. My home office was ready in time, and I became Remote Guy.

I have no illusions about being a remote worker having only up sides. It impacts my family. I am well aware that it can be a career limiting move, especially over time. Out of sight, out of mind. But being unemployed is even more so. So overall, I am grateful, and hopeful. I will see what comes of it.

Monday, August 13, 2018

Hiring 101

I just completed an excellent course on interviewing from the employer perspective on LinkedIn Learning. It is called Hiring Your Team. An account is required but the overview is public.

https://www.linkedin.com/learning/hiring-your-team

I appreciated the way the course emphasized respecting the candidate and treating them fairly. Some of the key points that stood out for me.
  • Have an interview plan so the hiring manager knows the questions that are going to be asked.
  • Make the candidate feel comfortable
  • Treat all candidates fairly and equally
  • Common biases in interview processes and how to avoid them.
  • Wait until all the interviewers have spoken to the candidate before comparing notes.
Comparing the tips in this course to some of my recent interview experiences was eye-opening. Here are a couple of stories.
  • One interviewer who formed a negative impression of me tried to influence the other interviewers, and I believe tried to get the interviews terminated early. I could hear him talking in the hall outside. The rest of the interviews did happen, but the occurrence shaped my impression of the company, which overall did not appear to have a well planned interview process.
  • Two companies I interviewed with recently did not provide adequate parking. For one I left my car in the parking lot of a nearby store that was closing, because the guest parking was full. Fortunately I arrived early enough and my car was not towed. The other was up front about their limited parking, so I arranged to be dropped off and picked up for that one.
This is less of a concern for downtown businesses where the expectation is to use public transit anyway. But for employers not close to transit, arranging a place to park for the candidate is essential to making them feel comfortable.

Those are just a few examples, but these are real ones that illustrate the point the course made about the importance of doing things right.

Tuesday, July 3, 2018

Software engineering is not a sport


Last year my employer downsized their Seattle office, laying off hundreds of people, about 80% of the staff here. I still had my job, but decided it was in my best interest to start looking at other opportunities, if only to get a sense of what companies I might want to work for if I did get laid off in the future.

After actively interviewing for software test engineer jobs in the Seattle market for six months, taking numerous phone calls, take-home programming assignments, and four onsite interviews, here is what I learned.

Software engineering as I learned it in my career is no longer practiced in many of the technology companies in the Seattle area. What is practiced is something more like a competitive sport than engineering.


More than half of the interviewers did not have a copy of my resume and asked me no questions about it. Most asked the same data structures and algorithms questions as every other company.

Many asked their questions very poorly, often inviting me to read their minds and being shocked when I could not.


“Can you tell me which geek web site interview problem I am thinking about?”

No I couldn't. Neither would anyone else be able to, asking it so poorly.


At my last onsite interview, one of the interviewers, a senior software engineer like myself, did ask me a question about my resume, sort of.


"Why have you never worked for Microsoft?"


What an odd question. I answered it by saying that Microsoft had a reputation for poor work-life balance at the time he was asking about, which he admitted was true.

I have an active personal life and a family. I make no apologies for that. In fact I celebrate it. Being able to have that and keep the title of senior software engineer without ever having worked eighty hours a week is something I am proud of. I think that is pretty smart.
Later, the hiring manager and a senior database engineer took me to lunch at a nice restaurant. In ninety minutes I barely had time to eat a sandwich. The engineer kept grilling me about my last project, and expressing strong opinions that he held onto despite my patient attempts to explain that wasn’t how our product worked. I believe he was actually disappointed that I refused to be drawn into an argument with him.

The process felt a like a competitive sport. In sports try-outs, what matters is how you can perform, now. Show me that you know the answer to every programming problem I might think of, even if to do that would mean preparation so extensive it would mean doing nothing else in your life. Not doing your job, not having a family, not having any hobbies except interview preparation.

But engineering is not a sport. It is a body of knowledge and experience accumulated over time. And so it is important to me to talk about that experience. Not to do so would be disrespectful, at least as I see it. But several times when I talked about my experience, I got the impression that many of the interviewers thought it disrespectful, perhaps because what I have done in the past is irrelevant to my current performance.

“Can you not think of a faster algorithm?”

I got that question many times. The short answer is yes, there is often a faster algorithm, but I don't write those on a dime.

"Are you sure you want to be an individual contributor? It looks from your resume that you want to be a manager."

Yes I was actually asked that one. A manager who was interviewing me thought I shouldn't be applying for a role as a senior software engineer with my experience. Some companies have told me I was unqualified, others that I was overqualified because I have leadership experience. What I am supposed to make of that?

In sports, such as soccer, a player who knows the game really well, but cannot run as fast as they once could, reaches a point where they are only valuable as a team captain, and eventually, only as a coach.

The collective feedback seems to be telling me that I am more valuable to the software industry as a "coach", such as a team lead, scrum master, or manager, than a "player" or individual contributor. That may be true, if not now, then at some point in my career it will be. But that is a very different thing from telling someone they do not know how to play. I leave interviewers with this question.

“Can you not think of a better way to treat people?”

Tuesday, April 10, 2018

AI and Machine Learning for Testing

Last year I didn't make it to the 2017 PNSQC conference. I wish I had, because I missed one of the coolest talks on test automation I have ever seen. I ran across it by chance, just last week, after taking an introductory course on machine learning.

Jason Arbon, CEO of Test.ai (AppDiff) presents his company's approach to using Artificial Intelligence and Machine Learning to automating the process of designing and running tests.


For many years I have been experimenting with model-based testing as an approach to automate the design of functional test cases and accelerate testing and improve test coverage. Model based testing is a powerful approach, but since it was introduced over 20 years ago, the software industry has been slow to adopt its paradigm of using an iterative process of modeling application behavior and generating tests. It can be difficult for testers to convince management to invest substantial time or money in new approaches.

Now the world has machine learning, which is a different iterative process of humans teaching machines using sets of data, but which has applications in many domains, not just software testing.

But even with the proven success of machine learning, it can still be hard to convince companies to investigate in testing technology. Jason worked for Google and Microsoft previously, which have immense resources, but he still had to start his own company to make his dream happen.

Test.AI uses a neural network and machine learning approach, and provides an application for testers to teach their "AI brain" how to understand the application they are testing. Their brain was trained by being given the data from thousands of mobile apps, with help from crowd sourcing. It can also learn from libraries of test cases written by testers. This apparently makes it resilient to changes in the UI as well. And each new application tested by the AI makes it a little smarter.

Test.AI seems to have solved, or be well on the way to solving, multiple problems at once, ranging from test coverage to making automation resilient to changes in the application UI.

In summary, an excellent talk and exciting work that could transform the software testing industry.

UPDATE: I have since learned of two more startups who are trying to use machine learning to do test automation. The robots are coming. Are you ready?

https://www.testim.io/
https://www.mabl.com/