Plant a tree

Dear new developer,

Here’s a great quote:

The best time to plant a tree is 20 years ago. The second best time is now.


I spent a little bit of time trying to track down the original source, but my google skills failed me. But no matter the source of the quote, it is worthwhile advice.

What does this mean to you? It means that you should start a long play now. That is, an activity which will pay dividends in the future, but does not right now.

What is an example of a long play?

I think one successful long play for me is my blog. I have been blogging since 2003 and it has helped me in a number of ways. Both directly, in being a “proof of work” for employers, and indirectly, by helping raise my profile in the community. But the benefits didn’t accrue in the first 6 months or the first year. It was the continual effort of writing, at least once a month, which delivered the value.

Another example of the long play is this blog itself. I wrote for months before I had any appreciable traffic.

Other possible long plays:

I didn’t realize how many of these long plays I’d written about (or folks had guest posted about) on this blog until I put the above list together. The long play has obviously been a long running theme.

The common thread is that all of these activities accrete value over time. Slowly at first. Oh so slowly!

Here’s the thing, though. The long play can be scary to commit to. It doesn’t have immediate financial returns, just like planting a tree today won’t give you shade tomorrow. You only see the benefits years or decades from now. That makes it tough to invest time, at least for me.

How do you know what kind of long play makes sense for you? The only way I know to learn this is to try different things. Sure, you can read about them and try the activity in your mind. But there’s a world of difference between, say, thinking about contributing to an open source project and actually doing so. When you try a long play activity, you can see whether you enjoy it enough to keep doing it.

A few other fun facts about long plays:

  • Committing to a long play doesn’t mean you can’t stop. You can stop if you want. Knowing this makes it easier to start.
  • Starting small is wise. Don’t expect to, say, submit a PR to rails or another high profile open source project as your first contribution. Finding a typo or expanding the documentation is much more realistic.
  • Different long plays require different levels of effort.
  • Long plays can pay dividends in the short term, but that’s a side benefit, not the main one.
  • You probably don’t have energy to have a day job, enjoy a personal life, and do a bunch of long plays. I’d start with one or maybe two.
  • Pick something you enjoy. An analogy: when starting a two sided marketplace like AirBnB, you run into a chicken and egg problem. No supply means no demand, and vice versa. So you need to kickstart one side, and one way is to have your marketplace provide value for one type of party. This is called “single player mode”. In the same way, a long play is going to be hard, so pick something that gives you personal value and enjoyment. Even if no one else benefits, you still do.
  • The level of effort you put into a long play will change over time. I wrote a blog post every day for 100 days once. I now write one blog post on my professional blog every month because I less available effort and time.
  • You don’t have to know exactly how a long play will turn out. You won’t, in fact. It can change over time as you get a clearer vision of your goals.

However, there are two things you must do for a long play.

You must commit. No activity is fun all the time. Sure, it was a rush to publish a book based on this blog, but there was a ton of dreary activities leading up to that event. I’ll tell you what, I even started and stopped the proposal a few times and needed a kick from my SO to submit it.

You must start. Just start. Pick something from the above list (or another kind of activity which resonates with you) and block out time to do it.

Plant that tree today. I guarantee you won’t regret it.



Think deeply about engineering management

Dear new developer,

This post from Charity about the choices you face as an engineer, and the challenges of technical management, is wonderful. As a new developer, you’re probably a few years away from thinking about that (but perhaps not. If you join a startup rocketship, it’s possible you’ll be managing people in months). But you have to manage your own career, and moving into management is one of the main career paths for a developer. (I’d say the others include: starting a business, becoming a senior developer, or becoming a consultant.)

Charity talks about how management is an entirely new skillset, and how being a technical leader plus a manager is a great way to get amazing things done. She also covers the negatives of “climbing the ladder” to ever more senior leadership. Charity doesn’t mince words:

Your job [as a newly minted technical manager] is to leverage that technical expertise to grow your engineers into great senior engineers and tech leads themselves.  Your job is not to hog the glory and squat on the hard problems yourself, it’s to empower and challenge and guide your team.  Don’t suck up all the oxygen: you’ll stunt the growth of your team.

I mean, there’s a reason we don’t lure good people managers away from Starbucks to run engineering teams. It’s the intersection and juxtaposition of skill sets that gives engineering managers such outsize impact.

One warning: Your company may be great, but it doesn’t exist for your benefit.  You and only you can decide what your needs are and advocate for them.  Remember that next time your boss tries to guilt you into staying on as manager because you’re so badly needed, when you can feel your skills getting rusty and your effectiveness dwindling.  You owe it to yourself to figure out what makes you happy and build a portfolio of experiences that liberate you to do what you love.  Don’t sacrifice your happiness at the altar of any company.  There are always other companies.

I don’t tell you this now, new developer, because I want to scare you away from management. I’m an engineering manager right now and it’s a wonderful place to be. You have autonomy, you can help fix problems you see in your organization, and you get to recruit and help grow people into the best developers that they can be. But just be aware that when you get to a certain level, it’s a one way path away from some of the most fun parts of software development–building things, solving hard technical problems, and being a doer.

Please read the whole post from Charity: Engineering Management: The Pendulum Or The Ladder