Thursday, January 10, 2013

Thrashing

No, I'm not talking about fast and loud heavy metal of the 80s, I'm talking about that state you get into when things just don't work. When you get stuck. when you feel like you are going around in circles. It's a great term, and I heard it for the first time yesterday in regards to testing. Some context. I was looking at some outside of the box tests related to how we do upgrades, and while I was doing that, I was finding just about everything that could go wrong indeed was going wrong.

No matter how hard I tried, I could not get things to settle down. As I was getting more and more frustrated, I was communicating with my Quality Director via irc, and during the process, he calmly said "you seem to be thrashing. Give me a minute and I'll take a look with you." Sometimes it just needs a sympathetic ear and another pair of eyes to help you spot something you hadn't considered before, or to clue you in on a key piece of information. Often, though, we don't avail ourselves of these opportunities. This hearkens back to my post of a couple of days ago in that we do not want to, really, admit our ignorance. We'll figure it out. We'll work through it.

Sometimes, that's a very good answer. We learn a lot by "going to the house of broken hearts and bloody toes" (and ten point for anyone who gets where that one comes from ;) ). Some of my best lessons have been learned by stumbling through, making mistakes, and applying them to move forward. However, if we find ourselves in a cycle of "thrashing", there usually isn't any learning or benefit. There's a lot of frustration, and we get mired. At this point, really, reach out and ask someone for a life line. It's not wimpy to do so, especially if you can say what you have done to get you to that point. It's possible something is missing, or has been mis-configured, or a build/upgrade that was supposed to happen actually didn't. If you know how to figure that out, then great. If you don't, go and ask someone. Sure, they may roll their eyes and wonder what's wrong with you, but most of the time, at least in my experience, real and tangible issues are often at the heart of thrashing, and getting unstuck becomes a team effort.

Thrashing is a part of every testers life, and it's genuinely not fun. The good news is, we can get out of it, and as long as we provide some learning and education to others to help them prevent being in a similar state, then all is good. If you find yourself thrashing, ask for help, don't just try to desperately swim. Ultimately, those who desperately try to swim get exhausted... and drown. Not at all the desired outcome, for anyone.

For those wondering if today's post has been inspired by recent events... oh yes, indeed (LOL!).

Wednesday, January 9, 2013

Shadow Boxing, Rounds 3 and 4

Ninety days in, give or take a couple of days.

So far, no one has commented that I have radically changed. In a lot of ways, I don't really "feel" any different now. The only obvious sign I've seen is when I take the medication later than normal. that leads me to having very restless nights and occasional insomnia. It has also led to some crazy vivid dreams, but again, I think it's because my brain is still a bit "amped", and trying to discharge. If I take the medication before 9:00 a.m., I don't have these issues.

Much of the initial experience of "appetite suppressant" now seems to have faded as well. I find I'm not fiend-ing for food, but the whole "work an entire day and get home and think to myself 'oh yeah, I forgot to eat today'...", that's not so much a problem any longer.

The interesting thing is that my wife and kids now know the days that I don't take the medications. There have been a few weekends where I've decided to not take it, and by Sunday afternoon, I'm being reminded of snappishness or drifting attention span. My wife has, a few times, asked me if there is any detriment to me taking them every day. When I said "no", she followed on with, "well, then please do so!" (LOL!)

The definite biggest change has been the change to my energy cycle. I feel a lot less inclined to wake up at 4:00 a.m. now, though I can if I need to work on something intense. I still do it once a week, but I'm OK with just doing it once a week right now. Standard wake-up at 6:00 a.m. feels very natural now. Most of the time, no alarm clock needed. In return, it feels as though I've gotten better with that "low ebb" I often felt between 10:00 a.m. and 2:00 p.m. Also, provided I have not taken the pills too late in the day, a bed time of 10:00 p.m. feels perfect. It makes me a lame date, to say the least, but again, I guess we can work around that.

