Benjamin Hysell – Software, Projects, and People Rotating Header Image

March, 2009:

Rubber Ducky Follow Up

Shortly after I wrote about my lack of a rubber ducky something strange happened…three rubber duckies showed up on my desk.  Naturally I gave them all good homes.

The first stayed on my desk at home…

Ducky Home

The second is living on my desk at work in a makeshift pond:

Ducky Office

The last is living in my car:

Ducky Car

Now no matter where I am I have a rubber ducky to talk things over with.

I want to thank my wife Vanessa for the rubber duckies, her continual support, and for taking the time to read my blog.

My Bookshelf Updated

I have had a busy writing night…

I have added a couple of new books to my bookshelf, one I finished a few weeks ago and one I’m still reading. I decided I was going to add these books even though they are not directly related to software, projects, or people. All work and no play will make Benjamin a very dull boy.

Check them out: http://benjaminhysell.com/my-bookshelf/

March Viewpoint eNewsletter

The latest Viewpoint Systems eNewsletter was published last week, check out part four of the TDD series – Mock Objects in LabVIEW:

http://www.viewpointusa.com/newsletter/2009%20March/newsletter_2009_Mar.php

Rubber Ducky

I never owned a rubber ducky growing up…

::Of course my mother may read this some day, smack me on the head, and say, “Of course you head a rubber ducky, his name was Sprinkles.  You played with him every time I gave you a bath…how dare you tell everyone you didn’t own a ducky!”  I swear, I have no recollection of said duck…but I digress::

