Quality is Job One

Uh, yeah.

So it is, but actually stating that, or anything along those lines? Way to kill the team, boss! (See Peopleware)

That said, quality assurance, quality control, QA, call it what you want, but it’s one of the more misunderstood aspects to software development. Oh sure, everyone knows that they need to do more QA or better QA, but lip service is about all that is ever paid towards it. I am notably not including in my ‘everyone’ those who feel that QA can be completely automated. You guys are wrong and I’m going to leave it at that. You also may think you don’t need to do it, see this article for some classic arguments against that fallacy.

I’m not going to go into depth about QA, how to do it, best practices or anything along those lines as I’m fairly unqualified. That said, I’m not really qualified to talk about anything, but that doesn’t really stop me.

QA is a processes, not a task

This particular fail case is something I’ve seen in multiple organizations now. The most obvious symptom of this is when management has decreed that there is a block of a few hours set aside to ‘do QA’ on an application with a few hundred known use cases. Another obvious indicator is when other employees are volunteered to do a few hours of QA on top of their normal job. Think you’re going to get good results from that?

The root cause of this failure is simply not understanding how QA works, so let’s walk through it a bit. In a very broad sense, the general list of tasks for QA is something like this:

1. Go through the basic cases

2. Go through the corner cases

3. Go through obscure, known failure cases

4. Exploratory testing

5. Automating 1, 2 and 3.

So, how does this fit into a day of work? Let’s find out:

First off, we’re going to go through the basic use cases for the application. Then, there is a pile of corner cases that are pretty valid that need to be checked out. Then it’s time to check all the really obscure, but horribly embarrassing failures that have been seen before. From there we can finally…What? You changed the code? Okay, first off, we’re going to go through the basic use cases for the application…

Interruption here! “Silly tester,” says the savvy developer, “You only need to re-test the parts of the system that were changed.” Nice theory, but wrong in many, many ways. Simply put, if this was the case, testing outside of developers would never be needed. That generally goes well.

Back to the task at hand, do the basic cases, do the corner caWHAT? Changed again? Basic cases…

The real job of QA starts at step 4, which we haven’t even seen yet. Exploratory testing is finding the embarrassing defects before they get out into the wild. A good tester at this phase is going to break your application in ways you haven’t even dreamed of. In ways that only 0.1% of your users would ever try to do. Of course, if 0.1% of your users do it, and you get 10k uniques per day? That’s 10 people per day that are going to hit this embarrassing bug that how could you possible let into the wild and I’m taking my business elsewhere right now as I obviously cannot trust you with my data. And if one of those has a blog? Heh. Have fun with that.

So the epic fail with having 16 hours scheduled in to test your quarter million lines of code application? If you’ve got bug fixing going on at the same time, any of your competent testers will never get past step 1. Any testers that listen to the savvy developer, or worse, are the savvy developer will miss basic cases and you deploy with fundamental breaks.

The purpose of QA is not to have someone say, “Wonderful developer, your application is perfect!” If I hear that from a tester, I assume the person isn’t doing their job very well. QA should hurt your feelings. Assumptions you made should be laid bare and justified or thrown out if incorrect. This is often the last line of defense before your customers see your application, take it seriously.

White Rock to Vancouver by Bike

I like my bikes.

This probably isn’t a surprise. I also like working and earning money so I can do fun things like eat and ride bikes. When you do not live in the same place that you work, there is a certain class of individual who enjoys bikes and feels that one of the better ways to travel from home to work and vice versa is with said bicycle.

This is the subject of today’s chat.

When I moved to White Rock, I knew that I would most likely be riding my bike to work on a regular basis. I did the usual searching via google and came to the conclusion that not too many people commuted by bike from my neck of the woods to Vancouver. The distance was mildly intimidating, from my work location in Gastown, I was looking at somewhere in the ballpark of a 60km ride one way to get to work. This isn’t an everyday ride for someone like me.

Fortunately, the bus system in the Lower Mainland is pretty good. Bike racks that can take two bikes are found on all buses, which is a great shortcut. My commuting career started by taking the bus to just over the Oak Street Bridge and riding from there. Later I expanded to routes through UBC but knew I was just delaying the inevitable and had to make the attempt to ride the whole way. I have now done the White Rock to Gastown ride enough times that I can make some recommendations to anyone who is interested in doing the same thing.

First, some links:

Cycling Route Planner

White Rock -> South West Vancouver

The Cycling Route Planner is a great resource for general cycling routes. However, I would note that it is far better suited to getting around Vancouver itself. The suggested route it comes up with from White Rock is a bit questionable, though certainly plausible.  The second link is my usual route to get from here to there. Once I hit Vancouver, depending on how I’m feeling I will go through UBC or directly up the Cypress bike route and over the Burrard Street Bridge. There is lots of information on riding around Vancouver, so I won’t talk much about that right now.