I've been experimenting with a 25 minute time limit for many things lately. Not a true Pomodoro in the sense of 25 minutes on and 5 minutes off, but "you have 25 minutes. Can you accomplish this goal in that time?" My reasoning for this is that I want to make sure that I don't overly fixate or get too caught up in things that end up taking way more time than I intend to (my recent garage adventure is a perfect example; what should have been a two to three hour job, tops, turned into a 36 hour total time "engineering project". Granted, I had fun doing it, but I kept finding myself getting into the minutiae of how to do different things and make sure they were working right. Not that I'm complaining, I love the more useful garage, I just wished I could have done it sooner without so many "interesting" side trips.

Anxiety levels have dropped and for the most part, stayed down. I like that change, a lot. I hope it holds.

More to come, to be sure :).

Tuesday, January 8, 2013

The Bookshelf Runneth Over

Last weekend, Packt Publishing made me an offer I couldn't refuse. they offered any two or more e-books for $5 each. Needless to say, I succumbed, and decided to add to my already ridiculously overflowing digital library. What am I in the hole for now, you might ask?

Apache JMeter (because I want to get more into the basics of load and performance testing without having to invest in proprietary tools, figured this would be a good place to start)

JavaScript Unit Testing (since so many products use it, and since I want to better understand both the up-sides and the down-sides of understanding how developers actually code with and deal with testing JS)

Selenium 2 Testing Tools (I have the volume 1 version of this book, and worked through it in my Practicum a couple of years ago. I figured it would be fun to see where David has taken v.2 and the WebDriver integrations)

