Faster Timeline Could Mean Less Quality

I recently saw a post on LinkedIn and with it there was a communication between business and developers. The conversation went like this:

Business: “How long will the project take?”
Creator: “About 6 weeks”
Business: “We don’t have that time…I need it in TWO weeks”
Creator: “OK, we will do our best in that time”

And here is a cool video it was also referencing:

Truth is, as a software development team, we can accomplish almost anything in a short amount of time. So much of the timeline comes down to the desired quality of the product and functionality we are working on. If we release too early, we lose out on a lot of functionality and quality. But if we release too late, we could diminish the overall quality of the work we have completed.

As a QA Analyst, I find that I could continue testing new functionality over and over again, reaching deep into the scenarios that we have created, and possibly reporting more and more bugs as I test. The more time that I spend on new functionality, the more bugs I find, the more quality my team and I produce?

The Quality Bell Curve

This concept got me thinking about the possibility of a quality bell curve, where the project timeline matches the normal distribution of the curve. As the project begins to when the project is released are the two ends of the curve, and the middle describes the most advantageous quality enhancements our team could make.

For all intensive purposes, I understand that is not how the bell curve works, as with the curve, the middle is where you’d like to be, but I’m merely using this as a visual representation of a timeline from left to right. Although, it is possible that we could correlate the actual bell curve to the production of our products, where the middle area is the best quality, but maybe for another time. Back to the timeline approach.

bell-curve

If we interpret this as a timeline from left to right, then we can apply different moments in time to the appropriate areas of the curve. And remember, with bell curves, the left and right ends don’t ever actually touch the line, which we will call 0% quality.

Story time. We have a project timeline of six weeks from today when we’ll release to production, and we just sit down for the first meeting.

Let’s call the left most point the initial business meeting. This is where the idea begins and the initial conversation happens. The quality of the project begins to build, but at this point, fairly slowly. No work has begun on the project, but only plans for how to build out the idea.

Soon after, the UX designers have begun building out actual mocks (chicken scratch or high res) that assist in the meetings, and thus our quality of the project has increased, but not a lot yet, as there is no functionality built out.

Now we get the project into the hands of the development team, who, for example, is able to develop the entire project in two weeks time. The QA team and all other participants (usability testing, dba structuring, etc) has all had their active parts in the development process and the functionality is complete and tested. At this point, we would be near the top of the bell curve, if not standing on the peak. Everything is complete, tested and verified, and ready for production. However, the release is scheduled for another 3 weeks out. This is where the quality could begin to decrease.

As the time increases between new functionality being tested, and the release date, the quality has a chance to decrease. Perhaps it’s because the market shifts and the demands are no longer as high. Or maybe it is due to the decrease of knowledge and support for this functionality, so the release may come with some additional hiccups. Whatever the reason, I think it’s important to recognize the value of the project timeline and ensuring that we are able to release at the most valuable time.

Other Curves

I’ll keep this part brief. I was thinking of a bunch of different curves that could also describe the development process as a timeline.

The Learning Curve

The learning curve is another possible reflection of the development process timeline, where as the work has not started, there is no value or quality added. Once the project begins, a ton of quality and value is added very early on, but as time continues and you plateau, the increase of quality is difficult, as testing just becomes ensuring quality vs increasing quality.

learning-curve.png

The 45 “Curve”

Another possible example is when the work begins to when it’s released, there is a constant increase of quality and value added to the project. I don’t necessarily agree with this approach as often times there is slow points to the work and this does not account for those times.

45

The Story Line Curve

My last, and most colorful curve comes from elementary school, where as the story continues, the quality begins to grow. It hits that optimum time to release where quality is at an all time high, yet the release date is scheduled for a while out still, so quality can begin to diminish slightly. However, with this curve, there is a maximum decrease in quality over time, because it is still new functionality nonetheless.

I could be swayed to this one also, but the reason I lean on the bell curve is because the timeline of a project is not precise, in that the timeline could be years for a given project, and therefore quality will truly begin to sink for the new features. The story line curve doesn’t account for the extended timeline in it’s representation.

storyline

All Done

Well that’s it, curves as it relates to quality of product development. What could I possibly think of next?

Even Connect 4 has Feature Enhancements

The basic game of Connect 4 (hopefully I don’t need to explain the concept) has had the opportunity to release feature enhancements. When I was a young lad, I assumed Connect 4 was Connect 4, and there was no improving on the game itself, but maybe improvements on the construction and durability of the great wall of slots. I found out this weekend that I was wrong.

connect-4

When Connect 4 Satisfies the QA Analyst

