Monday, June 15, 2015

Knowing When To Step Down

For the past four years I have had the joys & frustrations of working with an organization, as well as serving on its Board of Directors. That organization is the Association for Software Testing (AST). The positions I’ve served in for those four years include three years as the organization's treasurer, and this past year (so far) as its president. These years have been filled with successes and challenges, satisfying goals completed and frustrating loose ends still to be resolved.

In August, at the Conference for the Association for Software Testing (CAST), those candidates who wish to run, or who are up for re-election, will put their hats in the ring and make a case as to why they should be selected. Earlier this year, I anticipated I would be creating a post asking for your support. Instead, I am putting this post together to encourage others to run and get involved, as I will not be seeking a third term.

Why am I making this decision, and why am I talking about it now?

First, I want to give those who want to run for the board a chance to get their names out and be considered. Second, I want to discuss some of the things being involved with the board entails, and how you can be effective or hope to be effective. Third, I believe that becoming entrenched within an organization for too long can be a hindrance to moving forward, whether intentional or not.

Due to circumstances in both my work and personal life, and the time and attention needed in areas important to me (my family and my career), it is clear the time and attention I can provide to AST, in the role of a board member or executive officer, is no longer sufficient to be effective. To make the time to be effective, I will have to pull away from two critical areas. My kids are at a key point in transitioning from teenage years to adulthood. My work environment has changed due to the death of my director. I've stepped in to fill many of the roles he played. In short, the conditions that made it possible for me to be effective as a board member are not there now. To keep serving in this capacity would be a disservice to the organization. I want to make sure that the work I care about regarding AST can be accomplished. I still want to be part of that mission, but I have to be realistic as to what I can offer and do.

For the first three years of my involvement, I was the treasurer. That meant I had to make sure our financial house was in order. Making sure the money that came in and the money that went out was accounted for was my primary responsibility. Once you get a handle on it, you can do it reliably and have time to think about other things. During the years I was treasurer, we made great strides in breaking out where our money was going, and how to use that money effectively to help local and international initiatives. I still think the AST Grant Program is one of the best kept secrets of our organization. It’s there, but only a handful of people take advantage of it.

Three times a year, we gather together as an in-person group to discuss the business of AST. We have done our best to pick a central location to minimize traveling costs.  For the past four years, that has meant the U.S. midwest or east coast. One of those tri-annual board meetings also coincides with CAST. Anyone who runs will need to be cool with being able to travel for those meetings.

Getting seven people to agree to a decision can be daunting. While we can reach consensus on a number of areas, sometimes we just don’t have the bandwidth or the agreement to put those items into motion. We have been criticized for moving too slowly. The fact is, in some areas, we do move slowly. We are aware that we represent a large and diverse membership. No decision we make will please everyone. Still, we try our best to make choices and develop positions that will benefit the entire organization, rather than be of benefit to only a small number of members. Additionally, if we must make a choice, we will choose not do something if the alternative is to do something poorly.

Once a month, we get together for a monthly conference call to discuss business that needs to be moved forward, and making the time to have that call happen each month is important. Outside of these calls, and triannual in-person meetings, the work of the organization needs to get done and moved forward. Often, real life interferes with that happening.

If you are interpreting my words here as saying “those who wish to run need to have both vision and bandwidth to make sure things get done”, you have interpreted correctly. If you are reading this and thinking I am dissuading others from getting involved, that is the opposite of my intention. I encourage those who do want to run for the board to do so, and do it loudly! While there have been stressful moments, it’s also been fun, and I’ve been really excited about what we have been able to do. I think CAST is one of the best software testing conferences out there. The vision of AST and the members of the board and its various committees make it possible. I think that BBST is a very valuable series of classes. I’ve enjoyed being an instructor these past several years. Even though I will not be on the board after November, 2015, my involvement with BBST will continue. I intend to keep teaching, and aiming to help improve the process and delivery of that teaching.

My recommendation for those interested in running would be to look at something AST does, and demonstrate how you can help sustain and/or improve what we are doing. If AST is not doing something you think we should be doing, make a case as to why you feel you can make that possible, and how you can help make that happen. In the past, those who've been elected had a goal they wanted to see achieved, and they had the energy to see it through. If this fits you, I wholeheartedly encourage you to see our Election page, and make a bid to run for AST's Board of Directors.

I want to thank the AST membership for four memorable years. Thank you for giving me the opportunity to serve in this capacity. I’m leaving the board, but I am not leaving AST, nor will I stop focusing on initiatives I feel are important. I must adjust to current realities, and serving on the board is a commitment of time, talent and energy. There’s a great group of people already there, and we will need great talent going forward. You could be one of those people.