Metasploit Penetration Testing Cookbook (security testing is becoming more of an interest, and Metasploit is a tool I've read about and want to learn more about. I already have a guide book on the tool, so I figured having a cook book to work through might be fun).

These now get added to the 70 or so books that I have read, need to read, or already am reading. I used to joke that I used "The O'Reilly Mode" with most books, which meant I frequently read through chapter three of all of them, and then consult individual chapters as I feel like it. Since I started doing actual book reviews (and thus, have a need to actually read the entire book cover to cover) I am trying to break myself of that habit and read more of these all the way through. The problem, of course, is that, even if I could get through a book every week or two, it'll still take me about two years to get through all the titles in my queue. Time to get reading :).

Monday, January 7, 2013

I Don't Know That... and That's OK!!!

One of the things that, I think, terrifies many people is having to admit their own ignorance about something. I think this becomes especially more pronounced when we feel like we should now something. Often, we hem and haw, and we even bite our lips and keep silent, hoping that, somehow, we will stumble across an answer (or someone else will do the stumbling) and we will be able to glean the answer through their challenge and then we'll have it and seem smarter the next time around.

If you do this, stop it! Right now! Seriously! First, it's annoying. Second, there's a good chance the item you are ignorant about, others are as well, so you might actually learn something in the process.

An example from today... we were discussing something regarding URL encoding, and an example was given showing a URL and a string of characters in the URL. As we were discussing this, I felt somewhat weird, like I should understand what was happening. At first, I decided to play it cool, because I was sure someone would discuss it and I'd be filled in. That didn't happen. As we kept getting deeper and deeper into the examples I started to get more and more anxious... what did this represent? Finally, I couldn't take it anymore and I asked "so, what is the pattern being used here? Why does that pattern get us to this issue? I don't understand why it's formatted that way..." and trailed off expecting to be called an idiot or laughed at, or some other indignation.

Again, that didn't happen. As we discussed the issue, it turned out that none of us had ever seen an encoding like that. I inferred that, from the way it was being handled, it was trying to take us to a location that we shouldn't be able to go, but as to why that format was being used, I couldn't articulate it. This prompted a bunch of us to experiment a bit, and see what happened when we tried different combinations. Net result, we were able to better articulate what the API should be doing, and what it shouldn't, but we wouldn't have gotten there if I hadn't been wiling to admit my ignorance.

We always hear in Agile circles and elsewhere that, if you don't fail, you don't learn. That may be true. Academically, we may agree with it, but deep down, we really don't want to fail. We don't want to appear foolish. We don't want to admit our ignorance. It hurts our pride, and it can be embarrassing! On the other hand, if we don't admit it, we don't know who else won't admit it, either, so what the heck, take the initiative. Be willing to say "OK, I may be an idiot for saying this but..." You may just find out that you're not as big an idiot as you think you are. Of course, there is always the danger that you (or I) might very well be. 

I don't have a really good answer for that ;).

Sunday, January 6, 2013

Change the Map to Change Your Game

One of the things I spent a lot of focus on last year was trying to come to grips with the fact that many jobs, especially those we undertake ourselves, on our own, without any additional help, just take a lot of time to do. They take a lot of time to plan, to source materials, to prepare materials, to put them in place, to make harnesses necessary to actually implement them. Somehow, no matter how much or how well we prepare, these things take a lot of time, more so than we are often prepared to realize.

This point has been driven home to me over the past several days, since I decided that, once and for all, I was sick and tired of having to dig through all of my stuff and junk to find what I need in my garage. Like many people with houses and active families, the garage often becomes a dumping ground because, to put it simply, we just don't have the time or cycles to deal with whatever it is. This, of course, repeated multiple times over a year, makes the garage inaccessible, or at least a lot less accessible. We can't find what we need, so we put of what we need to do. We try to tidy up, but we just move things around. We go an buy something because we don't realize that we already have it, and it's buried under a pile of other stuff. And so on.

One of the things I decided to do was to see if I could change the map of what my garage was and is. What could I re-order and place in a more reasonable location? I can't speak for what is typical, but I can speak for what is common in my particular neighborhood and the housing designs that we all share. In my subdivision, almost all of the houses are a variation on three themes; two story Queen Anne, split level, or single level.

Most of these homes are built into a rectangular layout with a bump-out that extends along the front of the house. This is the garage, it's attached, and behind it is usually a courtyard that extends along the main wall of the house, and then opens up to the rest of the back yard. Most homes in my neighborhood sit on 5500 sq. ft. lots. Most homes have three bedrooms, two bathrooms, a couple of hallway closets, a living room, a dining area that's just off the living room, a kitchen, and a garage. The average house in our area is about 1300 sq. ft. Ours is a bit larger because we have an addition above our garage, which acts as a family room, an office and a half bath, plus a 4 foot stairway that leads upstairs. That four foot stairway, as you might guess, cuts off about 80 sq. feet of the back of the garage.  It also makes for a little room underneath it that's shaped like a triangle, which makes for some unusual challenges with storage.

I spell all of this out because, truthfully, many of our neighbors have moved most of their stuff into their garages. They have become stacks for shelves, for books, for storage, for everything that will not fit tidily into their houses. We were slowly turning into one of those kind of houses as well. This time, though, I decided that we had to do something to conquer the chaos, and rather than let frustration dictate what we could do, let's re-purpose the areas and see what we could do better and more effectively.

Below is what I refer to as the "after" stage of my new years clean-up.


This is the left side of the garage, some cabinets, some shelves and a space for trash and recycling containers so they don't get scavenged or knocked over by wind, etc. Bikes are stored by hanging.

Some additional cabinets, some higher up shelves, and a long curtain rod for  what we call "special use outfits" that are not used every day, but there's no practical place to put them.

Our back wall and the overhead storage that we use. Due to where the lights are and where the track for the garage door runs, there's not a lot of places we can use this approach.

The doorway into the house (our kitchen area) our heater, a utility sink, the washer and dryer, an some storage cabinets and open space above them (limited ability to put shelving because of pipes and conduit).

The final area, which is my workbench. Most of what you see on the wall is piping, fuse boxes drain pipes, gas lines, and other necessary stuff. It's also rather hard to move or work around.

This is by no means perfect, but it's a huge improvement over what was there before. This also includes a shift of sorts. The area where my work bench is now was what used to be a pile of random stuff. We never really made use of the space because we couldn't use the back wall to go vertical with anything. For years, it was just this area where things accumulated on the floor. putting shelving there would have been a pain, and then we would be covering important things, the drain pipe access, the main gas valve, our watering timer, our fuses, etc (note, I didn't design this, the house came this way when we bought it).

After giving some thought to it, I decided "well, if we can't realistically put shelves here, what could we do?" I decided to move the workbench to being just under the garage door on the right side. The difficult to deal with wall and all of its piping, wiring and access points was going to pose a challenge... until I realized that all of the stuff that was at issue was about three inches thick. what if I just attached some spacers along the wall, some 1x3 blocks of wood, screwed into joists where I had them, and wall anchored where I couldn't, put peg board over it, and instead of using shelving for everything, just made a classic "tool wall"? Ultimately that's what I did:

The now finished workbench area, with pegboard and tools and some  simple shelves for items that are light-weight.
This process of redesigning this area has taken me several days, and overcoming some weird space challenges. I'm sure an architect or a construction expert can find lots wrong with my approach, but as of now, it works, and it meets my needs, and it does something even more important, it lets me find the tings I need for the jobs I need to do. An added bonus, I think i used about every single tool I own in this process, so if I wondered if I really needed a particular set of tools, I now know exactly what I can both use effectively and, in some cases, what I can get away with. Years ago, I did away with a bunch of nice tools, but what I felt were low instance use items. The one "big tool" tool I would not part with, though, was my drill press. This project made it abundantly clear why I'm glad I kept it around :).

Sometimes our problems and challenges can seem a little overwhelming, and sometimes making changes to those problems takes some really dedicated and long term thinking. Focusing our energies isn't enough sometimes. Often, we need to change the entire map of our problem area. When we do that, we can discover solutions we might have otherwise never considered.

Saturday, January 5, 2013

A Call for Participation: Accessibility Testing Weekend Testing

On Saturday, January 12th, 2013, I will be hosting another Weekend Testing session from 10:00 a.m. to 12:00 p.m. Many of you familiar with this type of thing already know the drill. We pick an application, we structure a theme around it, and we go to town for two hours. It's usually fun, engaging, and a chance to share testing knowledge and skills. I enjoy being the facilitator for these events.

This time, I would like to do something a little different, and yes, I'm asking for help. Specifically, I would like to look at the challenges, approaches, and ideas around testing accessibility software. In the past few weeks, I have become more aware of this market and the needs of understanding the challenges that people face. I'm currently using two tools that are part of our testing (JAWS, which is a screen reader, and Dragon Naturally Speaking, which is a dictation/voice recognition package). These tools have one distinct drawback... they are expensive. They are also large downloads, and may be difficult to get for some participants.

Thus, I want to do something different this time. Rather than do a bug bash, I'd like to see if participants would be willing to share their experiences, their frustrations, and their successes working with accessibility software, share tools and tips, and be willing to talk about and share those experiences with their fellow testers. Oh, and quite possibly, the most rapt and attentive attendee will very likely be me! In short, I have a need, and a desire, to better understand this market and the issues that people face when using accessibility software. If you would like to help me learn more (and I'm willing to bet others out there would be as well), then please come and join us next Saturday.

