Thursday, August 30, 2007

apropos of not much: started a photo blog

I've been thinking about doing this for some time, and now it's happened. I got a nifty little bullet-proof camera and started a photo blog of the things I see from day to day. Considering where I live, some of them are pretty amazing.

Friday, August 17, 2007

so where's the testing

The Socialtext job is on craigslist now and I've been reviewing resumes. We have several great candidates, but most of the people who've submitted resumes don't seem to be able to help out much.

In particular, I'm seeing a lot of resumes that talk about how their owners do almost everything *except* actually test software. There seems to be lots of reporting and managing and reviewing and meetings and stuff, but actual testing experience seems to be pretty thin on the ground.

Or maybe that's just how people write resumes.

Monday, August 13, 2007

Socialtext is hiring a tester/QA person

The job announcement should show up here any minute. In the meantime, you can read the job description.

This is a great job, and we're looking for one outstanding person. You can google for Socialtext yourself (I recommend doing some research before you apply), and read the official job description. Here I'm going to talk about why this is such a great job, and the stuff you need to have to get it that isn't in the job description.

Socialtext has about fifty employees. A few are based in Palo Alto, but the development, QA, and support staff are spread across the US and Canada, along with a few overseas employees. If hired, you would be expected to telecommute. If you happen to live in the Bay Area, you'd be welcome to visit the office.

We're a small-a agile shop. We have standups, retrospectives, and iterations. We release small features frequently, and we install them on our internal wiki before we release to production.

Besides the wiki, we use irc, email, VOIP, VNC, and more, to communicate and share information. We're in constant contact with each other through the day.

Since so much of our communication is with text, excellent writing skills are critical. Since there are so few employees, abilities beyond testing are very important. If you know about business, or development, or marketing, or Open Source, that's important to us. You can have a real influence on how the company works.

We have some interesting company policies. For instance, the official vacation policy consists of five words: "Be An Adult About It". We have three salaries. Everyone who joins gets paid one of the three salaries. Everyone in the company (usually) has a quarterly travel budget. When you join, you get an allowance to buy yourself hardware. Most people have Mac laptops, but we have a couple of Windows users and a couple of Linux users.

A lot of our development work is done in public. Surf to see what we're up to. The coolest thing I have over there is three small tutorials for how to use our REST API with a Ruby client.

We have a lot of very smart people who hold strong opinions. We use strong language, because we don't have the bandwidth to play politics. We criticize ideas, not people, we work on fixing code, not fixing blame. Discussions get heated, but aren't personal. If you're offended by four-letter words in the service of making a point, this is not the place for you to work.

Besides unit tests, we have an automation framework based on Selenium. We've quadrupled the number of test steps since April, from about 1000 to about 4000. I'm using Watir and FireWatir to do basic analysis of page load times. If you know test automation, Selenium, or performance testing, you'd be very welcome. Performance in particular is just coming under close scrutiny. In the next six months we are planning to make significant improvements to all of our test architecture. It promises to be a really cool project.

We have about 10 developers. When we add another QA person, we'll have a pretty good dev/test ratio.

This is a great job with great people and a very interesting market.

If you'd like to apply, send your resume as text in the body of an email addressed to You can send it to me, too.

Tuesday, August 07, 2007

just enough design

So in recent weeks the number of test steps in our Selenium-based framework has quadrupled, from about 1000 to about 4000. The time it takes to run these tests is starting to cause significant pain.

So I set out to spike a little harness that would run sets of tests concurrently. (Note: it is *so* nice to have fork() available, after years of working in Windows environments.)

Trying to achieve the Simplest Test Harness That Could Possibly Work, I started out running all of the tests in the same test environment. Unfortunately, some of the tests change the state of the test environment, which causes other tests running concurrently to fail.

I started separating the state-changing tests (which may not be run concurrently) from the other tests (which may be run safely).

My colleague objected to this. Strongly. And he's right. He framed his argument in terms of old-school "software engineering" principles, but the argument is sound in terms of agile mantras like "make it work; make it good; make it fast". Segregating magic tests from non-magic tests will eventually cause failure. Or madness. Or both.

My next spike, I'm going to clone the test environment and run sets of tests in their own test environments. I think that's the *next*-simplest thing that could work, and it will get us a long way down the road-- until we have to design some more.