Saturday, June 6, 2015

Learning With Repetitive Action

Yesterday I posted about the idea of developing a "mise en place" system for the things that you do, and I also mentioned that this is something we can do with any number of tasks and goals. One of the things that I have always wanted to do, admired, but never seemed to get any closer to doing, was Native American beadwork. This, I know will probably come across as a strange subject, but it's something I've admired and wanted to learn about and practice for years. Like so many other things, though, the barrier to entry and to regular practice is real.

Below is a picture of what, on the surface, may look like a simple project. As far as bead working goes, this is relatively simple. This is also my "mise en place" for when I do this type of beadwork.



It's a "roach stick" or a "roach pin". For those who dance in Native American Pow Wows, the common head-dress is the "porcupine guard hair roach". These headdresses are held on by a lock of braided hair or through a base material that can be tied to the wearers head (me being bald, I opt for the latter). The roach pin is what is used to hold the headdress in place, either passing through the braid, or acting as an anchor for the shoestring used for tying. These pins are often beaded with rich colors and patterns.

The style of beading that this is is called "three drop gourd stitch". Unlike applique, loom or lane stitch techniques that allow you to string lots of beads together and put them down at one time, gourd stitch is done one bead at a time. This is because the beads are literally woven into a spiral net, and each pass of the thread goes through an adjacent bead to make the pattern. Because of this, you have to plan your design both stylistically and mathematically. To have a design that truly repeats around the piece, you need to make sure that your piece can have beads that wrap around it in a multiple of three, and even better, also in multiples of six. This allows pattern design to match up.

I use what is called "bead graphing", where I take a piece of paper, the bead spirals arranged in the pattern I wish to use (typically that means a clockwise pattern with the beads stacking in a right to left diagonal going up). On these papers, I make a design, and then I count the "circuits" needed to make the design, meaning the number of times around the object in a given row. As an example, this roach stick needs 24 beads to make a straight line around the project. Divided by three, that means I have eight beads in any given circuit. Divided by six, that means I have four regions I can create a repeating design. With these values, I can chart and decide what I want to make.