I recently wrote about When Wrapping Satisfies the QA Analyst, but I’m discovering more and more activities that satisfy my daily analytical need for perfection. While playing the basic game against my five year old daughter, I got bored of winning, or rather, she got bored in general, so we began making cool designs. With every drop of a coin into a slot, I was either happy or bothered by the placement of said coin. Most were fine, I was able to simply drop the same color coin into the mirrored y-axis position, or I was required to remove the coin by sliding it up, holding with one finger, sliding it up, holding again with the other finger, and repeating until the coin was out. This led to some pretty creative designs by my daughter and me, some of which were entirely Picasso in nature. Those were the ones my daughter preferred.

Here’s the final picture of our work, the one she was most proud of designing.

C4 design

How Connect 4 Released a Feature Enhancement

Now back to the point of what I wanted to say. I was playing this basic game, when I looked at the box and saw that there were actually three ways to play our Connect 4 game. All these years I’ve only ever known the basic traditional game, yet somehow Milton Bradley was able to come up with additional versions of the game and apply them to the same basic board. Now I can play Original, PopOut, and Pop 10.

C4 3 ways

This is great strategy and one that we can practice in software development. Sometimes the additional workflow or enhancement to our products is only a few hours away, yet can provide a ton of enhanced functionality towards our software. This type of innovative work should be practiced and rewarded, as it opens up doors to new possibilities with such a low cost to the company.

 

But Wait, There’s More…

My Connect 4 mindset was truly flipped upside down when I was at a party on Sunday for my nephew, and they also had Connect 4. It was the same version that I had, same box design, everything, only their version had FIVE ways to play. Milton Bradley had done it again, spent very few innovative hours and released a ton of new product functionality. In addition to the Original, and the PopOut and Pop 10, I can now play Power Up and 5-in-a-Row. There was a small addition to the construction of the great wall, and bam, two additional games.

Connect 4 Five Ways to Play

With this type of innovation, it not only brings back a classic game from the 70’s, but also keeps it current and fun. When we apply this same style of enhancements to software, it keeps them current and up to date, as well as fun to come back to. These are basic rules to consider when discussing large updates or small enhancements, while weighing the cost value and user increase it could provide.

Becoming Crisis Proof

I get a new desk calendar every year that has a daily read/game/trivia, so this year for Christmas I got a Deadly Skills calendar. It basically lists ways to always be prepared for attacks, violent situations, and to increase the overall awareness and be on the offensive. It was interesting to me when I opened the box and read the page for January 1st, the similarities to my every day job as a QA tester.

deadlyskills1

Here is a picture of January 1st:

Skills

I could spend some time breaking this down line by line and comparing it to the roles of a QA analyst, but I’ll keep this one brief. Basically in my daily work, I have to be aware of the possibilities that could arise, be offensive in my testing strategies, create test plans and actively practice test plan management.

My favorite line above is

…comprised of situational awareness, personal and cultural awareness, active threat reduction techniques…

Is that not what we do as QA analysts every day? Constantly reminding ourselves of our user’s workflows so we can test sufficiently and be actively reducing threats users may encounter when they are in our products.

It is crazy to me how often the world around me presents itself as a QA opportunity or a moment to reflect on my role as a QA analyst.

Explaining Your QA Job to Others

The Christmas season is over and the new year has begun. I spent most of my holiday time at different family member’s homes celebrating Jesus Christ and His birth, while also enjoying delicious food and exchanging gifts. What a great time of the year.

But this also made me think about how I explain my job to other people. Fortunately this year I didn’t have to do too much, as most people know what I do now, but in years past, I have had to answer the questions to the inquiring individual, slightly adjusting the words with each explanation.

Explaining

The Interested Aunt

One of my favorites to explain what I do, is to a close family member who actually cares to learn something new about my life. They ask an initial question of where I work and what I do, and follow up with additional questions about my day to day and what I enjoy most.

My usual response to this type of person, prior to me recognizing their interest, is a basic response like “I’m a QA analyst at a software development company”. Sometimes I’ll increase the initial response to this person with, “I get to test the software that we make for our users”. These responses in combination with this character, lead to an enjoyable and engaging conversation of interest about my job.

The Obligatory In-Law

Such is Christmas that is brings together the extended family that you see but a few times a year. This brings on the obligatory ask, “what is it that you do?”

To this I respond the basic answer above, that I am a software tester at a company called Zywave. You’ll instantly recognize the character’s intent when they say something like “oh cool, that’s fun” or my favorite, when they respond with “Zywave, where’s that?” as if knowing the location of my company will clear up any confusion you may have about my daily duties or roles. I usually don’t follow up with any additional information, and attempt to seek out the next conversation at the Christmas party.

The Loving Wife

