The 5 stages – a guide for testers to the stages an engineer goes through when you tell them you’ve found a bug.October 29th, 2014
I didn’t write the following. It came a QA manager of mine, John Crook, some years ago when I first started out as a tester. I went on to be a developer for some time before returning back to my tester roots so I know these words to be the truth…
The 5 stages – a guide for testers to the stages an engineer goes through when you tell them you’ve found a bug.
1 – Astonishment
Typical reactions that identify an engineer being in this stage are phrases like “but that code is bullet proof” or “that can’t have happened because that code hasn’t changed for months”. During this stage the idea that there may actually be a problem starts to slowly sink in, this can take from seconds to days depending on the engineer’s ego. If the engineer lingers in this stage you can help guide them through more quickly by suggesting that if there is a bug it’s almost definitely someone else’s fault.
2 – Accusation/Anger
When moving to this stage the engineer is beginning to believe that maybe there is a product defect at issue here. However, if there is, it is almost certainly someone else’s fault. Typical phrases to look out for are “well, if that’s happening you better go an see so-and-so about it because he’s probably doing such-and-such wrong” or “that’s not how it’s supposed to be used – it wouldn’t crash if your tests were better”. You should seize this as an opportunity. Agree vigorously with the engineer that it’s surely someone else’s fault. Carefully worded agreement at this stage can propel the engineer into the final stage. However in many cases there are still two more stages to pass through before analysis is done.
3 – Assumption
During this stage an engineer will assume they know exactly what the problem is and exactly which line of code needs changing to fix the problem. This can sometimes happen before you’ve even finished explaining what the problem is. Phrases to look out for are “yes, we know about that, we discovered the problem ourselves and fixed it this morning” or “yes, it’s a C++ compiler issue and I need to change my code to work around Microsoft’s problem, come back in 5 minutes and I’ll have a new DLL for you”. It can be tricky to deflect engineers from this path once they have it in their head they “know” what the problem is. If you’re quick off the mark you can try pointing out how their assumption does not fit the facts however this can have varying degrees of success. Often there is no option but to redo your tests with the new DLL and go back to the engineer when the product defect still shows up.
4 – Acceptance
During this stage a few neurons finally connect and fire. The engineer realises that he will have to look seriously at the problem. This is good but you’re still not quite out of the woods yet. Watch out for delaying tactics like “OK, maybe this needs looking at but I’m working on this new work which is far more important, I’ll try to look at it later in the week”.When this happens it can often help to praise the engineer in some way – make out that they are so brilliant they could probably fix the thing in 5 minutes and that would help the product immensely.
5 – Analysis
Finally they will look at the log files and data you have collected and do some analysis of the facts.
The table is finally nearly finished. Joss came up with some screws for the corners, the sides and the castors. I added two counter sunk screws to each corner from underneath.
For the sides I worked out a nice pattern using magnets to see what different spacings would look like. In the end I just went for an even spacing down both sides. The screws are zinc plated domed slotted screws. I removed the zinc by sticking the heads in hydrochloric acid until the bubbling stopped.
The strap around the edges was taped then marked, punched and drilled. You need three bits for this. A pilot bit, one sized for the screw threads then another sized for the shank of the screw. To get the depth of the shank drilling I wrapped tape around the bit at the right level. Drill down to the tape and the hole will be the correct depth.
One annoying thing about my drill is that it has a ‘handy’ LED light in it that is totally useless. It’s positioned so that the chuck shadows the light completely and no light goes on the actual bit itself. Pointless really.
You can see above the plastic sheet on the floor in preparation for the next step – oiling!
I took the top outside and left the rest indoors. I used boiled linseed oil thinned 50/50 with turps for the first coats. The oil is put onto a rag then the rag rubbed over the wood. The wood soaks up the oil and leaves a nice, warm finish. It takes many coats. Thinning it makes it easier for the first coats to penetrate the timber. Joss told me the rule in theory is one coat an hour for a day, one coat a day for a week, one coat a week for a month, one coat a month for a year then once a year after that.
In practice I just did a bunch of coats. So far I have used about 3/4 of my 50/50 bottle. Once that’s gone I will start in unthinned oil. I started with the bottom of the top and the underside of the table and the legs. I turned it upside down to make that easier.
Then, after I had a bunch of coats on that I turned the table over and bought the top in and started doing the top of the top. Mike was off to the demolition yard for some things so I made use of his trailer too and got a sheet of 10mm ply to make a temporary top. There is no point getting the glass until there is something to see under it. I cut the ply to size using my jigsaw. The opening in the top is square. Unfortunately my sawing isn’t so the gap around my temporary top isn’t quite even but it’s good enough.
I then had to come in (damn that getting dark thing in winter) although I kept putting on coats throughout the evening. So you could say I was on the turps all night! One thing people had warned me about was the linseed soaked rags spontaneously igniting. I didn’t see that as a warning so much as a challenge! So I stuffed the soaked rag into a tin and put that in my fireplace hoping for some ignition action overnight but nothing happened.
Still it does actually occur apparently so you do have to be careful with the rags.
This morning I got a brass finger pull thing from Joss so I added that to the temporary top board. It goes through the board so I added a block underneath as well as some foam strips to raise the board to the level of the rest of the top. The pull just means you can easily lift the temporary top off.
Because everything is now oiled it’s slippery. To locate the top I was thinking of strips in slots or dowel pins but I didn’t like any of those ideas since removing the top might result in chipping of the top or the base where the strips or pins touch the wood. Instead I got some of the left over sticky anti slip matting I had (and used previously when planning the top) and cut that into strips and that is now preventing the top sliding. It is working well so far. Of course the table being on wheels means if you push the top the whole things moves. I need to get some wheel cups for it then see how secure the top is.
Today I added the screws to hold the castor cups in place and kept oiling. The legs have come up really dark and the top and sides not so dark but overall the effect is good. The oil really brings out the warmth in the timber and it will be a nice waterproof and hardwearing surface. All it needs is some oil wiped on it now and again. I will keep adding coats but I am already noticing that the oil isn’t soaking in as much now.
And finally I have useable table!
I think I might try eating dinner at it tonight.
Friday night I didn’t plane the top. I sanded it with the random orbit sander and that worked great. I then glued the corners. I had to make a few minor adjustments to get everything square. The fit isn’t perfect but I was more concerned with making it square. I weighted it down with handy Austin 7 parts!
Today I went out early to Omega Metals in Onehunga to get some steel strap (and I also found some brass rod perfect for my Austin bonnet main hinge pin). I then went out again as I forgot to get a router bit to match the width of the steel strap.
Luckily I hadn’t epoxied the top to the garage floor (I should have put plastic sheet under it before gluing) so I sanded it all back. There was a damaged edge on the underside so I mixed up some epoxy and sawdust and used tape to make an edge so I could epoxy fill the gap. I also did the same to the gaps on the underside to add strength then sanded the bottom smooth. I also used the router with a 45 degree bit to bevel all the edges to stop them splitting.
I then sanded the top then looked at cutting the slot for the steel edging. I was able to stand the top up against my workbench and clamp a piece of straight pine to the edge as a guide. There were two unfortunate things. One was the board wasn’t long enough to do the long sides so half way I had to stop and shift the board. The second was that the router bit I got was 20mm wide. The steel is about 20.5mm wide. So I needed to make one pass, make a tiny adjustment then make a second pass.
Once done though the steel slots in nicely. I then had to do the short ends. Luckily the board was now long enough. But I did need to find something to stand on so I could reach high enough. And since the stool wasn’t long enough I had to stop half way to shift that so I didn’t step off the edge!
I got it done though with no mistakes. The thing with routers is when it goes wrong it usually goes VERY wrong. Next I cut the steel strap. I could have bent the corners but it’s very hard to get a tight bend and I wanted square corners. Also any bend would have to be perfect so that the halves would fit into the slot correctly. I didn’t fancy my chances of pulling that off! So instead I cut six pieces of steel and welded them. Six because the strap is made in two halves. There is a split in the middle of the short ends. I was able to cut the pieces then tack them on the top then remove them to fully weld them.
The clamp held everything in palce and provided an earth lead attachment. Since there is a deep slot where the groove in the floor boards was I was able to do a nice big blob of weld on the inside of the corners too so they are good and solid. I ground down the welds. I don’t think the steel needs any finishing. The table will be oiled and that will stop the steel rusting. The black strap is suitably railway.
I will screw or bolt the strap in place. Actually now it is in there it’s quite hard to remove since the fit is so good. That done I bought the top in to try it out. The strap will also help hold the whole thing together of course. The laps will be screwed from underneath and there is a ton of epoxy so I don’t think it’s every going to break!
The short side with the two old nail holes I did the same epoxy and sawdust filler trick then sanded them smooth. You can see in the picture as well as where the join in the strap is. I like that the holes are visible. It’s part of the table’s story. They are old floor boards from the Auckland railway station after all and floorboards have nail holes!
Next I need to screw the strap in place. I am not sure what I will use to do that. Counter sunk screws? Black hex head ones might be nice? Domed black slotted screws? Something railway-y would be nice. And I can now give a final sanding and start oiling it. I’ll probably used something like boiled linseed oil.
Tonight after work I went to New Lynn to get a new router bit. I got the widest I could, 25mm. I came home and gave it a try and it worked great! I used 4mm ply as my spacer this time which was just enough to remove the bevel on the boards. I cut from each end leaving an island in the middle. Then I tacked another piece of 4mm ply on the side I had already cut so I could run the router over it still keeping the 4mm gap.
It didn’t take too long, I did all four boards, both sides, in about 70 minutes. And they came out great. I don’t think they’ll need much planing. in fact I might be able to get away with sanding them smooth.
That’s how they look after routing. The best thing is this was easy, the boards are now a nicer thickness and I didn’t have to scrape off all the old varnish! The downside was it made a massive pile of shavings and everything in my garage is now covered in orange dust.
It was so bad that after sweeping up I took off my face mask and literally started choking. I had to quickly open the garage door and get some air in.
Tomorrow I need to plane the top and put a small bevel on the edges so they don’t split. Then I can look at gluing it all together. I need to glue on the half rounds under the sides which will fit into slots in the table to stop the top sliding about. I can use my new router bit to cut those slots. All I need then is to final sand it all and figure out how to finish it. Then I can get the glass! The glass will need padding under it. I am thinking I could perhaps use cork tile cut into strips perhaps.
Another day where I rushed home from work and straight out to the shed. I trimmed the long ends and cut the ends of them in about 30 minutes. Easy once you know how. Amazingly the sides are all even and if you make one corner square the rest are too! I then started looking at how I can reduce the thickness without having to find someone with a thicknesser. I attached a small block to my router base board thinking what I can do is set the bit to the depth of the block by sitting the base on another block the same size then setting the bit to that depth. Then I can start routing the end of a board and slowly slide the router back down along the board in the same was as I did the ends. Only I can do the entire board. The base board rides on top of the uncut bit while the little block at the far end of the board rides on the just cut surface. That should keep the cuts very even. I didn’t get a picture of the fully routed board. When you get to the end you just place another bit of uncut board under the router so you can continue past the end. The cut was very smooth but not perfect so next I looked at planing it smooth. To do that I made a board with a block screwed to it that I can hold in my vice, not having a proper woodworking table or workmate I can clamp the boards in. That board has a block screwed to one end as a stop. Then I could lay my table top board on that pushed hard up against the stop. I then added another block held with a clamp at the far end. Now the board couldn’t move as I planed it. That worked really well! That’s a planed test board above. The reason I want to reduce the thickness is so I don’t need as much padding under the glass and also to remove the bevel that is on the edge of the boards. That bevel is quite large. And because of how I have joined the ends it makes a groove in the table top. I want to remove that but then later add a new bevel just around the edges where the glass goes to prevent the edges splitting. I did notice my router bit was broken after doing this. It was chipped anyway before I started but it has now lost one cutting face entirely. Also the 6mm block I used under the router was too thick. I think 3 or 4mm will be enough. The hand planing doesn’t take too much more off. It will be a lot of work but I think it will be worth it. It doesn’t need to be perfect of course as it’s a rustic, railway table! I bought the top pieces in and laid them on the table frame to see how it will look. Looks good! The top is 825mm above the floor. Tall but usable. That’ll come down a little if I route and plane the top of course. Sitting at it made me feel like you do when you’re a kid and you’re allowed to sit at the big table for the first time. It feels big! And that’s a good thing for a table with a train in it I think!