I'm working with seed beads, which in this case are 11/0 cuts. 11/0 is the size of the beads. Eleven strung beads will cover one inch. For every square inch, there will be 110 beads. Multiply by the total area of a project, even for small projects, that's a lot of beads. These beads can go as small as 18/0 (eighteen in series an inch long, or 324 beads per square inch.

The other tools needed for this are very thin but strong thread, thin needles, and clumps of beeswax to wax the thread (which helps it slip through the glass beads and not fray or, worse, break).

On a good day, if I'm in the groove, it takes me about an hour to do a single inch of beading. On days when things don't quite work out right, it may take me a lot longer to cover the same inch. Additionally, the pattern ideas and designs I work with now are fairly rudimentary. I stick to bands of color, zig-zags, or hexagons, but I would like to expand to do more unique shapes like feathers, flags, flowers and birds. The challenge, of course, is that I won't actually know how to do them until I sit down and painstakingly, bed by bead, actually construct them.

This is where many aspiring bead-workers falter, get frustrated, and stop altogether. I know, I've reached this point several times over the years. This pictured roach pin is the current largest piece I've ever made. I've planned to make four of them, each different, each using motifs that I want to get better at. If you look just behind my beading palette, you will see a flat fan with a white handle. After I finish the roach sticks, that will be my next project. I already know it will be huge. It may take me 40 hours plus to do it. What's been helpful is that I've gotten used to using the tools and thinking about the process, and actually losing myself in the process, and discovering ways that it can be done more quickly, more efficiently and more effectively.

I also allow myself the ability to let my mind dictate what I can and will do in a given day. Right now, it's a simple goal, one hour each day. Some days, I put in a lot more. Some days, I literally just practice a pattern and then cut the threads loose to try another approach. As I've talked to other bead workers, they've all commiserated with me and said that they have been there and understand. We tend to be in awe of those who can do these things effortlessly, who seem to be so much better than we are. In truth, they are better than we are, but not because they have unerring instincts or some super natural talent. Instead, it's because they have built a skill, honed over perhaps hundreds or thousands of hours of practice, often to meet needs they have, and frequently with false starts, frustrations, and cutting the whole thing apart to start again.

This is decidedly different than most of my posts, but the parallels to software testing are abundant. We can talk a mean game about the techniques and tools we use, and the ways in which we use them, but to become truly good at them, we need to put the time in, hone our craft, practice, get frustrated, throw in the towel and walk away, and then come back and start it all again. Can it be tedious? Sure. Is it always fun. Not remotely! Will we get better if we persist? Very likely. Will we wow people right out of the gate? Again, most likely not, but that's beside the point. The best we can do is to work and practice and make things that help us. As we get better at that, others will possibly notice our work, too, and over time, consider us the experts. In their minds, we may well be, but we'll know the truth, won't we ;)?

Friday, June 5, 2015

The Value of Mise en Place

I have to give credit to this idea to a number of sources, as they have all come together in the past few days and weeks to stand as a reminder of something that I think we all do, but don't realize it, and actually utilizing the power of this idea can be profound.

First off, what in the world is "mise en place"? It's a term that comes rom the culinary world. Mise en place is French for "putting in place", or to set up for work. Professional chef's use this approach to organize the ingredients they will use during a regular workday or shift. I have a friend who has trained many years and has turned into an amazing chef, and I've witnessed him doing this. He's a whirlwind of motion, but that motion is very close quartered. You might think that he is chaotic or frantic, but if you really pay attention, his movements are actually quite sparse, and all that he needs is right where he needs them, when he needs them. I asked him if this was something that came naturally to him, and he said "not on your life! It's taken me years to get this down, but because I do it every day, and because I do my best to stay in it every day, it helps me tremendously."

The second example of mise en place I witness on a regular basis is with my daughter and her art skills. She has spent the better part of the past four years dedicating several hours each day drawing, often late into the evening. She has a sprawling setup that, again, looks chaotic and messy on the surface. If you were to sit down with her, though, and see what she actually does, she gathers the tools she needs, and from the time she puts herself into "go" mode, up to the point where she either completes her project or chooses to take a break, it seems as though she barely moves. She's gotten her system down so well that I honestly could not, from her body language, tell you what she is doing. I've told her I'd really love to record her at 10x speed just to see if I can comprehend how she puts together her work. For her, it's automatic, but it's automatic because she has spent close to half a decade polishing her skills.

Lately, I've been practicing the art of Native American beading, specifically items that use gourd stitch (a method of wrapping cylindrical items with beads and a net of thread passing through them). This is one of those processes that, try as hard as I might, I can't cram or speed up the process. Not without putting in time and practice. Experienced bead workers are much faster than I am, but that's OK. The process teaches me patience. It's "medicine" in the Native American tradition, that of a rhythmic task done over and over, in some cases tens of thousands of times for a large enough item. Through this process , I too am discovering how to set up my environment to allow me a minimum of movement, an efficiency of motion, and the option to let my mind wander and think. In the process, I wring out fresh efficiencies, make new discoveries, and get that much better and faster each day I practice.

As a software tester, I know the value of practice, but sometimes I lose sight of the tools that I should have at my beck and call. While testing should be free and unencumbered, there is no question that there are a few tools that can be immensely valuable. As such, I've realized that I also have a small collection of mise en place items that I use regularly. What are they?

- My Test Heuristics Cheat Sheet Coffee Cup (just a glance and an idea can be formed)
- A mindmap of James Bach's Heuristic Test Strategy Model I made a few years ago
- A handful of rapid access browser tools (Firebug, FireEyes, WAVE, Color Contrast Analyzer)
- A nicely appointed command line environment (screen, tmux, vim extensions, etc.)
- The Pomodairo app (used to keep me in the zone for a set period of time, but I can control just how much)
- My graduated notes system (Stickies, Notes, Socialtext, Blog) that allows me to really see what items I learn will really stand the test of time.

I haven't included coding or testing tools, but if you catch me on a given day, those will include some kind of Selenium environment, either my companies or my own sandboxes to get used to using other bindings), JMeter, Metasploit, Kali Linux, and a few other items I'll play around with and, as time goes on, aim to add to my full time mise en place.

A suggestion that I've found very helpful is attributed to Avdi Grim (who may have borrowed it from someone else, but he's the one I heard say it). There comes a time when you realize that there is far too much out there to learn proficiently and effectively to be good at everything. By necessity, we have to pick and choose, and our actions set all that in motion. We get good at what we put our time into, and sifting through the goals that are nice, the goals that are important, and the goals that are essential is necessary work. Determining the tools that will help us get there is also necessary. It's better to be good at a handful of things we use often than to spend large amounts of time learning esoteric things we will use very rarely. Of course, growth comes from stretching into areas we don't know, but finding the core areas that are essential, and working hard to get good in those areas, whatever they may be, makes the journey much more pleasant, if not truly any easier.