This meeting will be held through Concert-Oh. Meeting links is:
http://www.concert-oh.com/web/meetingDetail/xbPOfvifO0AF9YBCTyUJ3A%3D%3D

Friday, January 4, 2013

Adaptive Testing: Type When I'm Talking To You

Today's post may seem a little strange. In fact, it might seem a bit stilted and possibly even mechanical. If that is the case, it is by design. This post, is being generated, 100%, by my voice. Look Ma, no hands!

As part of the process of performing adaptive testing, I am looking at as many options as are available (and those that are company can actually afford to purchase) to see exactly what it feels like to use adaptive software. What do I mean by adaptive software? I mean software that typically falls under the heading of "used by people with a disability". Screen readers for visually impaired users. Voice recognition software for those who, shall we say, do not have the full range of motion with their hands. Some might say "oh cool, you just have to talk and the system will record your voice. Simple!"

It may sound simple, but don't mistake simple for easy. It's not a full proof system.  Occasionally , letters get dropped, words get misspelled , strange spaces and formatting occur , and there is a fair amount of modification and tweaking necessary ( and for me to speak in my typically parenthetical approach , with my various asides and tangents , is murder to try to talk through and get it in a format that is even vaguely recognizable in my own voice).

One of the things that they don't tell you is that you have to state, specifically, what punctuation you are going to use. IT can handle contractions and such, but it doesn't automatically insert commas, quotation marks, parentheses, semicolons or periods. Also, different programs respond to different command. New Paragraph works in some applications, return or newline in others. At times, it loses the microphone connectivity, or it just refuses to turn on, and then I have to restart the application. Again, for me, this is a novelty, another approach to accessing a system. However, to get the full feel and import of what you are doing, set yourself up to actually use the application as though you couldn't access the system any other way. This is a lot tougher than it sounds. When you really have to use just your voice to type, it's a rather, shall we say, torturing experience. 