I don’t believe I owned a rubber ducky growing up…however I read a post on Hacker News (http://news.ycombinator.com/) about Rubber Ducky Programming that made me want to go buy one.

After thinking about it for a few days, I wanted to write a post about it, but now I can’t find the original post.  I did find an article that had a very similar feel to the original, http://lists.ethernal.org/oldarchives/cantlug-0211/msg00174.html

Paraphrasing from the article:

  • Place a rubber ducky on your desk
  • Anytime you want to implement a new idea, talk it over with the rubber ducky and get his take on the new idea.  The key here is talk it over out loud; listen to your own voice as you talk to the rubber ducky.
  • If at any point in your explanation you find it difficult to explain your new idea, you can’t find the proper words to continue, or you lose yourself in your own explanation, pause, smile, and realize the rubber ducky has done his job.
  • Thank the rubber ducky for a job well done.  Take a minute to schedule an appointment to take the rubber ducky out for a beer next week.

I have found if I talk over a new idea out loud with a co-worker I discover holes in the idea that I haven’t thought about.  Once I have discovered those holes I will often change my thinking, re-evaluate, or drop my idea.

The only rub with talking new ideas over with a co-worker is if I went sprinting into a co-workers office with a new idea every ten minutes, I might find myself sprinting head first into a closed door when I have my next great idea.

But if I talked over those ideas with my rubber ducky, out loud, maybe I could cut down on my head injuries…maybe I’ll even find my co-worker’s doors open again.

Try it out, not just with programming challenges, but with decisions on what new car to buy, what laptop to shop for, or what video game to pick up next.  You may find yourself becoming better able to develop and articulate your ideas to your co-workers after you have tried them out on your rubber ducky.

Being a Good Team Member

So, you’ve made it through my technical interview, http://benjaminhysell.com/archive/2009/02/the-technical-interview/, you have accepted a position within my company, and even better you are going to be working for me.

I weep for you and your family.

The first six months are the worst.  It’s mostly the hazing, or maybe it is the occasional beatings that will make your time truly unpleasant.

No, no, it’s the hazing.  The hazing is much worst than the beatings.  The beatings are actually not so bad.

First, you’ll have to work on the last 286 computer we have in the office, on a 13-inch monochrome monitor…in MS-DOS 5.0.

Your days will be filled with pain and sorrow, and your nights consumed with thoughts about the next day.  Co-ops who have been working in the office longer than you will walk by and spit in your general direction.  The co-ops will hold rank over you since they have been with the company longer than you, even though you are a full time employee.

Or rather, your first day will be filled with filling out paper work, figuring out your way around the office, and finding the bathrooms.  We’ll get you setup with your new computer and get you familiar with our network policies.  The following six months will be filled with getting up to speed with your new projects, how we work, our techniques for managing people, and team building…the normal humdrum stuff you would expect with any other job.

Really, your first day could go either way.  Join the company on an odd day and co-ops spit on you for six months.  Join on an even day and you fill out paper work and start team building.

With either path, the method in which you conduct yourself for those first six months can have a lasting impact on your career trajectory.  People generate their first impressions about you on day one, however those first impressions take time to cure, and are rather malleable for the first six months.

What I have assembled here in this post are tips on how to conduct yourself with your new team as you work through your first set of technical problems and get familiar with your new line of work.

These tips are not necessarily technical in nature, rather, ideas that you can incorporate into your daily work life, whether you are just starting a new job, or have been with your company years.  I hope that you are already 1. Smart, 2. Gets things done, and 3. Passionate, otherwise you wouldn’t have made it through my interview.  It is my hope now with these tips you can show off these attributes to your co-workers and bosses.

I present to you my list on “How to be a Good Team Member”.

1. Ask, “What can I do to help?”

I’ve been involved in my share of crises, the system is down, the ship date is approaching, the building is on fire…in each one of these situations everything is usually under-control because leadership has taken over and is handling each crisis as it arises.

Or shit has just hit the fan and the system is down, the ship date has past, the building really is on fire, and nobody knows what to do.

When found in the later situations one of the most helpful questions you can ask whoever is in charge is, “What can I do to help?”

You might not be able to do anything, it maybe just that bad.  However if there is anything at all that you can take off the leadership’s plate it can free them up to focus on more pressing matters.

Plus, this simple phrase puts out in the open what hopefully what you were thinking internally.  It lets everyone around you know you are ready to step up and help with the current crisis with whatever knowledge you can bring to the table.

What about the situation where you know you can’t help, the current situation is so far out of your realm of expertise you have nothing to offer?  I say ask anyway, ask how you might be able to help.  You may not know the depth of the particular problems and maybe your skills can be of use.  Worst case, you really can’t help, but you offered and people will remember, “That last system downage was a killer, it was great Johnson offered to help even though it wasn’t his area of the system that was down.”

I’ve been involved in situations where we were rolling out a new system and all hell has broken loose.  Databases are down, routers are misbehaving, and just all around general dysfunction right before we were to officially turn the new system on.  In this crisis it was very helpful to have a team of people asking, “What can we do to help?” vs. a team of people who stood around in silence.  In this situation not everyone on the team could help, but hearing I had people to rely on to help if I found something they could do allowed me focus on the issues at hand.

2. Be willing to keep a sleeping bag in the office

Engineering and software in general doesn’t always work on a 9-5 schedule.  Often times big release dates loom where all hands need to be on deck to help knock out a couple of last minute bugs, or in a support situation something started to blow up at 3 p.m. and we need everyone to pitch-in and solve the issue.

Nothing kills team moral more than someone who isn’t willing to stick out these trouble times and help out.

Hopefully situations like this are very rare, however if you find yourself at a company where this is the operating norm, get out.  Stop reading this post and start on your letter of resignation.  Any company that operates in a continual crisis mode is not a company you want to be apart of.  Hopefully when crisis do arise they are infrequent, or well planned out in advance.

The best way you can contribute to a team is to say, and mean, “I’m not a huge fan of working late, however when push comes to shove I have my sleeping bag in my office.”

It states in an emergency you can be counted on.  This is just as important of asking in the same situation “What can I do to help?”  It shows you are a team player willing to work a little extra now for the team and willing to put in those extra hours to push something to the finish line.

Again, just as above you may never be called upon to fulfill this duty.  However, to a manager it is good to know there are good people that can be counted on in times of crisis.

In the past seven years I’ve asked people to stay late to help sort things out once during a rollout of a new website.  I was lucky to have a team willing to bring in a sleeping bag and ask what they could do to help.  Even though I did not need them to do so they all stepped up, and it was good to know if I had needed them they were there to pitch in.

3. Show you have tried to solve the problem the best you know how before asking for help

I hate sitting down with a developer who has asked for help with an issue and see immediately they haven’t tried to really work the problem before coming to get me.  I’m talking about the obvious attempts to troubleshoot an issue, things I would expect a new hire or a co-op to have picked up while working on a group project while still school.

I liken the situation to taking your car to the mechanic and stating, “My car won’t go anymore”, and having the mechanic turn the key in your car to tell you “Your gas tank is empty, put some gas in your car and it will move again.  That will be $59.95”

The only difference between me and the mechanic is I can’t charge $59.95.  Both of our time and energy have been wasted on an issue that should have been solved before going for help.

Now, if you didn’t know your car needed gas to move…that’s a different story.

I am all about teaching my team things I know…a team member who is willing to learn and expand their skills is a very valuable asset on my team.  However, if we sit down together and I show you something new I hope to see you try it out next time you run into a similar issue.

Did that new technique not quite sink in first time we went over it?  No worries, I am not an ogre…let’s try going over the new method again and explore where I may not have been as clear as I could have been.

I love situations where people ask for help.  They are opportunities for learning and career growth.  If, however, you show up with the same problem having not tried the newly acquired method, I’ll seriously question if you fit into the smart, gets things done, and passionate categories when it comes to your career.

4. Knowing when to ask for help

There is a fine line between asking for help too early, and waiting too long to ask for help.  Knowing your own limits and when to ask for help is a very valuable skill to possess.

Often times when a developer starts working on something they can become so focused they forget to come up for air, and fail to keep the team updated on their status.  Becoming extremely focused on a problem isn’t bad in of itself if you are making progress, but what about those times where you start spinning your wheels on an issue?  You keep trying and trying to work an issue and after four hours you are dizzy.  At this point you start over, maybe attempting to rework the problem with the same techniques you started with four hours ago.

Stop!

You’ve tried everything you know, its time to call in some reinforcements.

You have hit your limit, and by asking for help at this point you create an opportunity to learn something new and advance your skills.  Anyone you ask should be more than willing to help since you have certainly given the problem your best effort.

Failing to ask for help or failing to come up for air is wasteful in terms of time, energy, and the project timeline.  Maybe the problem you are trying to solve wasn’t fully understood by your manager when they assigned it to you, and now you have new information to share…by all means share that information and get clarity on the problem.  You and your manager may learn the problem isn’t worth solving anymore because of how complex it is.  This is a much better outcome than sitting and spinning your wheels for the next four hours as you try to rework the problem again.

These four simple tips will hopefully set you up for success when you start your new job, or help solidify your current job.  What tips have I missed that you would share with a new hire as they join your team?  What have you told young engineers as they have come out of school to join your project?  What have you learned the hard way that you wished someone had told you early in your career?  Share your thoughts in the comments below.

Very Strong Opinions, Very Weakly Held

You know, I wasn’t always in a management position at Viewpoint.

It’s true.

Shocking, but true.

I am, as I type, actually in charge of people, they report to me!  I am all-powerful over my minions!

::insert evil laugh here, maybe a thunderclap in the background…a few streaks of lightning…::

BOW BEFORE ME, MINIONS, AND DO MY BIDDING!

This style of management, the ‘cartoonish evil dictator’ works for very few companies and people.  I am not at one of those companies nor am I one of those people.

I fancy myself a leader…I’ve been captain of my fair share of hockey teams, editor of my high school newspaper…

::Although to be fair, to those who knew me back then, the newspaper was turned into my own personal opinion page where me and my ‘editorial board’ would rant and rave about the school.  It was my hypothesis no one was reading the paper when I took the reins.  I then theorized we could print almost anything and not get a rise out of the student body, and in the process have some fun by printing outrageous opinion pieces where we could practice our comedic chops.  In the end, we created a very interesting dialog between the different grade levels that was not only fun to write, but actually had people reading the paper again.  I digress…::

…and I’ve lead a few group projects in my time.  I’ve also coached college hockey for a few years, http://rso.cornell.edu/clubhockey/history.htm, so I’ve been in positions of power before, but before becoming a manager at Viewpoint I never held a position of power in a professional environment.

Through all of these positions I felt, subconsciously, I had worked out a ‘management style’, but consciously I don’t think I could explain it to myself.  As I moved into my new position I felt it was high time to figure out exactly how I had led and managed in the past, and figure out how to explain it to others.

One might ask, “Why bother explaining yourself?  Just get out there and manage like you have in the past…the people you manage will either get it or they won’t.”

I argue they might get it.  People, given enough time, might figure you out, and how you work.

But why make people go through all of that work?  Why would you want to make people ‘figure the riddle of you’ out?  Why not just tell people what you expect of them and how you are going to manage them?  Why not make it a day one ritual when someone joins your team to let him or her in on your expectations and your management style?

“Hey Johnson welcome to the team!  I’m going to expect X, Y, and Z from you and you can expect me to manage you using the ::blank:: technique.”

It took me a while to search back through my previous leadership and management positions to find a common thread of techniques that worked.  In my search I found all of the usual techniques, you know the techniques that one would find in any given management book…be a clear communicator, set expectations, yadda, yadda, yadda.  Basically, one will find quite a few common threads between a given set of management books since each one of these threads all work to differing degrees.

Check out the bookstore in the airport next time you fly, if you doubt me.  Airport bookstores have to have the single highest concentration of management books in the known universe, and they are all almost interchangeable.

It actually wasn’t until I read a post by Jeff Atwood (http://www.codinghorror.com/blog/archives/001124.html) that pointed to a post by Bob Sutton (http://bobsutton.typepad.com/my_weblog/2006/07/strong_opinions.html) where I was able to pull everything together for me:

I have very strong opinions that are very weakly held.

I am now able to tell people on day one when they join my team, “Johnson just so you know when we start working together I have very strong opinions that are very weakly held.”  During our day one introductions I can clear up many potential misunderstandings between Johnson and myself with this one statement.  I normally go onto explain as Bob Sutton does:

  1. I have found when you have a strong opinion people are willing to challenge you, do their research, and invest themselves into their counter position.  A weak opinion does not inspire anyone to bother…why bother putting in all that effort to fully form a counter argument if you can change someone’s mind with minimal work?  What if that minimal work doesn’t undercover the flaw in your own argument?  The opportunity for discourse back and forth is lost when you hold a weak opinion.
  2. I say my opinions are weakly held so that I may change my position when I am presented with a different point of view.  It also means I’m willing to listen to the other side, and I’m open to discourse about the opinion.  A strong opinion strongly held is just as bad as a week opinion, no one will bother challenging someone if they know at the end of the day no matter what they say nothing is going to change.

Take for example Rush Limbaugh…if you’ve flipped around the AM dial at all in the past few years I’m sure you’ve heard him one or two times.  I am not fan, I made up my mind about his radio show a while ago from the little bit of his show that I heard.  I decided it just wasn’t for me.  However, what I did hear was someone who had very strong opinions that were very strongly held.  If all of my opinions were counter to Rush’s, and I had all the time in the world to attempt to change his opinions I don’t think I could do it.  All the political discourse in the world with Rush would not change his mind on any one political topic.  In my opinion, I believe he is set in his ways, and any attempt to change his views would be a very difficult task.  Would you be up for it?

I know I’m not because my political views are very weakly held.  Yes, I have some political views, but I don’t hold them strongly enough to take on Rush and try to change his mind.

In this scenario, my weak opinions weakly held going up against someone who has very strong opinions very strongly held doesn’t provide much opportunity for discussion and explorations of any topics.  The discussion would likely go nowhere and accomplish nothing.

Now flip the tables, I have very strong opinions on why someone might buy a Mac laptop over a PC.  However, I also know that Macs do not fit everyone’s needs and I’m open to discussion on what may work for someone or even myself the next time I’m in the market for a new laptop.  I have a strong opinion, but I hold the opinion weakly enough that I could talk to someone about different possibilities, and I may even change my mind.

It is this ability to discuss an opinion and possibly change someone’s mind that fosters an environment of innovation, and a comfort level among colleagues where productive work can be accomplished.  This is the environment I set out to have within my team.

The results for my team and me have been good.  I feel we have very open working relationships where ideas are challenged and discussed knowing that all of the strong opinions are held weakly enough that someone’s mind could be changed.  Knowing that others are listening to you is a huge motivator to continue discussions and to come to consensus on any given topic, be it politics or designing software.

37signals

Next up in my digital reading list:

http://www.37signals.com/svn/

I’ll skip the normal, ‘Why you should be reading their blog’ and start with a couple of videos.  Why not let the guys who run the company tell you in their own words what they are up to?

::Plus have you ever tried to type with a band-aid on your index finger? I’m all over the keyboard tonight, and not in a good way::

http://www.businessinnovationfactory.com/iss/video/bif3-jason-fried

I’ll let Jason continue on with how he markets his company and his decision to out teach the competition:

http://www.businessinnovationfactory.com/iss/video/bif4-jason-fried

and lastly:

http://www.37signals.com/svn/posts/1329-my-talk-at-the-business-of-software-conference-september-2008

37signals has provided me a wealth of information on how one might manage, market, and sell software in the day an age when most companies are giving their software away for free.  How do they do it?

They are assholes.

I’m not the first person to associate 37signals with the term ‘assholes’.  I’m more of a ‘hop on the bandwagon’ type person with this association, but its true…for the most part these guys are assholes.

And it works for them.

They have very strong opinions on how to run a business and they are not afraid to tell you exactly what they are thinking.  The guys at 37signals will likely insult you and your life’s work if you work for a large corporation.  Are you not doing things the way they would prescribe?  They will likely call you a dummy, and then they will move right along without a care in the world.

This style, this arrogance, this ‘assholeness’ works for them.  They have created a strong following of people coming to them for insight and advice on how to manage, market, and sell software.

I have taken away several ideas from their blog over the past couple of years that has shaped how I would market, design products, and build software that I would like to share here:

1. It’s ok to swear in a presentation, given its done tastefully and not abused: http://www.37signals.com/svn/posts/1214-profanity-works

2. Out teach your competition, show that you are the thought leaders in your area of expertise.

This is my favorite message I keep hearing from 37signals, it is a very subtle yet very clever message.  For example, I need to paint my house this summer, the paint is beginning to peel, and it will turn very unsightly come mid August if I do not take action this spring.  I could certainly paint the house myself…there is an abundance of material online to show me the proper way to paint a house.  All the knowledge I would ever desire on the topic of house painting is available for free online.

Am I going to do it myself?

No.

Two reasons: painting my house is not my passion, and my wife does not want me up on a ladder for the better part of the spring attempting to paint the second floor.  To my first point, my passion, who wants to spend every weekend for month and nights after work painting?  I could do it and have done it in the past, and I learned that some things are better left to the experts.

With all the knowledge in the world on how to paint my house, I realize I am not in the best position to do it, and I will gladly pay someone to do the job in a week where it would likely take me three.

I believe this concept translates over to software and product design.  Sure, most competent developers could develop your software or product, but do they possess the passion to see the process through to the end?  Why not go out and buy the product instead of re-inventing the wheel, and in the process why not buy it from the ‘thought leader’ in the industry?

3.Create Fans

Jason states in one of his videos they have over 100k visitors to their blog on a daily basis.  These are people who are motivated to learn from 37signals and they seek out 37signals daily.  In all likelihood these are also the people willing to buy their software.  They’ve created people who are passionate about who they are, and what they sell.  37signals has likely turned peoples’ passion into sales.

4. Just say ‘No’

‘There are no software editors in an industry that desperately needs them…’  Pick a piece of software you are using right now…can you name all of its features?  Microsoft Excel has about 90 features I’m never ever going to use, ::have you tried to use pivot tables?:: yet there they are, all 90 of them taking up real-estate space, using resources, vying for my attention.  It’s not just Microsoft, I’m typing this post on a MacBook using ‘Pages’, Apple’s answer to Word.  Guess what?  Pages still too many features.  Apple has done a better job of hiding their features, yet they are still there, lurking, one mouse click away, ready to confuse and irritate you into having to learn or figure something else out when all I want to do is write a simple blog post.

37signals does more by doing less.  They say ‘No’ to most of their requests for new features or new ideas for their product.  They take a bold stance, ‘if you don’t like what we are doing there are several other software companies out there doing things like us, go try them out.’  37signals is telling people if you don’t agree with us check out our competition.  It seems perverse, sending customers to your competition, however this strategy allows 37signals to make very simple, easy to use products that are directed at people who believe in the way 37signals sees the world…products directed to their fans.

I’ll end this post with the best video I have seen out of 37signals:

http://www.37signals.com/svn/posts/981-the-secret-to-making-money-online

It’s simple, charge money.  Period.