Keith Beckman used to develop software just for fun, but now he does it for work too. He agreed to talk to me via telephone from Augusta, Georgia, where he has worked from home for the past 2.5 years for the same software company. We met last summer at a blues dance weekend in Denver. He is tall, friendly, and had a full face of beard and mustache when we met.
The company I work for makes mobile testing automation tools. We make tools that are used for automated testing of other people’s apps. So we make tools for other developers. Because of that, we have to be able to support a whole variety of different technologies that different people use, which makes this job interesting because I get to play with all the cool new toys.
I really enjoy it. It means that we’re playing with every version of IOS before it actually comes out, new versions of Android, new types of testing software, new programming languages, all that. We don’t test the apps, we make developer tools for other people to test their own.
Flappy Bird, a wildly popular IPhone game, didn’t work too terribly well on old phones. They made most of their money by selling the game to people who were using the latest phone, because those were the only people who were going to play the game anyway.
Now put yourself in the shoes of someone trying to run the technology program at a bank. Suddenly, your technology has to work for everyone and it’s possible that you might have bugs in the app that might have financial repercussions, so everything has to work as perfectly as possible on the widest variety of devices available including, you know, Grandma’s old hand-me-down IPhone that’s 8 years old. Now Grandma needs to check her checking account balance on this old phone. We make it cost-effective for [businesses] to maintain a library of devices; all sorts of devices—IPhones, Tablets, different versions of Androids and IOS, different manufacturers—and then be able to run tests automatically on all of those so they can write a test banking work flow.
[My work] is honestly enough of the background of my travel now, taking my work computer with me, having chat on my phone just in case something comes up. At the same time it makes my travel much more flexible. I don’t have to worry so much about not being at the last late night dance to be home bright and early Monday morning because I can do that from my phone.
I have to be at work 40 hours a week, or much more, but I’m salaried so it’s really as many hours as are necessary. I’ve been to the physical office maybe a dozen times since I started working there.
I was a software engineer at a different company, and I did actually have to be in the office there. Now I commute from my bed to my Espresso machine. When I first started [with software] I was working on the support side, so I was helping people find bugs in support with clients, instead of actually writing software myself. I didn’t have to self-motivate, because motivation came in the form of, this client is calling they need particular help.
Switching gears to now having a task list of things that need to be completed is sometimes nebulous. Figuring out which ones are important, when I need a change of pace, what’s the unimportant thing, so I can use my procrastination to still get work done. I wouldn’t say it’s necessarily more or less difficult being here and not in an office. My previous job I worked doing in-house coding for a market research company so it was basically, people had specific requirements that they needed by specific times, so if there wasn’t anything urgent at my old job, sometimes we on the development team would sit there and play Magic of the Gathering until something came in.
It’s not so much the remote aspect of it, as the working slightly more disconnected from immediate client needs that makes everything a little more difficult to self motivate on. So I’ve had to find techniques like using my procrastination to work on slightly less important things than would be my primary task to getting something done. Or, going down to the coffee shop down the street and working from there for a change of scene.
There have been times when I’ve never gotten flow and it takes a long time to do a thing, because it’s very much a completely conscious task, and then there are times when the conscious part of the task is planning out, like 15-minute little things, but then magically get done when I’m in flow, and then there are times when suddenly I look up and it’s 3 in the morning, and I have been in flow for hours. I think the frustrating thing for me about that is that I also code as a hobby. This is a hobby that became a career.
My degree is in the bio-medical field. I dropped out of grad school for this. It was the best decision I’ve made career-wise–I really enjoy this. But the difficulty in switching from hobby coding to career coding is when I was not getting flow as a hobbyist, I could just quit and do something else, and now I have to write code whether or not it’s happening automatically.
I don’t know that I would stop coding, [but] there [are] so many things I love that I wish I could spend more time on. If suddenly I didn’t have to work, I would still be so busy. I’ve never understood people that find motivation and identity solely in their career. This is probably the best career for me. This has flexibility, a creative outlet. The same part of my brain that writes poetry writes code.
An elegance in expression: elegant code is not necessarily correct, but it’s very much more likely to be correct. Elegance; spare expression. You know when you write something and you finish it, you have this thing that you’ve just created that didn’t exist before? I have that exact same feeling with a programming project. Coding definitely used to be fun and is now work.
It’s very linguistic. Programming language is not computer language. Computers speak only numbers; programming languages are human languages. They’re languages that allow us to speak precisely enough to be understood by a computer. You write code, and that code is only for the benefit of the humans that are going to modify it. All of this has to be translated for the computer. Those coding languages are created by humans to describe the workings of computers.
You can sit there and you can write code and it can be objectively beautiful, and the computer will translate it into numbers and if you were precise enough in your description of what you want to happen, it will happen.