This is my getting to work route, coming back would be mildly different to avoid some of the left turns. Starting off, going down 152nd Street to 40th Avenue and turning left, while slightly further than going down King George, allows you to skip the King George/Hwy 99 overpass, which is not the most entertaining of options. The right lane does turn off, which means that a merge across is needed. Not a problem, but sometimes it’s a bit more stressful than I really need at the start of the ride. On 40th, once you hit King George, take a right to the Colebrook road offramp thing just before the overpass and then a left on Colebrook itself to go under the bridge. Colebrook goes along the flats and ends with a right turn and then up the hill. Stay on this road until it ends at 56th Ave and take a left there. Down the hill, take a right on Scott Road and the first leg is done.

I should note that the Colebrook route does involve a 500m long climb at something like 12%. This is a much less busy route than taking King George up to Hwy 10, but it’s worth pointing out. If that kind of hill does not appeal to your knees, continue straight on King George, go through Hwy 10 and use the crosswalk button to cross King George. The left turn lights do not turn for a lone biker, so it can be frustrating if there is traffic, but no cars turning left with you. Take Hwy 10 to Scott Road and take a right. There is a pretty big shoulder along here.

Scott Road, when I ride to work on it at around 7AM is not terribly busy. Your mileage may vary. Take Scott Road to 72nd, up and over the hill and left on 72nd. 72nd -> 116th Street and right. 116th Street is a bike route and is fairly pleasant. Up to 84th and left, finally down to Brooke Road and a right. Take Brooke down to River road and when traffic finally breaks, hang a left.

Depending on how you do this, this next little stretch can be a bit nerve wrecking. There is a lot of truck traffic along this road, though it is wide enough, it does get tight from time to time. If you are a confident rider, as you go under the alex fraser bridge, merge into the car lane to take a left on Nordel. If you’re a bit more timid, there is a crosswalk that I have used on particularly busy days.

From here, get yourself over to the parking lot of Planet Ice through the industrial park. From there, the walkway up to the bridge goes from behind the building. Stay to the right as you enter the parking lot and you can’t miss it.

The Alex Fraser Bridge itself is pretty self explanatory. You can’t really take a wrong turn up there. Once you have come down the other side, you will end up on a sidewalk with an off ramp to your left. The easiest way to do this next bit is cross the off ramp over to the lights, then take a right across the crosswalk. The little path continues on the other side and takes you over another bridge and then down some entertaining switchbacks.

At the bottom of the pedestrian walkway, you want to follow the little bike path away from the road that you are now beside. This bike path puts you into a dead end beside an off leash dog park. Start cycling down the street while keeping an eye open to your left. There is a bike path that goes over Highway 91 and you want to take that. Coming down from that bike overpass, take it really easy as you are going to take a very tight turn at the bottom and go in the opposite direction. This path spits you out on Westminster Highway.

Take a left on Westminster and the first right onto River Road. Enjoy.

Once you’re on River Road, there isn’t much else to say. Essentially the next 15km or so is straight with a couple of right turns. (And one left at a T intersection, but right is an obvious dead end, so it’s not hard to get). The new bridge over the Fraser River, accessible from Van Horne way is not something you will miss as you continue, take that over and you are into Vancouver.

Well done.

A few last points, unless you really have to, I’d suggest staying away from the Heather Street bike route during the school year if you commute in the mornings. There are several schools and associated dangers with parents randomly stopping to drop kids off. Fun times.

Lengthy, hopefully useful for some of you. Cheers.

Cypress Mountain

There are two major climbs that are accessible easily from Vancouver, Cypress and Seymour. Both are well into the epic climb category that actually compares favorably with some of the ‘real’ climbs of the grand tours. Both are in the 12-13km in length range, Cypress averages 5% and Seymour is closer to 7%. Up until today I had not ridden either of them.

The Chicks Cycling Club hosted what is best described as a mass start time trial up Cypress today. How could I say no to that? I did my research on the course and decided that at a steady grade of 5% my cassette that was currently on the bike was going to be suitable. Extended stretches of 7-8% would have led me to switching cassettes for better climbing.

It turns out that you should not believe the Internet.

My measurements of the race showed that there were a couple of false flats totalling something like 2km over the course of the race. This means that instead of 700m of gain over 12km, it was more like 700m of gain over 10km. Uh oh. So when it was all said and done, the average grade of the real part of the climb was about 7% with smaller portions reaching 8-10%. So I totally had the wrong gearing. That said, I’m not trying to say gearing had anything to do with my slowness. That’s all in the legs.

The announcements before the race made it clear that this was not a road race, despite the mass start and that it was a time trial so treat it like one. In a TT, the idea is to keep a steady effort the entire way as that’s the fastest way. So we roll out and a bunch of the guys at the front were sort of looking around. Uh, guys? It’s a TIME TRIAL. So I just settled into my pace and pulled the slackers for the first km or so until they actually started racing at which point I was promptly dropped. I did what I wanted to though, kept my heart rate pretty much pegged in the high 170 range for the thing, which was pretty much my goal.

All in all, I’m glad I did the race, coming down that hill afterwards was awesome. Don’t think a hill climb TT is really going to help my most common race of the year though, flat industrial park crits. Ah well.