Automation & Test Cases

I’ve come to realize that my answers to life and the universe may vary from others. Sometimes I fall in love with my answers, but I’m nearly always quite open to ideas that differ from mine. In fact, I love the conflict in thought because it makes me re-think the original problem.

One such example is in my mind. Slightly mentioned in HWTSAM and described in detail in my chapter of  Beautiful Testing is my approach to automation. When I write automation, I don’t think of test cases first. I may use a spec, notes from a spec, or just lot’s of notes in general to help me design test automation. I explore the component I’m testing– either manually, or in the debugger and create the tests as I develop the automation (skipping lot’s of design stuff because that’s not the point of this post). When I’m done, I prefer an approach where I extract the test cases from the test automation (either via c# attributes or export names or some other form of tagging meta data) and import theses test cases into the test case management system.

An alternate approach is to write the test cases first, import them into the TCM, then write the automation (optionally creating stubs automatically from the test cases). At first, I thought I didn’t like the idea at all, but I suppose it does force you to think about the details of testing up front (if that’s a good thing). One con that I haven’t resolved is what to do when the automation changes. With my approach, you just re-import the metadata. If you change the automation using the alternate approach, you probably need to update the TCM manually – but I suppose you could find a way to make that easy.

How about you – do you prefer one approach over the other or have an alternate approach? 

The truth about meetings

I’ve been talking about meetings recently at work (I’m still giddy that have far fewer meetings to attend these days). I’ve had discussions about meetings for at least a decade, and they’re all about the same.People grumble about ineffective meetings, while others grumble about too many meetings. Some grumble about who should be in the meeting, while others grumble about the meeting they should have been invited to.

imageHere’s the deal (according to me at least). Meetings are necessary and a good use of time (as long as you don’t screw them up). Try as you might, you can’t get a team aligned as well or as efficiently over email. Some problems (and solutions) won’t be put on the table in email or over IM. As introverted as many software people are, sometimes you need to talk to other humans to make the most efficient progress.

Think, for a moment, what a good meeting looks (and feels like). Good meetings are engaging – you want to listen and participate (rather than type on your laptop or phone). In good meetings, you learn something new (or help someone else learn something) or you reach agreement and have a plan of action by the time you walk out the door). After a good meeting you should have a feeling that progress has been made.

Then, there are the other kinds. We’ve all been there – half the room is typing on laptops, looking up once in a while to ask the presenter to repeat the last five minutes of their presentation. People talk, but no decisions are made, and most people are more confused about what’s going on than when they walked in the door. When you leave, you don’t know what to do, or at best, you are assigned to go back to your office and come up with a plan of action on your own.

We can all recognize a good meeting vs. a bad meeting, but how do you change one into the other? You have few options. One is to cancel all of the “bad” meetings. Then, you’ll only have good meetings left and life will be great. The problem is that you may actually need most of those meetings – you just need them to be more effective. Another option is to ensure that each meeting has a flow (I didn’t say “agenda” on purpose – I believe that meetings with out agendas can be effective if you have a consistent way to let the agenda emerge (scrum daily stand-ups are a great example of this (unless you consider an “everyone talks about their stuff” an agenda)). Also make sure that every meeting has a facilitator (who may or may not be the owner of the meeting). The facilitator’s job is to keep the meeting on track, stop “rat hole” conversations, and to assign action items as they come up.

Another suggestion is to reduce the meeting length. My hunch is that most 60 minute meetings can be done in 30 minutes, and 90 minute meetings can be completed in 45 (or less)). Meetings are gaseous entities that expand to fit the available space, and I believe that if you reduce the meeting time, that within a few sessions you will be getting just as much done (in half the time). If it works for you, please send your checks to me – I accept paypal.

More collateral for you on the subject

Making Time

