A few days late, well into week 3, but I did want to capture one aspect of my second week.
I mean, by Friday morning, I was exhausted. My legs were dragging, my body was dragging, I was feeling like a wreck. And I still had a “long run” to do (1h30min). I was in meetings where I was more like a zombie than a strategic thinker. In fact, for most of the day it was like being enveloped in some kind of intellectual fog.
My Facebook status was: Feeling like 40.
After I finished my run, all 1h30min, I felt a lot better. Surprisingly. My wife and I projected a miserable painful horrible soul crushing 1h30min. If Polly had come with me, we assumed, she would have had this look of: When are we running? Are we running yet? Is this running?
But it actually went well. When I woke up on Saturday, though, all I could think of was “Thank God, Thank God Almighty, It’s my rest day”. If it had been Sunday, I would have gone to Church to pray for thanks for my rest day…
Sunday was my “long” bike ride. You know I used to bike a lot. I did the death ride, I would go up Page Mill road two or three times a week. I mean I was a strong cyclists. I figured 1h45 minutes, can not possibly be a hard bad thing.
OMG. I mean OMG. OMG.
It was possibly the longest 1h45minutes of my life. First trying to keep a cadence of 90 is hard. It feels like sprinting, especially if your cadence is 70. Then just being on a bike for 1h45min is hard. My entire body felt like: WHAT ARE YOU DOING? ARE YOU SICK IN THE HEAD? STOP! STOP! DAMN, IT! STOP! STOP!
And then it was over, and I crawled out of the garage, and felt like a wreck.
Good question. I am biased. Very biased. I work at Zynga. Have worked at the place for 3+ years.
The first thing to realize is that the press is the press. When they love you, you can do nothing wrong, and when they hate you, you can do nothing right. Things are never as good or as bad as the press would like you to believe.
The press isn’t a good way to pick your next job.
What you should instead focus on is; what is the macro opportunity, who am I going to be working with, and what problems will I be working on?
In terms of your job after Zynga, what people will evaluate is not how successful your last company was (there are far more failures than successes in the world), but rather what did you do while you were there. I have hired a great many great people from companies that no longer exist.
I won’t speak to the macro business opportunity.
Let me just state something that is not obvious to many people. We ship 100+ releases a day, sometimes 1000 in a week. Each of these releases is a carefully designed shot on goal. Not everyone scores, but enough do. We ship many many games. And each game is an opportunity to revisit every element of our stack all over again. As a technologist, that should be exciting.
What I can speak to is the technology challenges we have. Our challenge isn’t where we invest our precious technology resources, but where we don’t. We have to innovate on all layers. From the core data center, to the infrastructure management, to database technologies, to API layers, to using client technology in new and novel ways, to core 3D. We have to innovate on mechanics (how people play games) and on channels (how we reach players).
We are, especially around games, a content company. As such we have to continue to navigate disruptive platform changes to continue to deliver the content our players want.
We have to continue to surf technology disruptions that break our plans. On the back-end when we started we built the world’s largest No-SQL database out of memcache, PHP and mysql. Then we helped build early versions of couchbase and now we are investing in our own versions of couchbase and we’re looking at scale SQL engines like memsql. On the front end we started with PHP and web games, became big users of flash for games and on mobile are looking at a wide variety of technology platforms. Each of these changes creates challenges and opportunities and I believe that although there exist great answers today, there are better ones out there.
One of the things I am most intensely proud of is that Farm 2 is possibly the biggest 3D game of all time. Having been associated with 3D graphics either directly or indirectly, the idea that eight million people everyday that are not hard core gamers would interact with a 3D interface is mind-blowing. It might be the most main-stream 3D app out-there…
I know that if you want to work on back-end, scalable systems, at Zynga the future is bigger than the past. If you want to work on the bleeding edge of building games that are social and accessible this is also a great place to work.
So we have good hard problems to work on, and you will get a chance to work on them. But what about the near term future?
Nothing in life is guaranteed. I joined SGI in 1996, which was the last profitable quarter they had. I joined NetApp in 1999, and in 2000 we almost went out of business. Who would have guessed in 1999 when they were growing 100% year over year.
First of all we’re living in this disruptive world. In 2009 when folks had bugs on Safari we ignored them because nobody had a Mac. In 2013 we have OS-x+windows+tablet+mobile+ios+android+win8? Different platforms with different interaction patterns. That disruption creates opportunities and challenges.
When you look at other opportunities out there, ask yourself how many of them have an opportunity to become an internet treasure? Zynga is certainly on any short list. We have a large audience, we have games that people love to play and we have a great team.
If you living in a disruptive world you want to bet on the right team. Zynga, in my opinion, has a great team.
I have a complicated life. I have a small child, a complex job, a great wife, and I love to watch hockey.
And as I was staring at the various do-it-yourself Ironman training programs I felt, well, overwhelmed. Half of them assumed I had already finished a half-Ironman, the other half that I was in super-duper shape and just need tweaking. The idea that a forty year old dude who just finished his first marathon would want to do something this insane did not fit into the assumed paradigm.
My wife recommended I get a coach. Now look the last time a coach and I interacted, I was 15 … And the results were not pretty. Being the fat slow geeky out-of-shape poorly coordinated kid trying to play team sports is not fun. My coach was charming in his willingness to tolerate my presence but it would have been better if I just played chess like the other dweebs… What became clear to me was that coaches were these dudes who knew a little bit more than you did, and that most of what they knew was useless. Furthermore they asked you to do things that you were clearly incapable of doing. More to the point they were interested in spending time on the good kids not the kids whose talents lied elsewhere…
So 25 years later, I am staring at this daunting exercise plan, and am thinking, what the heck do I do?
My first reaction is: I AM INVINCIBLE (cue-Golden Arrow) …
I’ll figure this out on my own. After all I just finished the Athens Marathon on my lonesome…
Step 1 learn about swimming…
Do you ever have this reaction that you’re a dinosaur in an era of mammals? That’s what I felt like doing research on swimming. It seemed that everything I had been taught 25 years ago was wrong. I thought I knew how to swim… Apparently you’re supposed to rotate your body. Rotate? Rotating was the tool of the devil not the source of all goodness. And then there were these metrics: SWOLF and Laps and blah and bleh and meh… And I’m thinking what do I do here?
I felt like the 70’s were calling and they wanted their swimming technique back…
My first reaction is: not really relevant. But then I continue my research and realize that a significant chunk of finishing an Ironman is about efficiency. And efficiency is about technique and boy-oh-boy is my technique, well, dated…
So now what?
Despair, despondency, misery. Or I could find a coach who knows this material and can help me.
To the coach! But where do you find a coach? And how does a dude like me who has had this long history of working with coaches go find one or even evaluate one? Well I am big fan of matching services, and realizing that my first choice is about as likely to be wrong as it is going to be correct, I figure I’ll hire someone and in a few months know a lot about a coach is about and decide whether it works or doesn’t…
So I’m honest, use the trainingpeaks.com service and get a coaching recommendation. I look him up, and it seems like overkill.. I mean do I really need someone with that many achievements? And I am thinking: remember the plan you have no idea, so let’s go with it and see what works. And it is pricey.
So after a month of thinking through it, I pull the trigger.
First week, and already am seeing the value of having a coach, and especially one I can email every day with stupid questions…
First of all my wife doesn’t have to discuss my training with me. That’s what my coach is for. She’s much happier …
Secondly, I don’t have this gut wrenching fear that I am doing something wrong … I might be but I don’t have the fear.
Thirdly, it turns out that training has become a lot more sophisticated in 25 years – no shit Sherlock…
So what about the first week?
It’s funny; I thought training was about well… you know swimming, running and biking. How hard can it be?
This is a plane, right?
It’s about doing specific kinds of swims and specific kinds of runs and specific kinds of bicycle rides. I felt like I was this turbo-prop pilot being asked to fly a Boeing 787.
Sure both are planes, but really they are not…
My first week was a mess. First of all I had to do research to understand what the hell was being asked. Then during the exercise workout I forgot half the things I had to do. And then there is the open question of whether I was doing anything remotely accurate.
Despair. Despondency. But then I remembered I have a coach and he can help.
So week two is simpler. And I have this new plan. It’s called writing down the exercise program before I go out. And even better, I have this phone number and I’ll use it when I am at a loss as to what to do…
Last year I finished my first marathon. And it was a disappointment. Disappointing because I wanted to experience the exhilaration of reaching the very hairy edge of what I was capable of. And I didn’t.
So now what?
Well, I could try and go faster, but going faster is about losing weight more than anything else. And going faster isn’t that interesting. I wanted to cross the finish line with nothing in the tank. I wanted to say: This is the limit.
So a Facebook friend of mine has been doing all of these posts about doing triathlons and ironmen, and I was thinking: This looks insane. This feels like pushing the edge.
So I have a new plan, I am going to do an Ironman next year.
So here are some things I need to do:
Bike 112 miles averaging more than 15 miles an hour… I have only been able to sustain a greater than 15 mile pace once in my life and that was for 1 hour… Today I can’t bike 10 miles an hour the day after my long runs…
Swim faster than I normally swim for longer than I have ever swam
Re-learn how to swim … My swimming technique is about 20+ years out of date.
Do a marathon after 1 and 2
Fix my cadence.
Lose a lot of weight because there is this calorie consumption problem…
This feels insane enough…
But there is more. To keep the year interesting, I intend to do an Olympic Triathlon this year in Santa Cruz, a marathon in Napa and go faster than 5 hours in Athens this year.
If I have any discipline I’ll keep posting updates on this blog…
Hiring a programmer is an incredibly risky process. In less than 5 hours you are supposed to distill the experience, aptitude and team fit of an individual. Even better you’re supposed to project forward how that experience will jive with the uncertain future of the company.
The three most important abilities in a software engineer are
1) An ability to master multiple technologies
2) An ability to communicate effectively on complex topics
3) An ability to work on a team, and by implication do what is necessary for the team to succeed.
An interview that focuses exclusively on algorithms reveals a narrow slice on (1) and a very narrow slice on (2) and it tells you nothing about (3).
But how useful is a strong mastery of algorithms? The short answer is it depends.
For most jobs for most people at most companies…
If we’re talking about the basics, it’s very useful … except that most data structures these days are a hash-map. Knowing other data structures is useful in certain situations but most of the time it’s a little bit of arcana…
If we’re talking about more advanced data structures? Probably not at all. In practice most software systems have very simple algorithms.
For pushing the boundaries of what is possible… And those are rare jobs or rare moments within rare jobs…
It’s actually very useful to have a good and deep understanding of algorithms that apply to your problem space. It’s really useful to be able to read papers and results and understand how they apply to your problem domain. But no one ever asks those in an interview becaue of the absurdity of asking that question…
And there are classes of jobs where it turns out that understanding algorithms is the job. These are not very common jobs. But they exist. However, they are certainly not the average job at the average high-tech company.
In fact what is more useful and rarely asked in interviews is how do you approach learning a new system? Questions about how you learn about software. Probing questions about the depth of your understanding of the systems you understood and how well you understood it…
And then too little time is spent on leadership and how people worked with other people and how they dealt with conflict… And how folks deal with ambiguity etc…
It’s my belief that the fascination with algorithms is a residual side effect of the fact that too many people went to schools where math competitions and computer competitions were ways in which people measured ability.
In practice, it turns out that being good at math olympiads is not well correlated with being a great mathematician… Which makes me think that being great at algorithms is good but not sufficient to be great at your job in software.
At Zynga, where I work when I write this answer, we try and cover all three areas. We have people probe CS fundamentals, design, architecture, and cultural fit. Having five people ask five different brain teasers is not considered the right way to interview a candidate.