My wife is great, she genuinely cares about my happiness and desires me to be in a job that I love and come home from with a smile on my face, and can’t wait to talk about. She endures the painful detailed description of my days and weeks, and appears to truly take interest in what I do. She can also easily name 20 or more of my coworkers and could probably tell facts about each or a small story I have had to share with her.

To her, I have taken opportunity to explain all aspects of my job, and though I attempt not to share too much in each sitting, I can probably say that I’ve shared everything I do, and my wife could say she knows nearly exactly what I do for my job.

The Truly Curious Mom

Many people share a similar relationship with their mom or dad that I do, which is a really close one. My mom is really interested in my job and what I do, because she cares a lot about me and wants to know what I do. However, my parents may not necessarily grasp the entirety of my job, because most people can’t unless you work in the industry, so I share with them about my job and the testing of software that I do, sharing more about the industry of software that we design for, and how our products better our user’s day to day process. This character is a good one because they regularly take interest in the job throughout the year, so as the industry shifts and my job changes, I can update them on the newest trends and duties.

001

The Inquiring Friend

I have a very close-knit group of friends and we all know so much about each other, that we could probably pass some lie detectors for each other. But even though we share so much about our jobs and discuss day to day activities, I still take the time to discuss more about the perks of Zywave vs the actual rigor moral of my day. Not so much because it’s a competition, but that is something that every one of us have, company perks, and not everyone fully comprehends each other’s industry.

To this character we discuss things like PTO and benefits packages, office location and layout, as well as the onsite amenities like a ping-pong table and pool table, with a couple arcade games and Foosball, and we don’t forget to talk about the free soda. Again, the attempt is never to one up each other, but rather just to share the pleasures of our jobs, and ultimately congratulate each other for getting such great gigs (since most of us are doing what we love).

The Other Software Guy

Another favorite character of mine, because this is the one that shares a similar interest and ultimately understands the joys and stresses of being in the software industry. However, because of what they do and the fact that it is similar to what I do, sometimes the familiarity causes this type of conversation to be sharing of comparisons rather than an actual interesting conversation. Talking to another software guy does provide the opportunity to share horror stories, and sometimes that is very nice to hear that others also experience similar problems that I do.

Each character has their advantage and disadvantage, neither is necessarily the best or worst, but each provide different conversation which adds to the daily joys of my life.

Bug or Intended Functionality?

Today I was taking advantage of a deal to get free cheesecake as long as I used this newer restaurant order and delivery service. The delivery service was offering free delivery today, I’d assume to acquire new customers, and offering a piece of cheesecake from a local restaurant at the same time. However, there was one contingency. The order had to be placed today, December 6th, and the order had to be delivered/completed on December 6th. While that seems like an acceptable rule, there were some issues.

First thing to note, this site allows for future ordering as well, and then will place the order and deliver on a chosen future date. I’m not sure if I personally would ever use this feature, ordering my meal online today, but not wanting it for two or three days, but I am able to recognize the value for people that may want to get all the meal details figured out before hand, and then spend the remaining few days preparing their house for the guests.

Now that we know that information, when I went in to order my cheesecake, it presented me with the next available earliest delivery time, two days from today, around 11:30am. This wasn’t going to work, as I needed to close my deal today in order for it to be free. I searched for the ability to change delivery to today, but it did not appear to be an option, and finding the date/time selector was no where near my shopping cart. Additionally, I wasn’t even sure how to check out, because everything was disabled. I eventually found the time selector where it informed me that today’s times were already full, and I must select a time two days from now. At this point I figured out that I could select a time two days from now, and that I would just go to the checkout page and enter the code, to see if it would still work.

After choosing two days from now, around noon, the checkout button became enabled. On the checkout page, I entered the code, and the cost of the cheesecake came right off the total bill. There was also a Change button next to the Date/Time of delivery. I clicked that and was able to select today’s date for 12:30pm. Submitted the order, and sure enough, my cheesecake was delivered right on time.

Bug

So what’s the point of this story? Why do I write about my cheesecake experience today in an overall negative tone, while still expressing the positive outcome of the day?

Most of what I write is to train our minds to be more analytical, to think about our processes and workflows, and evaluate how it went, while possibly considering better ways to do it. With all the websites out there that have a workflow in order to get something done, it just means there are a lot of opportunities for improvement.

I don’t need to go into detail of each area of improvement I would recommend for this restaurant order and delivery site, because often times enhancement requests and user workflow is different for every person, and also because if you’re reading this, you can spend a moment thinking of how to better the experience. As a QA tester, we have an opportunity to speak up during the building process and ensure that the workflow is the best it can be for the user. It doesn’t mean we will always be heard, or that as a team we will build the best user workflow, but it’s important to recognize the value of the team, and how each person looks differently at the workflow.

