Thursday, March 05, 2015

Regression Testing - Testing Variability

When you need to test that a code change has made an improvement or, at least, didn't reduce the current level of performance, it is called regression testing. A level of statistical analysis is needed to ensure that perceived differences are not the result of random chance. The rigorous way to accomplish this is to use the Student's t-test to compare the results. The t-test can tell you the probability that a regression exists, but it doesn't tell you which regressions should be ignored and which must be pursued. However, provided the cost of running additional tests a cost-benefit analysis could tell you that.

Check out the Apache Commons Mathematics Library (TTest) for an implementation for Student's t-test.

Thursday, February 05, 2015

Get To It

"Our great business in life is not to see what lies dimly at a distance, but to do what lies clearly at hand." - Thomas Carlyle
My sister, Joyce, and I write letters back and forth. It is a bit of a tradition that we include a quote either in the letter or on the back of the envelope. The above quote is what I included with my most recent letter. I picked it because all to often at work it seems that we spend so much time worrying about what may come along in the future that we don't do what lies clearly at hand.


If that seems too short sighted to anyone then I implore you to remember the popular quote of Lao-tzu. "A journey of a thousand miles begins with a single step."

Sunday, January 11, 2015

Strive To Fix What You Can

I will admit to sometimes getting frustrated at work when someone doesn't want to work in a specific codebase because they think it has too many problems. George Bernard Shaw said, "If there were nothing wrong in the world, there wouldn't be anything for us to do." The systems that need the most work don't just validate the need for developers but are an opportunity to make major improvements.

I had a friend in grad school who went to work fixing and upgrading Cobol applications at a large financial company. Much of the software had no major maintenance in years. He loved it. He said that everywhere he looked he found things to improve that made him look like a rock star.

When you find yourself in that legacy application that is out-of-date and has little to no documentation. Strive to make it better and people will notice. You might even change people's perceptions of the application.

Tuesday, January 06, 2015

Quality is #1

A product with poor quality should not be tolerated. Delivering a product at the cost of quality should only be accepted in the short-term. If you are using Agile Methodologies, in the span of a sprint, it is acceptable to deliver what you have at the end of the sprint. This will allow for continued progress and enable the gathering of valuable feedback. However, it is political suicide to continue to deliver a product with poor quality. If there is a quality issue then change your roadmap and milestones to address the quality issue.

Wednesday, December 31, 2014

Brute Neighbors

One of my more cherished and private possessions is a book - American Prose. It was printed in 1892, and is filled with short stories by American authors. Every so often, usually in late fall or early winter I'll pick a story at random to read. Today was "Brute Neighbors" by Henry Thoreau.

I think it wonderful that a book over a hundred and twenty-two years old is perfectly functional and enjoyable to read. Though I do dread the day when the book becomes damaged from use and age; I think that I'll continue to read from it each year. It has more value to me as a book then a collector's item.

Tuesday, December 30, 2014

Not Even In The Same Ballpark

Not so long ago, a new Product Manager told me that she also is a programmer... a software engineer. She implied that if she wanted she could be part of the development team. She had just started and I had no reason not to believe her and accepted it as an interesting side note and went on. As time has gone by it has become increasingly apparent that this individual was never a software engineer in the way that my peers are. The comparison is almost offensive in the stark difference and extreme lack of understanding of what a software engineer does.

To anyone reading this:
Please do not say that you are part of someone else's group unless you truly know about that person's group. I've brewed beer and cider a handful of times. I've even had the lucky experience of brewing some stuff that is better than some store bought stuff. But I would never call myself a brewer in the presence of someone like Sam Calagione or Jamil Zainasheff. I've never brewed commercially and have no concept of the constraints involved, and I don't have near the same range of experiences. Notice the difference in tone the following two statements have:
  • I'm a brewer like you.
  • I've brewed at home.
If they both seem innocuous then here are some example responses, respectively:
  • Oh yeah, what bars are serving your beer?
    • Since I have never brewed commercially, I do not grok the need for high efficiency sparging, dealing with distribution laws, etc.
  • That's cool. What is your favorite style.
    • I love Bock beer. And Belgium style. And Kolsch. And Scotch ale. And, oh man, Southern Tier's Creme Brulee stout is just epic. But I mostly make cider because I'm decent at it.
Of course, those responses could go any number of ways but the point is that you can share that you have some shared experience without implying your of the same level. Especially, when you have no idea. Heck, you might be better but you just met so you have no idea.

In short, just be genuine. If you were hired to do a job, focus on that. Don't worry about trying to "fit in" with people in other roles.

Monday, December 22, 2014

How To Make Meetings Better

1.

Improve collaboration in meetings by removing the chairs from the conference room. Researchers at the Olin Business School at Washington University in St. Louis used body sensors on two groups of participants and found that team members who stood were more engaged, less territorial about their ideas, and generated more creative results.

http://news.wustl.edu/news/Pages/27031.aspx

2.

Start your longer meetings by giving everyone a chance to share what they need to do or to say to be fully attentive. One person might have a specific question. If they have more than one then they should have asked their set of questions beforehand. Another person might need to leave at a specific time. Yet another person might just want to vent about being in meetings all day. If the same person makes this complaint often then they might not be ready to be included in these meetings.

3.

Make more meetings more engaging by making them voluntary. I find it pretty satisfying if one of my meetings finishes and no one leaves. The meeting has developed a life of it's own.

Tuesday, December 16, 2014

How To Make Email Better

1.

Don't open an email unless you are prepared to deal with it right away. If you only open email when you have time to respond, archive, delete, or turn emails into tasks.

2.

Create a filter that searches for "unsubscribe" and put those emails in a separate folder. That way your newsletters and/or deal alerts don't get mixed with your work email.

Wednesday, December 10, 2014

How To Have A Successful Off-Site

Off-site meetings are a great way to break free from the tunnel vision that can develop in the workplace. They can inspire your team to think big and in creative, new directions. Off-sites can resonate for years.

Before

Set realistic goals. The senior person at the off-site should determine what the off-site is meant to accomplish then create an agenda that guides everyone toward that goal. To ensure that everyone can make an intelligent contribution you must make sure that everyone attending has the relevant data ahead of time.

During

Set ground rules. Consider setting specific times where phones and laptops are not allowed. Any topics that are raised that take away from the off-site goal should be written down - "parked" for later discussion. If questions are asked of your attendees then make them open-ended questions to encourage more participation.

After

End with a plan of action. One way of doing this is to assign a champion to each action item that comes out of the off-site. The champion doesn't have to do the work but they are responsible for getting the right people started on it.

Monday, December 08, 2014

Four Points For a Better Team

  1. Promote The Team
    • Teamwork is powerful. Reward it. Also, make the effort to stop selfish and egocentric behavior.
  2. Get Visual
    • Everyone understands a good image. Instead of a paragraph that starts with tl;dr make a graphic that captures the point.
  3. Tell The Company Story
    • A company story enables deeper understanding than a vision statement. This understanding will help your employees focus on the company mission.
  4. Be Present
    • Get out and mingle with your employees and coworkers. Your team is watching you so strike up conversations and inspire unity and foster some goodwill.