The Early Bird Pricing for #CAST2015 Ends TODAY!



I know that there may be some last minute folks out there, and I want to assure you all that it would be well worth your time to sign up TODAY for the Early Bird Discount for  CAST 2015. After midnight tonight, the prices go up considerably.

I should also mention that our Monday Tutorials are selling out quickly. Rob Sabourin's tutorial is sold out, Christin Wiedemann's tutorial [Update: is now also sold out], and we have two more tutorials with seats that will likely go fast. If you want in, act now :)!

Now look, I know what a lot of you are thinking... "of course he's yelling about CAST 2015. Since he's AST's president, it's his event!" In a way, you are right, but that doesn't even come close to telling the whole story. We are offering what I think is an amazing program, full of cool tutorials (on Monday) as well as excellent Track Talks and Workshops on Tuesday and Wednesday. I'm proud of the lineup, but I had absolutely zero hand in the selection process. I deliberately stayed out of those discussions, and encouraged the Conference and Program Committee to put together the most awesome program possible. From what I can see, I think they succeeded.

We have also partnered with Speak Easy to encourage more first time speakers to speak at CAST. This is something I take great pride in seeing at CAST each year, the diversity of speakers, not just of physical attributes, but of experiences, skills and opportunities that you are not likely to hear at other conferences. Bold statement? Sure. Do I stand behind it? Absolutely.

But hey, why take my word for it? Why not take a look at our program and see for yourself. If you like what you see, you still have, by my reckoning, about 12 hours to still get in at the discount price. Don't miss what (if I have anything to say about it) will certainly be the best conference you will attend this year. Also, if this fires you up, will you help me spread the word? Please share this post with any and all who may benefit to see it.

Here's to early August and a great conference. Lock those savings in while you still can :).

Thursday, June 4, 2015

Wanna' Come Work with Me? Socialtext is Hiring!

If you are in the Palo Alto, California area, or know someone that is, and you think you meet the criteria of what's listed below, Socialtext is hiring, and I would love to talk to you.

A few things to get out of the way first:

1. This is a local position, meaning you have to be at least local to the Bay Area, and able to come into the office on a regular basis (working from home a day or two a week is not a big deal, but remote workers are not being considered at this time. I will certainly update this if that stance changes).

2. I often rail about software testing jobs being advertised, but toolsmiths are what is desired. In this case, while programming ability is an absolutely nice thing to have, and we are certainly looking for some help to beef up our automation capabilities, it is not a show-stopper if you are not a master programmer for this position. This is a job that really requires a software tester's mindset.


Job Details

Title: Senior Quality Engineer
Location: Palo Alto, CA
Position Type: Full-Time Regular
Experience: 5 years (or thereabouts)
Education: Bachelors Degree
Travel Required: No


Job Description 

Working on PeopleFluent's Socialtext, you will solve challenging problems in the social and collaborative software space. You will work closely with development and product management in an Agile development shop. You are as comfortable helping to define functional requirements as you are ensuring that they are met. You typically translate two or three functional requirements into automated tests before breakfast. You love helping teammates solve both the hard and easy problems and are happy to pair when needed. You know your way around localization testing. 508 does not faze you. X-browser testing is good for your soul. You come at stories sideways, it's how you think: hit them where they are weak. You care about customers and take bugs that make it out into the wild personally. You keep an eye on new testing techniques and technologies and know when to adapt them and when to keep with the current process and can defend your position. You abhor run on sentences. You don't believe in walls between QA and Dev, but you do have a little us versus them in you. You like working in a small team where your voice matters and not everything is planned out. You are one of us.

(Yes, I had a hand in writing this ;) ).

Job Requirements 

*5+ years experience with quality assurance testing
* Good understanding of the QA and Automation process.
* Proficient at writing, executing and validating test cases and the ability to pass that knowledge to other, more junior, team members.
* Proficient at writing clear and concise defects and the ability to pass that knowledge to other, more junior, team members.
* Able to accurately estimate task duration and meet schedules.
* Excellent communication skills.
* Experience testing Web based products across browsers is required, including what makes IE unique
* Knowledge of automation (Selenium)
* Experience with Linux.
* Ability to provide leadership in product testing, including setting testing direction for a particular project and the mentoring and leading of less senior Quality Engineers
* Ability to function and lead in a team environment


In short, if you think this fits you, or you know someone you think fits this description, please contact me directly, as we have a much better chance of placing people we directly refer than those who submit cold. I think we're a pretty cool group at Socialtext. If you'd like to join us, let me know :).