I've been learning a great deal about what makes this kind of software tick, and why it's needed in certain places... and how frustrating it can be when it just stops working (see, I'm typing now because, well, the app has decided to not want to cooperate any longer. It will probably be fixed with a system reboot. In any event, using tools like JAWS and Dragon are opening my eyes (no pun intended) to the challenges that people face when they try to use these tools. I'm sure with practice and familiarity, I'll get better, but really, for those who try to put up with these kind of products every day... my hat is of to you!!!

Thursday, January 3, 2013

The Ever-Growing Sticky Note

As I've been learning the ropes here at Socialtext, one of the the tools I use the most, and it may seem to be slightly silly, is the sticky note utility in the Applications folder on my MacBookPro. Why this particular options? I like it because it gives me a place to stash ideas quickly, order them quickly, and if I need to reboot my system or close out the app, I don't have to remind myself to save every single time. It does all that for me, because I can be stupid some times.

I typically use it to keep a little narrow strip column and keep it up in the corner at all times. Additionally, I use what I call "heat mapping" to make sure that things I need to focus on immediately catch my attention (red text, blue text, green text, bolding, etc.) so that I can look at the given areas. Are there other more sophisticated tools that can do similar things? Sure there are, but my goal is to try to find tools and methods that don't get in my way. Also, it's important to keep each "heat map" area small. Since we have an extensive document management system, often I need to condense these cheats into larger documents that others can use, and by the time I've gone through and massaged the cheats to a reliable knowledge state, then I can offload them into HOWTO guides and such for others to use and play with.

Sometimes we over-think our tools. We want so many neat bells and whistles, and often, they get in the way of what we really need to do. Often, the simplest approach that lets us accomplish our goals is far superior to the comprehensive but cumbersome tools that we often use. I thought it was a corny little tool at first, but I've grown to love its for its bare basic abilities and how I can create as many as I need. It's also a lot nicer than my old approach which was to actually put lots of post-it notes on my monitor (hey, it stood me in good stead for years ;) ).

Wednesday, January 2, 2013

Pay it Forward, or Pay Back With Interest

This phrase is the message that greets me every morning when I come into work. It's the headline of our Kanban board, and it's a very simple reminder. Things may take great up front effort, they may be frustrating, painful, and difficult to deal with, but they will invariably be less difficult and less painful than doing something expedient and deciding to "deal with it later".

I had this driven home to me over the course of the past week as I tackled my ever recurring "New Year's Day Project". It's been the same project every year for the past decade or so. On New Year's Day, the Christmas decorations get taken down, put back into storage, and then the process of cleaning out the garage to put everything back occurs. Every New Year's Day it's the same. I wake up, I clean, I sort, I throw away, I organize, I de-clutter, I de-junk, and somewhere around midnight, I crawl into bed with a clean garage and an orderly life... which proceeds to succumb to entropy within a few days, weeks, months, to the point where I have to do it all over again the following year.

