Archive | January 2009

Working with kids

I don’t work with kids per se. I work where there are kids around me — actually, they’re my kids.

Working with kids isn’t much different than working in an office

The usual advice to entrepreneurs is to not to work at home, that you should find some type of office space or at least somewhere — the library, a coffee shop — where you can “go to work”. I think the premise is that working at an office is more efficient, especially if you have kids. Having worked at home for the past couple of years, I would actually say that it’s not that different from working in an office:

  • At work, you have interruptions: “Hey, Rino. I was wondering if you had some time to look over this presentation”
  • At home, you have interruptions: “Daddy! Look at what I drew!”
  • At work, you have conflict: “Hey, Rino. I’m blocked on my tasks because Rob has all of the systems booked.”
  • At home, you have conflict: “Dad! I can’t finish my tower because Taz stole all the blocks!”
  • At work, you give guidance: “Steve, I think if we sat down with Paul and cleared the air a little, we can really move forward as a team.”
  • At home, you give guidance: “Hey! Stop hitting your brother!”

Working with kids makes you stronger

My home office is a pleasant, sunny loft. My kids are technically supposed to stay downstairs and let me work. But they love to come visit. A lot. My wife tries to run interference but they are small and wicked fast. Darren Sproles has nothing on a three-year-old with a fresh-drawn picture. The biggest difference between the distractions you have at an office and the distractions you have at home, then, is their frequency. In an office, you may have several distractions an hour. At home, you may have several distractions a minute. Working under these conditions might feel impossible in the beginning, but in the end it makes you stronger. You’ll gain the ability to work where there’s a lot of noise. I think your mind also starts to work faster in order to compensate. I imagine it’s like the pool running athletes do for sprint training. I’m not even joking about this. I’ve found that when I go into an office to do consulting, everything seems to run in slow motion. I can do a month’s worth of work in a week because of my “working with kids” training. And we don’t even have a pool! 🙂

Working with kids is a privilege

At my last job, my commute wasn’t bad at all. It was a 10 minute drive. One day, I was thinking about how a 10 minute commute and a 2 hour commute compared in term the amount of time you could spend with your family. Factoring in the kids’ bedtime, a 10 minute commute worked out to having about 1 1/2 hours of family time per day. For a 2 hour commute, it worked out to be less than an hour of family time per day. If you add that up over a year, the difference is about 26 ten hour days. That means you’ll just plain miss out on a month of your family each year. If you compare this with working at home, it’s more like 3 months each year. Yikes! That’s a lot of time, especially when your kids are young.

I’m not saying that we should all aim to work from home (it’s definitely not right for everyone), but if you do find yourself doing it by choice or by circumstance, there are real benefits. I’m sure what I’ll remember most (in my kid-strengthened mind) from these years of bootstrapping is the time I was able to spend with my sons. As they say, no one ever wishes they could have had another day at the office — unless it was a home office, I guess. 🙂

How to get more sunny days in Portland

It’s sunnier in California

I grew up in the Bay Area. We had a lot of sunny days, the kind where if you played outside and then went back inside, you couldn’t see anything for a while. I think that’s too much sun. It’s not as bad as the Philippines where you can watch yourself darken and burn in real time, but sunny enough where you should go find some shade.

Summers in Portland are awesome. They easily beat California summers. I think the air is cleaner here. The sunlight is brighter, less hot, and more pure. If you ever drive up to Portland from California in the summertime, you can see this dramatically. Right at the Oregon border, the sky gets bluer, the light brighter, the air more clean. I kid you not.

Winters in Portland are another matter.

Forecast: Partly cloudy

It’s funny watching the 5-day forecast here in the winter. Typically, you’ll see a series of weather graphics for each day that (when they aren’t just solid rain) are all different but only in subtle ways. One looks partly cloudy, one mostly cloudy, one somewhat cloudy, one cloudy with some sun, one slight sun with clouds. When faced with months and months of this, it can get a little depressing.

You just need to look on the bright side

I believe I have found a way to get more sunny days in Portland. We just have to have to change our definition of what constitutes a sunny day. You may be thinking, “Oh, I know, he’ll say that if you see a shadow, then it’s a sunny day”. Nope. That definition is actually too weak. Even on a cloudy day, you can still see shadows (in fact if you can see anything at all, there must be light that you can block to make a shadow). Here’s a better definition, totally consistent with the usual notion:

It’s a sunny day if you can identify the position of the sun

That’s it. Pretty straightforward, yes? Here are some examples from the past week:

Saturday: Sunny

sunny.png

Sunday: Sunny

sunny-1.png

Monday: Sunny

sunny-2.png

Tuesday: Sunny

sunny-3.png

Wednesday: Sunny

sunny-4.png

Thursday: Not Sunny

not-sunny.png

Friday: Sunny or Not sunny?

Why don’t you give this one a try? (Answer after picture).

not-sunny2.png

If you guessed “sunny”, then I’m afraid you are incorrect. There is no sun in this picture.

See, by this definition, instead of no sunny days last week, we had 5! Not too bad for January… 🙂

Forever will it dominate your destiny…

Once you start down the dark path…

Becoming a manager for the first time is exciting — probably one of the most exciting moments of your career. For me, this happened 7 years ago (I remember because it coincided with my first son being born). I was happy, nervous, and scared. The sun seemed brighter. My shoes seemed to have springs. It was thrilling because now I could…um…now I could…uh…

Why do you want to be a manager?

