Engineering Management (link)

Great article(s) on some of the management principles in the engineering group at Facebook from Yishan Wong who was at Facebook through some very interesting growth times. I found reading this to be inspirational so posting for posterity...

I just quit my job....

Ha! No I didn't. But starting on the premise that I had and I had already saved a bunch of cash and decided to finally become my own boss, what would I do first?

For me this is hypothetical, but for my good friend who's about to make the leap out of full time employment to self employment it is very very real. And so I will live vicariously and imagine what I'd do.

The Goal:

  • build a business that can at a minimum support me before my year of savings has run out so that I can continue to build said business long enough affect real change and or make loads of cash 
My Challenges:
  • I have enough money to sustain myself for the year, or to invest and sustain myself for less
  • I love to program. I love to program, and specifically solve technical problems, so much that I focus on it to the detriment of other tasks. (like writing business plans, talking to users or bathing)
  • I have a set of real technical hurdles to clear in order to have anything of value
My Assets:
  • A good idea
  • Mad programming skills
  • Friends in medium places

(caveat that this is an hour's worth of dumping thoughts based on a few conversations and some latent thought) ;-)

My first steps: 
  • Set some very high level goals (these can change)
    • Month 1 initial Product Plan is ready (see below)
    • Month 1 website is up, domain is secured (even if a teaser)
    • Month 2 delivering live usable software with weekly updates for the remainder of the year
    • Month 3 gut check milestone - pull the plug or keep going?
    • Month 4 gut check milestone - go alone or go big? do I need more money?
    • Month 5 gut check milestone - pull the plug or keep going?
    • Month 6 target - engaged user community is built and driving the backlog (uservoice)
    • Month 6 target - marketing (adsense? viral? user communities?)
    • Month 8 target - earn my first dollar
    • Months 9  gut check - is this a venture someone would buy? should I start talking to those people?
    • months 10-11 - rinse and repeat, drive drive drive
    • Month 12 - profit! 
  • Make a workspace
    • Seclusion, powerful machine, dual monitors, natural lighting, huge whiteboard, music and snacks
    • block from this network
    • have a laptop available for games, surfing etc - try however possible to keep these separate
  • Make a development environment
  • Start building! 
  • For at least two days a week early on, or maybe a couple hours a day in the beginning besides building I would ALSO do the following....  (Product Plan)
    • Write myself a short Vision and Scope document which would include:
      • The elevator pitch, preferably in a single sentence which I would then post on a wall in my workspace
      • The high level guiding principles for the need I'm trying to solve, how I'll translate that into some revenue (not overly specific), who I'm targeting, who my competitors may be and what the biggest risks are. 
      • I would do this loosely, but I would do it. Just the act of looking and solidifying my direction would be motivating. 
    • Build a backlog of features, ideally written in the style of "As a <<user>> I want <<to do something>> so that <<some value>>" 
    • Make a persona or two or three based on the largest value user segments
    • Pick one persona who I can deliver something of value to
    • Prioritize my backlog with this user type in mind, and work backwards to find the minimum viable product that could actually be used by a user. This is my first milestone. 
    • Look for ways to accelerate getting to revenue sooner. 
    • Look around for ways to extend the 12 months without too much distraction (grants etc)
  • Network network network. A lot of my milestones might be easier with help. Socialize that I'm up to something even if I'm not giving away the secret sauce. 
  • Force myself to join some local developer user groups that align to my technology choices
    • force myself to attend some tech talks and socialize with other technologists
    • guarantee that at least some evenings are spent away from my work
  • Refer to my 12 month road-map on a weekly basis. (Monday morning when I'm slow)
    • Change it whenever
    • Where will I deploy? How will I deploy? I only have two months before it needs to be live in some form so figure that out. 
    • Will finding my initial target user be difficult? Start hunting early
    • What questions will I need to ask in order to answer my gut check milestones? Ask those early.
    • Are there components I should look to buy or rent rather than build? How do those align to my backlog?
    • How could I accelerate delivery of features? Can some things be outsourced? Should my backlog be altered to allow my investment decision in month four?
    • What else might I need to make a go big decision in month four? Do I need a more formal business plan? Do I need to incorporate?
  • Continue to build like mad!!
  • Profit!!  

welcome criticism, be open to review and invest in process

  1. External audit and review is important
    and can have value not easily measured
  2. Be open to investing in processes even
    if you think those processes are already
When someone asks you why you aren't better at what you do, how do you react? Is your impulse to defend yourself? Do you look for comparables? Do you start to question yourself or your team? Can you begin to break down what exists today and imagine it built up in a new form?

I work for people who are largely from a non-technical background. These same people are investing eight digit figures in our teams and products. Naturally they need to know that those dollars are being spent wisely, efficiently... maximized.

For myself, facing this question and having been so recently embedded in those same teams being questioned, I admit my impulse is to defend my compatriots. I have a lot of trust in the people I've been in the trenches with and to a lesser degree trust in the process we've put in place there (which is in a word scrum). This defensive impulse is well intentioned, but in my mind definitely the wrong place to start.  Of course I need to defend my peeps, but at the same time I need to be completely open to inspection, evaluation and change. (left brain fighting right brain)

The inspection and change is taking the form of the following:

  1. A few day audit by a high priced and well networked consultant with a ton of experience in software
  2. Scrum Training for our whole team
  3. A week long more technically focused audit and coaching session

I was reticent about any of these at first, concerned that we were wasting money on a problem that could be tracked down to an inability on my part to assure my employers of the quality of our group. Despite my internal struggle with the idea of subjecting my teams to external audit, and the spending, and the potential for fallout, I acted as best as I could to be open and welcome to the idea, knowing full well that anything else can be  suicide for the group. Before I understood the value in these exercises I already had a sense for the political dangers in what closing myself off to them would mean.

It's a few weeks later now and we've already largely completed numbers 1 and 2. I have to say I'm pretty happy about the value for the money and the impact on us. For 1, it has been somewhat shocking to see the informal chat like approach the contractor has taken with us but it really has been somewhat shallow. Honestly what are you going to learn in a couple days anyway? My guess is that it's all going to be about structure, alignment of views and ultimately focus for the company. Very high level stuff. Despite the shallow nature of the actual time spent with this guy though, there was a very focused frenzy of activity to prepare for what we thought the audit would look like. In particular the questions ahead of our interviews and requests for particular types of documentation had me seeing our knowledge and goal management in a completely new light. The todo's that I have as a result of preparing to be audited are immensely valuable. Another less tangible benefit was socializing the idea of the audit itself. I don't necessarily want us to feel complacent, and having someone external come look at you is a good way to fight that.

The biggest surprise for me has been the training however. And maybe we were just lucky, but the scrum training we had was fantastic and had so many positive side-effects that I didn't anticipate. Here are a few examples...

1. The value of common terminology. Simply having the same vocabulary does wonders for conversations around process and expectations. Not that we're 100% of the way there, but it really does make a huge difference in day to day conversations across our larger team and product management.
2. Bottom-up process improvement. The teams know best, and the learnings and suggestions coming from the people who are on the team are invaluable. The training really gave the team a collective voice to management that may have been lacking.
3. Hope/Change/Inspiration. Maybe these are separate points, but they are very related. Introspection and seeing the potential for positive change leads to hope which leads to inspiration. People were positively jacked coming out of the training sessions and very eager to put into action the incremental changes they discovered through the process.
4. Socializing.  The group had basically two uninterrupted days together to socialize and work together on something other than the daily grind. Everyone got a little closer as a result and had this common vision they could work towards on leaving. So hard to measure, but very important.

What's really amazing about the impact of the this is that the training was on a process we were already using. And in fact at the end of the day there was very little genuinely new learning. It was all small incremental change and having everyone look at the problems with fresh perspective and a critical eye.

I think for me this highlights what would be my biggest challenges in running a business which is an openness to spend money. It's true of my house (in which I've only invested the bare minimum) and it would be true of my company I fear. Dr. Deming had a critical phrase for an accounting centric decision making process that I always loved  "managing by the visible numbers only". As much as that resonated with me when I read his book a decade ago, I still catch myself getting caught up in the visible numbers and missing the value that comes from investments like this training and audit.

In any case, next time the external questions swirl around I'll definitely be a lot more open to what I may not know.