The Importance of Clear Text

Took my wife out to dinner and while looking through the menu, we noticed a whole bunch of typos on the restaurant menu. I don’t recall seeing any spelling errors, but there were double commas, single and double spacing between ingredient listings, written out numbers like three but also condensed like 2, etc.

The Tech Writer

At Zywave, we have a technical writing department that ensures accuracy and consistency of on-screen text and our help materials. I actually began my career at Zywave as a tech writer and learned so much from the position. At times it may seem like a tedious job, or some outside the department may even have thoughts of its purpose, but I recognize the incredible value they provide. So often people can forget how important the consistency of text can be and the damage it could have on the users’ workflow if there are a lot of mistakes.

Last night I found myself searching the menu attempting to find yet another typo, that I wasn’t actually reading the menu searching for what I wanted to eat. I was so distracted that I had to continue the distraction further, and therefore not accomplish the task.

At one point, my wife said to me “restaurants should just hire us to proofread their menus”, to which I responded “they could bring us in, provide us a free meal, and we just analyze the menu throughout our meal”.

The restaurant we went to was not the first with menu mistakes. In fact, it may not be surprising to hear that nearly every restaurant we visit, we find a typo somewhere in the menu. Perhaps these menus are proofread before printing, but likely not by trained professionals that look for issues and correct them every day. Our human eyes are naturally drawn to mistakes, which is why we see it in human behavior before we recognize anything normal. This tendency easily distracts us from the workflow we’re in, so it’s important to have clear concise text.

Being a good QA tester is not just finding the bugs in functionality, it’s being a fully developed, well rounded analytical thinker who can evaluate all aspects of the product, including text and design, and ensure accuracy and consistency across the product. Training our minds to look for all these things can make us stand out in our work performance, while also having a positive impact on product output.

Next time you’re at a restaurant, see if you can find a mistake, I almost guarantee you will if you look hard enough. Also, here is a comic just for fun, not entirely related, but perhaps what some think the Tech Writer position is about.

Related image

Disclaimer: I have no tech writer review my writing, so it’s entirely ironic and accidental if there is a typo in the above piece.

Three SQL Server Management Tips

It’s funny how you can go so long without hearing a particular word, looking up a phrase, or asking someone how to do something, and then back to back, things all come up at once. This happened to me with SQL Server Management Studio. Three times over the last couple days, I was able to share a tip with someone to assist them in their day to day.

Removing a Server Name Connection String

Over time, it’s bound to happen, you have to update a connection string so that the database can continue to evolve. This can cause your Server name list to get bigger and full of useless disconnected servers. Here’s how to remove old names:

  1. Open SQL Server Management Studio > Click File > Connect Object Explorer…
  2. On the Connect to Server pop up > Click the Server name: drop down.
  3. Hover over the connection string that you want to remove and press DEL on your keyboard.
  4. Repeat for any desired names listed.

Color-coding Your Database Servers

This is an easy-to-find option to add to your connection server, yet most don’t know it exists. I find it useful to color-code my environment-specific databases so I know immediately where I am when querying.

SQL color

To do this:

  1. Open SQL Server Management Studio > Click File > Connect Object Explorer…
  2. On the Connect to Server pop up > Click the Server name: drop down and select the desired Server that you want to color.
  3. Click Options >>.
  4. Check the box near the bottom for Use custom color:
  5. Select your color and click Connect.

Multi-Line Highlighting

This nifty tip comes in handy for two reasons. Any time you want to add to or edit a bunch of lines at once, or, if you’re like me and need everything to look the same by updating all “Select” to “SELECT”. This also works in most coding tools like Visual Studio, Notepad++, and others.

MultiLine  >>  Selects

To do this:

  1. Hold down ALT.
  2. Click and hold where you want to begin dragging.
  3. Drag vertically and left or right.
  4. Type some characters and notice they type the same in every line.

You can also copy/paste vertically as well, which has proven very efficient if you need to copy code from one place to another.

The QA Benefit

So how does this relate to a tester other than being slightly particular about how our queries look? Learning these types of tips allows us to be more efficient getting more done in shorter amounts of time. It also assists when we see our developers manually typing the same thing over and over again in eight lines of code (actually happened). Lastly, if you’re a QA Engineer, this can be especially helpful if you need to change a bunch of lines of ASSERT statements at the same time.

There is no shortage of tips for different products, from hot keys to UI button placement. Perhaps there is a way to consider adding some tips into your daily testing to make you more efficient.

 

*One more for those who care. I always use CTRL+C > CTRL+V when your cursor is at the end of a line of code and you want to copy the entire line. It saves you time of having to highlight the entire row first. CTRL+D also works in Notepad++.