Why I <3 Being A Bootcamp Mentor

January 7, 2010

Most mentors serve 2 rounds of duty before moving on. I think I’m on my 5th round now.

It’s so enjoyable helping someone that really wants to be helped. I’m always happy if I can leverage 5 minutes of my time to save a bootcamper several hours of frustration.

Fielding n00bs’ questions, working with them on their tasks, and coordinating with them to choose a team keeps me up to date on what’s changing across the org and what challenges other teams are tackling.

Dealing with bootcampers inspires me to reflect on facebook as on organization as well as on my own contributions. I always find that I gain clarity over an issue when forced to explain it to others. Repeatedly introducing n00bs to our company and fielding their myriad questions often provides surprising and unexpected personal insight. The exercise of trying to evaluate the strengths and weaknesses of a n00b and their performance also helps me examine my own strengths and weaknesses and how my actions may be perceived by others.

I also love how many more engineers I manage to meet. When they move on to other teams it’s invaluable to maintain those connections so I can communicate across silos. When I do it right I cultivate reciprocal good will from my bootcampers, and having the right working relationships with future experts across the code base is incredibly useful in a company that moves as fast as ours and leaves very little documentation in its wake.

I notice that oftentimes when eating lunch or dinner my current/former bootcampers will feel free to come and join me and I love that I’ve established that level of ongoing familiarity and friendship with so many additional fellow coworkers.

As someone who loves Facebook, I, of course, want more ownership and control over steering our product, codebase, and culture in the “right” direction (as I see it). Bootcamp empowers me to give a lot of the “first impressions” about facebook and how we operate and I enjoy working on the nuance of that opportunity and refining my message so that our engineers leave bootcamp thrilled and energized to be working here.

Finally, bootcamp has given me a greater glimpse into some of the motivations, priorities, and concerns of management which, as an employee, is highly interesting, at the very least.

Just a Means to an End?

September 25, 2009

Joel Spolsky’s latest article inspired this post.

When I was a kid I used to love logic puzzles.  They were so much fun.  They demanded a flash of insight coupled with really sharp thinking.

Discovering programming was like a eureka moment.  It was this amazing mix of design decisions and clever logic.  In my first few years of programming I toyed around with TurtleLogo simulations and I simulated a Bee Swarm in OpenGL (I was really into distributed automata).  I wrote code that would find the square and cube root of numbers to an infinite precision using the old school manual method that nobody even learns anymore.  I studied GADDAG and wrote a super fast Scrabble Solver that just took the board state and your letters as XML input.

At the end of my Freshman year in College I interviewed for an Internship at IBM (which I didn’t get).  The cover page on my resume said:

I’m going to feverishly program, whether someone pays me to do it or not.

I never got into programming because someone told me it might be a good career move.  My main career goal has basically been to trick someone into paying me to write the same fun code I’d otherwise write for free.  The Manifesto of the Futurist Programmer resonated with me when it said

we judge unjust, criminal in fact, the habitual disdain for programs whose construction is different, new, throbbing with life.

I can imagine a different path to programming.  I can imagine a person sitting at their screen wishing their software was more useful and empowering, and then deciding to learn to code so that they can build software to fulfill their needs.  This was DEFINITELY not how I got into programming.

It’s great making a product people use and love, but making things for others is not, fundamentally, why I got into programming.  For the business manager, code is just a Means to an End.  But for me, code is a reward in and of itself.  It seems very chic nowadays to deride design patterns and rewrites.   I want my code to sparkle with brilliance and not just chug by like an old diesel engine…am I the only one?

If a musician creates “poppy” music simply to get more listeners, appease publishers, and make more money, then people will call them a Sell Out.  When we try any hack possible just to garner more “active-users”, are we any better?

When I write code I feel more like an artist then I do an engineer.  More like a craftsman then a construction-worker.  Doesn’t every artist yearn to push their limits and make a product they can be proud of, with no compromises?  Haven’t all truly great and lasting creations been acts of love, and not greed?

