This is the story of the best piece of professional advice I ever got, and how it affected my career. I think it’s good advice, and I’ve never stopped thinking about it, so I thought it was time to share.
The Advice
It was 1996 and I was just starting work at my first job outside college. The company: Microsoft. The product: Windows 2000. The team was Base Test, and my boss was a guy named Terry Lahman, a lean mustachioed Dad-type who really cared about the product and his employees. I was nervous and green and didn’t have a clue what I was doing. Eager to please, I did everything Terry ever asked of me, as best as a new college grad could.
One day he came into my office, and this is what he said:
Eric, every now and then I’m going to come into your office and ask you, “What are you working on that I don’t know about?” You should always have something to tell me.
I remember being surprised, which is probably why it stuck. I thought he’d be upset if he found out I was “wasting” time on outside projects. But here he was, telling me to do just that.
The Results
After that, I started taking on little side projects. I learned fast. A dislike of Perl and a love of C++ led me to write a C++ regular expression engine called GRETA. It had little to do with my job, but that’s OK. Terry always took a keen interest in my projects, and they never interfered with my work. My passion for code grew.
As luck would have it, my little regex engine became popular within Microsoft, and several groups started using it. Around that time, the C++ world was abuzz with talk about TR1, a set of planned extensions to the standard library. They were looking for C++ regex engines, so I got involved in the C++ standardization effort (an involvement that continues to this day).
Through my interactions with the standardization committee, I met a lot of talented and smart people. I also came to hear about Boost, a collection of open source C++ libraries. Eventually, my path crossed that of Dave Abrahams, a co-founder of Boost, and he and I became friends. When I finally decided to leave Microsoft, Dave took me on as a sub-contractor at BoostPro Computing.
During this time, my involvement in Boost grew. No matter what I had going on work-wise, I always had side-projects, as if Terry might walk into my office at any time. I wrote a new regex engine called Boost.Xpressive. As part of that work, I wrote a library called Boost.Proto for building embedded domain-specific languages. People started using my code and wanting my help on their projects.
Now I work for myself. Clients find me through my open source contributions, which I always make time for. I have never forgotten that day Terry encouraged me in just the right way.
Be Passionate
To me, Terry’s advice is about initiative and passion. Don’t wait for someone to tell you what to do. Just do it. Experiment. Play. You’ll find your passion, and you’ll surprise and delight your boss, your clients, and yourself.
This is a beautiful advice.
An interesting point of view but I reckon it depends on the nature and atmosphere of each individual company one is working at. It may have worked at Microsoft but I don’t think my current employer would be particularly pleased to find me working on my personal projects during office hours.
Still, thanks a lot for that advice, I’ll try to keep that in mind. 🙂
I would same the same thing.
When I worked at a big consultancy (20k+ employees), my manager aimed for a Google like 20% time, sadly the workload was so varied (Support Developer) that some weeks it would be all side projects and then there would be months without any time to do anything on side projects.
One of my colleagues wrote an emulator for some obscure games console from the early 80s (might be late 70s) on company time.
Last three companies I’ve worked at (headcount ~ 1k-5k) I’ve been lucky if I get time to even do useful stuff like write automation stuff.
Apparently there is no time.
Pingback: Meeting C++ trip report. | KDAB
Very nice story. Sounds similar to what Google made famous with their 20% time projects. I wonder if this still holds in present-day Microsoft, as opposed to Microsoft of old.
Short and sweet, thanks a lot
That’s extremely lucky. Your boss was a forward thinking man and there are very few of those around. In fact most bosses will not even backtrack and change their decision when there is irrefutable proof that their initial decision was wrong.
Did he mean working-on something during or outside office hours? And does it have to be software related?
If he means outside office hours and software related, it’s potentially awful advice: people can burn out spending all their time writing code, many people have lots of responsibilities outside writing code and side-projects (if no-one has kids who’s going to pay your pension? Look at the problems South Korea are having), others may be great developers but want to strictly leave that behind when they leave work (and forcing them to work on side projects outside work will ruin their motivation. Maybe I’m interpreting him incorrectly though.
Afraid I’ve grown to despise the ‘passionate’ label, since it’s generally put on job requirements by managers who think their developers should be willing to work long hours for free.
He meant working during work hours. Terry is a smart guy and a good manager. He knew that giving me the freedom to take the initiative would give me a sense of ownership and empowerment and would make me more productive. And he also knows that he can’t think of everything that needs to be done, and putting the hearts and minds of his direct reports on the job is the best way to cover as many bases as possible.
I did become more productive, and I did make unexpected and worthwhile contributions. In addition, I made the rest of my team — and eventually other teams in Microsoft and beyond — more productive, while benefiting myself and my career.
Win, win, win.
Thank you very much for the clarification, that makes sense. A lot of people mis-interpreted it to mean outside of work hours (especially with the term ‘passionate’ being used in a lot of job descriptions to mean ‘willing to work for free’).
Eric, This was a different world. Microsoft used to be a great place to work. Programmers had very high status and managers listened to them. Bill Gates himself was a programmer. I’m afraid things have changed. The programmers got shafted. Managers started treating them like office furniture.
Your advice is correct, but it should be formulated as a demand: “I won’t work for you unless you acknowledge my creativity!”
Look at you: You prefer to work as a consultant rather than getting a cushy job at Microsoft, Facebook, or Amazon because you value your independence and creativity. As long as those companies are unable to provide an environment that fosters creativity, people like you and me won’t work for them.
True! I have it from folks on the inside that Microsoft is changing under the new leadership. Balmer was poisonous; Nadella seems to be shaking things up in a good way. Just ending stack ranking will have a lasting, positive effect on the culture, I think. Still, I don’t know how a boss with vision like Terry would fare at Microsoft these days. Back then, a guy like Terry could go pretty far.
I just can confirm, a great advice you received!
I got a similar through Scott Berkun’s keynote at the OOP 2011 in Munique. There he referenced the famous speech from 1948 by William McKnight, CEO of 3M:
As our business grows, it becomes increasingly necessary to delegate responsibility and to encourage men and women to exercise their initiative. This requires considerable tolerance. Those men and women, to whom we delegate authority and responsibility, if they are good people, are going to want to do their jobs in their own way. Mistakes will be made. But if a person is essentially right, the mistakes he or she makes are not as serious in the long run as the mistakes management will make if it undertakes to tell those in authority exactly how they must do their jobs. Management that is destructively critical when mistakes are made kills initiative. And it’s essential that we have many people with initiative if we are to continue to grow.
After the visit of that conference I talked with the CEO of our company and since then we have every 2nd Friday a so called “Crazy Friday” where everybody, who want’s, can spend time on what he or she thinks is useful. And we all gain from these results through our daily work.
Sounds like a pretty cool job environment. I am trying to encourage a similar initiative at my company and I have a few questions about the specifics:
Did you plan ahead time that you would spend on side projects, or was it more based on schedule availability? Either way, what percentage of your time would you say you spent on these side projects. Finally, did anything ever graduate to a multi-developer project, or were you always the sole developer on these free-time jobs?