Apr 14

Less Than Perfect Is Failure?

Recently I was working with a Sales Representative who informed me of an incoming survey on which he needed to be rated as 5 out of 5 stars or it would be considered failure. After sharing this information, came a question that greatly irritates me. A question I’ve heard numerous times, worded slightly differently, but the same basic question none-the-less. “What can I do to get a 5 star rating?”

To start, I take great offense at the idea that an individual’s performance can only fall into two categories, perfection (or near perfection) or failure. In what world should we consider the best possible rating the only possible success? For me, a scale of 1 to 5 means a 3 should be fine. When I say fine, I mean I have no complaints; service was fast, courteous and effective. I would argue that probably 75% of interactions should be 3 stars. That’s not a bad thing, in some cases, 4 star type of service is actually getting in my way.

To get a 4, you’re going to have to do something extra, maybe spend extra time understanding my situation so you can make a really effective recommendation, but you better have the knowledge to back it up otherwise you’re better off sticking with fast, courteous and effective. Service that tries to be extra helpful without the knowledge to actually help is worse than not trying.

Getting a 5 out of 5? Now that’s exceptional, something really special. Getting that score from me is incredibly difficult to attain. You need to anticipate things I haven’t even considered. You have to catch me off guard with your attention to detail, your knowledge, your follow-up, etc. If you’re asking me what can be done to achieve a 5 star rating, you’re almost certainly not going to get one. That kind of rating should be reserved for rare cases of excellence. Even a highly capable individual shouldn’t expect to get 5 stars on a regular basis.

I apologize now to future individuals who are looking for 5 star ratings from me. I’m sorry that your company is shortsighted enough to believe that 5 stars is the only acceptable response. I’m sorry that I’m too principled about this to just give you 5 stars since that’s what’s supposed to happen.

Maybe eventually American culture will no longer stigmatize the idea of being “average”. When that day comes, I suspect we’ll finally see the end of grade inflation too.

Apr 14

Scaling Jenkins

Recently, I wrote about some of the complications I have working with automated tests on embedded devices. I also open-sourced my Flex NUnit AddIn that I developed to help solve some of these problems. In reality, that was a very small piece of a very big, rather complex testing puzzle I’ve been navigating.

The next challenge and piece of the puzzle I wanted to talk about today has been a stable continuous integration setup. I’ve done it with web development previously and honestly it was easy as pie. However, working with embedded devices and the sheer number of variances we build and test has made a maintainable solution incredibly elusive. Jenkins, our platform of choice and its fantastic library of plugins, has been great for the most part, we just have a lot of specific needs.

For us, distributed builds were a requirement; the previously mentioned variance and around 70 hours of daily tests just don’t allow us a lot of options in this regard. Jenkins makes it pretty easy, but for our circumstances, it just wasn’t easy enough. Managing the slaves was a manual process and our product and development involves so much change that managing Jenkins and the tests became almost a full-time job.

Continue reading →

Mar 14

My Experience With Brain Workouts

This week when the NY Times published an article about the murky science behind brain workouts I wasn’t surprised with the conclusions and, in fact, I generally agree. Though I do brain workouts, enjoy them and have encouraged friends to try it; I am not under the illusion that they are making me any smarter; mostly, I just think they’re fun.

I started my Lumosity subscription under a few basic tenets:

  1. I enjoy the games
  2. I like the challenge
  3. I actively try to keep myself mentally on edge

I do the Lumosity recommended workouts with fair regularity. I find it to be a nice way to start my day. I don’t particularly like waking up early in the morning, yet due to my bizarre sleeping habits I find myself awake and working on the typical day before 6 a.m. What that also means though is that I feel a bit foggy early on and I feel that playing a few rounds of some rather challenging but simple in scope games helps me mentally wake up.

Continue reading →

Feb 14

The Hard Way

I’ve been told to “work smarter not harder” many times in my life. For a long time, I accepted this as essentially correct and unquestionable, but in recent years I’ve come to see that it may not always be as clear cut as it seems. The core idiom is true, but the question I think is what does it mean to “work smarter”? Sometimes I think the answer is a bit counter-intuitive.

As a software engineer, I spend a lot of time retreading old ground. In the world of software, though the exact program you’re building may be new, the core problems you’re solving probably aren’t. Even when you think of some of the new challenges of the internet and the issues with scale and distribution; these are new-ish, but a lot of the base problems have been recognized and considered in computer science since its inception.

So, when a new situation comes up and I have identified a problem to solve. I have a few options:

  • Use an existing library
  • Find someone who has solved it and copy some code (a blog, stackoverflow, etc.)
  • Try to write it on my own

Continue reading →

Feb 14

Flex: an NUnit Addin

In my previous post, I explained why we needed an NUnit add-in and what we accomplished with it. After writing it all up, I realized that the code was all generally useful so I decided to open source it.

The add-in retains all of the functionality I discussed in my post and I added a couple of small features. For most people the most useful aspect is likely the automatic permutations with test cases, but for those of you who happen to need the ability to use TestCaseSource as well as a TestCase “Row” concept, the support is there. I hope this code is helpful and makes you just a bit more productive.

Flexible NUnit Test Case Attribute