Silicon Valley is such a lucrative place, surrounded by investors and people who really are just after the money.  The MBA’s have infested our thinking.  I suspect at some level the argument that design patterns are efficient and productive is just an attempt to legitimize our childlike love of shiny, polished code.  We have to do this, because it’s not acceptable to say “I want to write it to be beautiful and sublime simply because it makes me happy.”  No, there must be good economic sense behind it..

Is greed blinding?  If coding weren’t profitable, what would the culture of remaining programmers look like?  What would their code look like?  I suspect it’d be quite different.  If Artists and Musicians had opportunities to “sell-out” en-masse and all make 6-figure salaries the way Software Engineers can, would they all forget what made them love art/music in the first place and chase the bucks?

Coding no longer feels like a game of intellect.  It becomes a slog, with timetables, deadlines, legacy, and settling.  “High leverage work” doesn’t mean “the work that can most effectively make me happy”, unfortunately.

If you couldn’t get paid to code, would you still do it?  If so, what would you work on and how would your work and your product differ from what you do now?  Is this trade-off worth it?

I still love my job, don’t get me wrong.  I don’t have all the answers.

Best Career For The Times

September 25, 2009

So I was thinking that if we say people have a 20 year prime that is 18-38 then mine is 2000-2020.

I’m spending it as a Software Engineer working on the Internet, and that seems optimal for this era. We have our pick of places to work, we get paid well to exercise our brains, and we get to play a bunch. It’s a good job.

I suspect 2020-TBD will be Nanotech/Biotech.

If my prime was between these other dates, I’d have been:

* 1974-2000, Desktop Software Engineer: Because there was no web, but we did have computers, so, duh.

* 1946-1973, Journalist: I always wanted to be a journalist when I was a kid and I think this would’ve been a good time for it. Newspapers were still going strong, and news was really for the first time being propagated worldwide in virtual real-time. There was also a lot of interesting news to cover between McCarthyism, The Cold War, The Cultural Revolutions of the 60’s, Vietnam, and finally: Nixon.

* 1910-1945, Pilot: Flying seems like fun, but nowadays being a Pilot is probably like being a computer administrator. This would’ve been the time to fly a plane, when it was a prop-engine you and your mechanic buddy built and flew over the local farmland. Crashing was something you could reasonably survive, and not crashing was an act of true skill.

* 1860-1909, Biologist: This was the golden age for biology. Darwin figured out evolution, and Mendel figured out genetics. The world of biology was ripe for innovative thinking and new discoveries once mankind figured out the explanation for life in general.

* 1760-1860, Politician: The time of Ben Franklin and Thomas Paine. When slavery was being disputed, and strong democratic nations were emerging. The French Revolution gave us such things as the metric system, and was easily as interesting as our own.

* 1600 – 1760, Astronomer: Newton had just invented the Telescope, so unless you were extremely good at like reverse-engineering trigonometry (ahem Copernicus) this was your first opportunity to really discover new things about the cosmos. Everything from binary star systems to other galaxies to about a bajillion new stars were discovered during this time period.

* 1350 – 1600, Mathematician: Back before the really brilliant bastards made math impossible to advance. This was the period when logarithms and trigonometry were invented. It would’ve been a fun time to explore the edges of mathematical understanding. Trying to advance math beyond Newton is just too hard.

* 100 – 1350, Inventor of mechanical novelties for my village/town: Well there probably wasn’t much else to do, and the inventor-person was probably revered and fairly indispensable so maybe I’d have gotten a nice house or first pick of slave when we conquered new villages and such.

* 400 BC – 100, Philosopher: Ahh the greeks and romans. Science would’ve been fun too but they were more into Philosophy and I like to be a man of the times. Also there’s huge fame potential for this period. I really don’t think Aristotle/Plato/Socrates deserve the amount of fame they’ve achieved for their silly philosophical crap.

* Hominid – 400BC, Simple tool maker for my tribe/family: Again, not much else to do. I’d have been bored, and so might as well try to make some tools. Depending on how far back we go, I might have been interested in trying to figure out how to make fire or wheeled carriages.