This time, I tried something different. I decided to tackle the job early, as in day after Christmas early. Once I knew what we had, and what we were going to use and keep, I went medieval and decided to do my best to downsize as much as humanly possible. Go for broke, get rid of everything that did not have practical utility. Forget the keep/hold/toss cycle, go straight to toss. Do my best to hide the carnage from the wife and kids, because I know if they see what I am doing there will be much weeping, wailing and gnashing of teeth (and in full disclosure, I was caught a few nights ago by my daughter who, as she saw what i was sorting and cataloging for donations, yelled a hearty "Oh no you don't!!!" and rescued a few dozen items. I smiled and said I'd be willing to bet that half of what she rescued would be on the same chopping block next year at this time, but hey, peace at home is a valuable thing, so I'm not going to threaten it over a handful of dolls and toys that she has outgrown but doesn't want to admit just yet.

My point is, this was a heavy lift. It took  lot of time, it took a lot of resources, but it got done, and it made it so that, for the first time in years, I was finished with the garage before midnight, and in a state that might actually be maintainable. Part of the challenge was that, before, I kept shuffling things around, finding new places to put things in the hopes that I would actually use them. While I can't claim that I didn't do some of that this time, I certainly did a lot less of it. Having the time to think, to purge, and to figure out where they actually needed to go makes a world of difference.

So with this start of a New Year, may I suggest smaller steps towards goals rather than making huge jumps. You ultimately get more done, you don't spend as much time and/or energy, and you don't make decisions that will end up making you do even more work later on. Pay it forward, or pay it back, with interest. Needless to say, I'm thinking the former is a much better deal.

Tuesday, January 1, 2013

A Blog With a Life of its Own

One of the interesting facets of writing a blog is that, over time, you start to get a volume of work together that has many themes. Since this is my first post for 2013, I figured it would be fun to see what has caused my blog to become what it is over time, what this really represents, and what I actually do here with this blog that is, supposedly, dedicated to software testing.

The first thing I noticed is that the page views for my blog have been remarkably consistent on any given day. They often double when I actually make a post, but even during weeks when I only post once a week, the daily page views remain in the few hundreds each day. Granted, that's not setting the world on fire, but for a niche topic like software testing, that's still pretty cool.

What's really interesting is to see what people are looking at over the course of a given week, or a month, very often, I find posts I've written months ago getting more traction than things I've written more recently, and it often surprises me to see which posts "top ten" in any given week or month. It seems my recollection of events I've been at rate highly, such as my recollections from the POST Peer Conference in Calgary in March 2012. Just about any given week, I see this entry showing up in my top ten, and very often in the top three. My Live Blogs from various events also make their way into my top spots each week, sometimes months after the events have taken place. I think this stems from a wish for many to be a certain place, and when they can't be there, then perhaps my recollections make for a modest substitute. I can live with that.

For grins, I decided to see what areas I wrote about and which ones tend to be the most commonly used. Here's the top 10 tags that I use:
  1. life experience (312) 
  2. learning (295) 
  3. people (247) 
  4. career development (219) 
  5. software testing (209) 
  6. education (206) 
  7. skills development (196) 
  8. books (171) 
  9. goals (143) 
  10. collaboration (122)

By comparison, here's the top ten posts that, to date, you all think are the most interesting:
What does this tell me? In general, it looks like my roving reporter pieces, at least one book review, my reflecting on what I've learned over the past few years, a tool my friend Tim Coulter developed, and looking at a different way of thinking is what you value most about this site, at least by what has made the top ten in this slightly shorter than 1000 day period I've been running this experiment :).

To all my readers, regardless of what I might try to interpret out of the data that has been presented here, there's one thing for sure, and that is that you all are the ones driving it. Your input, your interest, your comments and your encouragement have helped make TESTHEAD into a living entity where, frankly, I'm not sure day to day what it's going to become. You, however, help me make those decisions, so thank you for helping me rear such an unruly toddler, and I'm looking forward to seeing what interesting things develop in the next year and years.