Every few months, there’s an article on Slashdot about an engineer who’s just been promoted to manager and is asking advice on how to play this new role. People usually say things like “learn how to manage projects” or “stay out of the developers’ way” or “make sure your hair doesn’t get too pointy” (i.e., don’t confuse what you do with who you are). I think this advice is fine, but the best thing to do is to reflect on why you want this. Why do people want to be managers? Sometimes it is for the power. You have the power to affect people. You can tell your staff what to do, when it should be done, how it should be done. You can judge people, in fact, you are expected to judge people. Sometimes it is about the money (though if money is what you want, you should really go into Sales). Sometimes it is just about the next step in your career. I’m not sure I had a clear reason — I suppose it was a little of all of these things. Mostly I just wanted to try something new.

Why should you want to be a manager?

You’ll have some selfish reasons for wanting to manage and that’s fine, but you should have some more altruistic ones too. Early on, my “non-selfish” goal was to make my team the best in the company. I feel I achieved this and people across the company told me so. However, I eventually came to realize this was really just another selfish goal. I was essentially viewing my team as an extension of myself and was trying to outperform everyone else. While we had great internal cohesion and high morale, we were viewed as arrogant and unapproachable — and people across the company told me so 🙂

NCC-1701

The degree to which my approach had not been the right one crystallized for me when I read Peter Drucker’s article on being an effective executive. Your primary goal as a manager, he argues, shouldn’t be about yourself or your team or your boss or the board or even the shareholders; it should always be about “What is right for the enterprise“. To me this means promoting the long-term health and success of the organization. It means doing your part to ensure that the organization stays true to its purpose and its greater goal. Ultimately the success of the enterprise should, in some way, large or small, improve the world.

What’s right for the enterprise. You should want to be a manager because you think you have the skills and the vision to contribute to this long-term process. And this phrase should be your management mantra.

And, hey, it even feels better. After all, there’s no dark side in Star Trek 🙂

Debugging with the Scientific Method

One of the best techniques I’ve run across for debugging software is the Scientific Method.

The Scientific Method for Debugging

It’s actually pretty simple, but I’m always amazed at how quickly it can bring you to the root of a problem. Basically, it goes like this:

  1. Enumerate the evidence you’ve seen regarding the issue.
  2. Before changing any code, take a guess at what might be happening. It doesn’t have to be a good guess—it just has to be something you can test. This is called your hypothesis.
  3. Come up with a way to test your hypothesis. You want something that can give you a “yes” or “no”.
  4. If your hypothesis is correct, you’ve found the issue. Fix it and move on. If your hypothesis is incorrect, log this fact as the next piece of evidence and then come up with a new hypothesis based on all of the evidence, including this.

For a typical issue, it takes me 2 to 3 hypotheses to get to the root cause. For tougher issues (especially those that involve recursion or graphs), it takes me 5 to 7. In either case, it’s a great way to prune off areas to search. It is by far the most effective way of debugging that I’ve ever found. I’ve often noticed that issues typically requiring a day (or more) of debugging can be dispatched in an hour or so using this technique.

Modification using TDD

One powerful modification is using test-driven development with the Scientific Method. This is particularly useful when it takes many steps to duplicate the issue using the application. It’s even more useful when duplicating the issue requires you to delete and re-add data.

Here, the first step is to duplicate the issue in an automated test. This is the hard part, but the part that will save you the most time. Once you have this going, the tests of your hypotheses will be the same as your TDD tests. You add tests to check your hypotheses until you’ve proven your hypothesis correct. A bonus is that once you’re done, you’ll have some regression tests in place that actually exercise something that broke.

Believe it or not, it’s kind of fun to debug this way. You feel like a scientist wearing a white lab coat and jotting notes into a log book (I assume you think that’s fun 🙂 ). You set up experiments to see if you can trap bugs. They can be surprisingly evasive, but the scientific method always catches them in the end. Bwahahaha!

You are not what you do (for a paycheck)

Hi, I used to be a Software Manager at…

For months after I left my previous job to start a company, I introduced myself as a former Software Manager. This wasn’t who I was, it was just one of my old jobs. Looking back, it seems ridiculous. I was confusing who I was what what I did (not even what I was currently doing). I think most of us go through our careers this way. We are a SW Engineer Level 4 or a Manager Level 2 or a Director or a VP. The funny thing is that we don’t realize this conflation of identity and employment — we don’t even see it in others. I think one of the only ways to really become aware of this (pre-retirement, that is) is to do some self-funded bootstrapping.

Bootstrapping your identity

I’ve been bootstrapping for close to 2 years now. It’s been a creative time and one that’s encouraged a lot of reflection. At some point, “what I did” (or used to do) finally burned away from “who I was”. The ascetic lifestyle is purifying that way. 🙂 I hadn’t realized it, but about a third of my conscious mind had been wrapped up in the roles I used to play. When I got past this, not only did I have more brainpower, but I also had a clearer sense of who I was, what my priorities were, and what I needed to do.

Labels are limiting

I think a lot of people would benefit from a type of bootstrapping experience. I suspect many of us don’t know how we ended up in our current careers. At some point, we were probably labeled as future “doctors”, “lawyers”, “researchers”, “engineers”, or “businesspeople” and we let these labels limit what we did, what we thought about, and what we believed possible. We never fully explored our talents or our skills. We ended up doing what we thought we should do instead of what we were meant to do. We were so busy being what we were supposed to be, we never had a period where we reflected on who we really are.

What a wonderful world this could be

I’ve met people who should have been beat cops instead of lawyers, furniture craftsmen instead of board designers, park rangers instead of middle managers. How much better — and happier — a world it would be if we could all start from who we are and go from there, if we could apply our talents and do what we were born to do. Starting a company helps you do this. It gives you the opportunity to reset your career and refocus your activity, to figure out how to use your talent to improve yourself and the world.