Yesterday, a colleague asked me where I find the time to blog, twitter, etc. This is something I get asked often, but the only answer I have is that I just make time. I put blogging, presentations, sasqag work, and other community stuff right alongside my core work on my todo list. I’m heavily driven by my todo list (I use the tasklist in outlook), and anything I think is important makes it onto the list. I don’t work exceptionally long hours – I just make time for what I think is important. I don’t work exceptionally long hours either – my home life and my work life sort of blend together (I take care of personal stuff during the work day, and work most mornings and evenings from home. I’d estimate that I typically work about 50 hours a week at the most (although that number is a bit higher now as I ramp up on my new job).

I suppose it also helps that I think about work a lot. In fact, I write most of my blog posts (including this one) in my head before I sit down to type them out. I use my commute (20 minutes) to think through blogs, papers, projects, and whatever else I’m doing that requires a bit of thought before execution.I don’t have a lot of dead time during my day, but I think that helps keep me sharp.

I have one other bit of related advice to share (something I should have included in my gravy train presentation). There is always enough time. I’ve talked to people around the world (mostly testers), and I’m surprised how many tell me that there is some cool thing they want to do…but they just don’t have enough time. “I’d like to learn a new language,,,but I don’t have time”, or “I’d like to look ahead and build a strategy for our team…but we’re just too busy with execution right now”. When people tell me this, I ask- “What would happen if you were sick for a day? So sick you couldn’t even get out of bed?” “Would you be able to “catch up?” Sometimes they try to convince me the world would end, but the conversation always ends with a statement like “it would be inconvenient, but we’d survive”. “Fine”, I say, “if this is important, block some time off of your calendar and make it happen”. You will never get off of the treadmill if you don’t make that time, and if you don’t get off the treadmill, you’re never going to make great things happen.

And everyone should get a chance to make great things happen.

ed. Adam Goucher pointed me to this article on making time. A fantastic read – thanks Adam.

More stories about moving

My family moved into a new house about 16 months ago. There’s an office on the ground floor where I set up my pc, my music stiff and a bunch of boxes (mostly filled with books and CDs). I never quite figured out what furniture to buy for the room, but in the end, it didn’t really matter. It turns out that my wife loves my computer (it’s a fanless, ultraquiet system with two 19” widescreen monitors on ergotron arms. She also fell in love with the room – it’s on the first floor, near the front door and kitchen – a perfect place to be if kids are in the yard, eating snacks, or playing around the house. I relinquished the room to her several months ago, but all of my crud was still in there because we never figured out where it should go.

Our house has a “bonus room” that we thought would be a kids play room or a TV room, but it didn’t work out well for either of those options. The room is on the second floor over the garage – far, far away from the kitchen and family room. When you have a four and five year old, you don’t necessarily want them playing (or watching tv!) so far away you can’t hear them. Sometime a few months ago, we decided that I could take over the room. It’s a pretty big room, but it will be fun to have a place for all of my book, cds and music stuff.

We had a bit of a moving day today, and I hauled about 20 boxes upstairs, and moved some shelves from the garage. Right now, it looks like a big storage room (because that’s what it is right now). I’ve been using the Ikea room planner to get an idea of how to set it up and threw this together:


The file cabinet in the corner is a stand-in for a 20-space raxxess rack where I keep most of my electronics. I have a few sets of studio monitors that I’ll put right on the bookshelf – not the best solution, but I think it will work fine. I’m not exactly sure where to put the desk, but that spot in front of the shelves is as good as any. The room is pretty big – not counting the entry hallway, it’s 13×17 (17’ left to right as you view this picture). I have 4 saxophones and 3 guitars that can go behind the chair somewhere, and a bunch of smaller instruments that I can put on shelves, or in the cabinets on the right. Acoustically, the room is a little bright now, but I’m hoping it deadens up a bit once I unpack everything. BTW – if any readers with better decorating skills than me have suggestions, please fire them away in the comments section.

For comparison, here’s my wife’s office (my old office).We’re going to put a foldout couch between the doors and have it double as a second guest room (with my office, I suppose, being a third). Until today, most of the floor space (including inside the closet) was piled with my boxes.I’m pretty sure most of the carpet in that room has never been walked on.


What comes with the gravy?

I mentioned a week ago that I was giving a talk on career tips called “Ride the Gravy Train”. I gave the talk today (which had a remarkably large turnout), and think it’s a talk I’ll deliver again (with some tweaks).

Without going into details, here are the tips:

  • do the right thing
  • try different
  • speak up
  • learn your A-C-B’s
  • know that you don’t
  • know who you don’t
  • follow the leader – lead the follower
  • don‘t flip the bozo bit
  • …and don’t burn bridges either
  • find a mentor
  • ride the gravy train
  • find the steepest learning curve
  • the three p’s
  • be happy
  • a career is a journey, not a sprint
  • there’s nothing wrong with self-promotion

As  you can tell, there’s nothing Microsoft specific here (and probably nothing controversial either). As usual, of course, I use few words on my slides (this is the sum of all of the text), and the words I use are too obscure for most people to provide context.

Given that it’s my product now, I’m considering doing a live meeting version of this talk (and if that goes well, others). I thought about doing something like this before, but as soon as I suggested it, I got very, very busy. I’m still busy, but at least I can say I’m testing (and I promise to anyone who wants to listen to the talk that I will take every bit of feedback you give me on your experience with the product and get it to the proper people). Not sure when yet, but probably in  a few weeks. I’ll post something here and frequently on twitter when I get things squared away.

My first day(ish) as the new guy

Originally, I was supposed to join the Communicator team today, but a cancelled day of vacation pushed my start date up to yesterday…but there was a meeting I wanted to attend on Monday, so I’ve basically been out of building 21 (EE land) and in or near my new office since Monday afternoon. So, let me tell you’ what I’ve been up to since then!

It’s been a bit of a slow start – given that I started early and the pace that the hr backend is updated, I don’t have permission to enlist in the source code yet. On top of that, I’m told it will take a week or two to get my server account moved so I can use the in-development release. I’m also still waiting on my new computer (I still have my laptop and a computer that will become my secondary machine, so I’m certainly not completely blocked).

And, despite waiting for permissions, I don’t feel blocked in my ramp up either. I have a 3-pronged approach to ramping up on a test team that is working well for me so far. First off, although I normally don’t like going to meetings, I’ve already attended half a dozen or so. Some, I’m invited to, and others I just tag along. It’s a good way to figure out what’s going on in the project, learn faces, and get a sense of the team dynamic. Secondly, I’ve spent several hours reading through bug reports. It’s great – without talking to hardly anyone, I already have a sense of the types of testing approaches used on the team, a sense of how the database fields are used and interpreted, and even some insight into individuals on the team. I’ve recommended reading bug reports as a way for testers to ramp up quickly on a team for years, and I’m delighted to see that it works. And – I’ve read team wikis, test plans, and whatever other collateral I can find in order to help round out what’s going on.

I’ve been reading so much, in fact, that by Tuesday afternoon, my eyes were aching and my vision was fuzzy. So fuzzy, in fact, that I visited the optometrist on the way home for my first ever eye exam. Shortly later, I ordered my first ever pair of eyeglasses. I’ll post photos of my new look as soon as they show up.

Today, I made sure I took a few breaks to rest my eyes – I used the time mostly to unpack a few items and tidy up a bit. My new office is now entirely unpacked except for a big box full of random cables that I’m afraid to get rid of because the moment I do, I’ll need one of them.

I think that’s about it. Oh – except that I’m giving a talk tomorrow on random career tips. I think it will be interesting, but we’ll see. Looking forward to sharing them here at a future date…or perhaps over live meeting??? 🙂

Why Office Communicator?

Since announcing my pending job change, several people have asked me, “why did you choose the Office Communicator group for your next position?” The answer is also part of the internal talk I’m giving this week on career tips, so I thought I’d share it here.

One of my favorite things about Microsoft is the wide variety of teams, products and roles available across the company. While considering this change, I looked seriously into possible roles on at least half a dozen teams. One job was extremely technical – working on testing a major new feature for a critical and complex component (sorry, I have to be vague since it’s unannounced). Another position was working on a cool technology helping them with their test tool infrastructure. Talking to the managers in charge of these teams helped me figure out what kind of position I was looking for (when I started looking, I wasn’t entirely sure what I was looking for). In fact, when Ross (my new manager) and I first talked, I told him I’d keep him in mind as a backup – but we eventually talked and I began to change my mind.

When looking for a new job, the 3 Ps are important to keep in mind. You can follow a Person (a manager you really want to work with), you can work with People (teammates can make or break your experience), or you can go to work on a Product or technology you’re passionate about (or ideally, a combination of the three). As I mentioned, I’ve known Ross for 7 or 8 years (Ross used to chair the Test Architect Group before I took over). I’ve also watched Ross doing some extremely cool things as a manager over the past few years. As I dug in a bit deeper to the org (you should always do your homework when changing jobs) I found more things I liked. Ross’s manager spent some time with me, and showed me that he understood more about the challenge of software testing than just about any other manager of his level in the company. I also discovered that a peer of his, as well as a team mate-to-be are people I worked with and respected in previous jobs. I’ve met various other people from this org over the years and I’m certain it’s a team I can work with. What surprised me in my search was how interested I became in the technology (it’s quite common to love a job where you aren’t passionate about the technology). As I talked to the team and learned more about the product, I began to get pretty excited about the potential – and felt pretty good that I found a position that nailed the 3 Ps as well.

Office Communicator is about a lot more than an IM client (in the past, I have jokingly referred to the product as “messenger – enterprise edition”). There’s potential to do some pretty cool stuff with online meetings and recordings (and thing in the client too). There’s also plenty of more technical challenges below the surface (distributed algorithm testing anyone?), so I’ll get to do a wide variety of work. I think it will be fun working on a team like this and hope to have a lot of fun.

And, beginning Tuesday, I hope to begin to figure out much more about this team and start to figure out exactly what that wide variety of work entails. Stay tuned.

New office, new stuff

As you know, I’m getting ready to change teams at Microsoft. My current manager gave me the ok to spend a bit of time during my transition ramping up on my new team. It looks like I’m not going to get much of a chance to ramp up, but I think I will be able to get my new office set up in advance, and I spent a bit of time today moving furniture and setting up equipment (almost).

One quick aside about changing jobs at Microsoft. It used to be that when you changed jobs your computers stayed with your current team. Eventually, the finance guys realized that buying new machines after nearly every employee transfer was getting a bit expensive, and they changed the rules so that you could bring at least one computer with you when you move (or more if agreed upon by both managers).

Anyway – I’m in love with my laptop and chose to bring that with me (besides – my current work desktop machine is more suited for writing books and developing powerpoint slides than compiling large software products). I asked my new team if they could leave my new computer in my new office, and that I’d come by to set it up when I had a chance. I had an hour this morning to swing by and check on my new digs. It’s going to be a bit weird working in an office all day – I’m so used to the team room (and meetings), that sitting in an office is going to take a bit of getting used to. The first thing I did was move the desk around – I don’t like having my back to the door when I work. There was a big Dell tower computer in the office, so I started plugging in peripherals, power, etc. There were also two new 19” monitors, so I unpacked those and set them up … and ran into my first problem. They came with VGA cables only, but the computer only had DVI ports. I walked down the hall to find our groups business administrator (who is awesome, btw). She pointed me to the admin who gave me a funny look when I used words like VGA and DVI, but she pointed me to a box of cables. I found a DVI cable, then eventually found a 3-foot DVI cable (seriously, what is that good for). As a stop-gap, I found a VGA-DVI converter dongle and went on my way. I also noted that I need to order monitor arms since, for some reason, I like to flip my widescreens 90 degrees, and the stock stands wouldn’t work that way.

Once I got everything hooked up, I powered on and positioned my finger over the F12 key for a PXE boot (PXE is a network boot that is very convenient for installing a clean OS). Unfortunately, PXE hit an error and didn’t boot. I rebooted a few times, played with the bios, swapped out cables, pixie-booted another machine, and did the full range of trouble-shooting; which in the end pointed to a problem with the machine. Since the machine had an integrated NIC, I thought I’d check if there were any bios updates. I searched Dell’s site, found the update and downloaded it to my laptop. But then I noticed that the date on the latest updated was March, 2006. I looked inside the machine and saw a note saying it was manufactured in 2005. Admittedly, it’s a pretty sweet machine for something five years old, but how could this team give me a clunker instead of a new machine. C’mon – I’m Alan Page – I need to do …stuff…

I attempted to ask about the machine in a way that didn’t sound ungrateful, but at the same time say, sheesh, this machine is five years old. It turns out that they did order me a brand new dev box, and they left this one around for me to use as a test machine (and an awesome test machine it will be (dual proc Xeon)– once I get it to boot). I’m thinking I’ll have a pretty sweet setup fairly soon. If I remember to bring a camera to work, I’ll even take pictures. In the meantime, I have loads more work to complete on my current team, so most of my effort will be on that through the end of the week.

Books I’m about to (re)read

I’m heading up to the Vancouver for the Olympics this weekend and hoping to catch up on some reading on the trip. I’ve built up a bit of a backlog of books I want to read or re-read and I’m going to try to make a big dent in the list during the train ride (and while waiting in line for will-call tickets).

First on the list is Saul Alinsky’s Rules for Radicals. I’ve been meaning to read it for a while and I’m looking forward to seeing what people love (and hate) about it. second book on the list is The Checklist Manifesto. Atul Gawande spoke on MS campus recently and his talk inspired me to take a closer look at his book.

There are two other books on my re-read list. Both are controversial in that people seem to either really, really love them, or really, really loathe them. The books couldn’t be more different, but the value in both of them to me is beyond the printed word – the value is between the lines, in the thoughts and ideas they bring out in me every time I read them. ZATAOMM is a classic and a book that I read every few years, or every time I change jobs (whichever comes first). I’m  also going to re-read Quality is Free. A lot of software folks hate this book. At face value, of course, application of manufacturing approaches to software often fail, but the point (to me at least) is to remind me that quality can be improved through processes and culture change and it always gets me thinking of new ideas for improving software quality and building a quality culture.

That’s probably more than enough reading for a short trip, but I’ll bring at least three of those with me just in case there’s more waiting than I anticipate. I think Rules for Radicals is the only book that’s not commonly read among my peers, so I’ll plan to share any interesting insights in a mini book report once I finish it.

Ride the Gravy Train …

I give presentations to teams at Microsoft often. Some teams want a talk on a specific topic, and other teams just ask me what I want to talk about. It’s a good opportunity for me to try out different ideas and see if they have merit. I imagine only 10-20% of these talks would have any interest outside of MS (I think the same percentage of my external talks are interesting to MS folks too).

Anyway, for a presentation coming up in a few weeks, I’m sharing random bits of career advice. The title of the talk is Ride the Gravy Train …and other random career advice. I’ve collected a random assortment of interesting/bizarre/weird career advice over the years, and thought it would be fun to throw it all together into a presentation. I’ll likely use the backdrop of my own career as a storyline for the bits of career wisdom, so I think I can get it to flow fairly well.

Some samples include:

“Always put yourself on the steepest learning curve” – this was advice I received indirectly from Jim Allchin (via a Distinguished Engineer I was talking to). The idea is that if you’re not challenged, you’re not going to grow. I can think of at least 10 examples from my career where I was in so far over my head, I had no idea how I’d ever be successful – but I figured it out, and the experience of crawling my way out of the hole was huge.

Almost contradictory advice from another DE was this: “If you have a great manager who takes good care of you, Ride the Gravy Train”. Good managers watch out for your career and unblock paths you never even knew were blocked for you.

Another one I heard recently was “Sometimes, it’s a beauty contest” – meaning that doing the work isn’t always enough. Sometimes you need to put some lipstick and makeup on your work and show it around to people who matter.

I have several more, but I’d love to hear yours if you have them.