This is a continuing series about “What programmer’s day in life looks like”. Last time I had an interview with Chris Smith, who is Tech / Lead Manager at Google. This time it’s the turn for another amazing internet company – StackOverflow and I was lucky to catch Nick Craver for a quick interview about his daily life. Don’t forget to check out his blog and follow him on Twitter.
The interview with Nick Craver – Software Engineer, Systems & Database Administrator at StackOverflow (StackExchange):
What your typical day looks like?
I wake up around 5:30 am (it’s a curse) and grab the iPad to catch up on twitter, news, and company chat before the alarm goes off at 6. I typically switch to the MacBook then, do a quick glance at “Status” (our internal running copy of Opserver).
If there’s an issue with something there or from our internal chat, I’ll dig into that and see if I can resolve it quickly. Since my European teammates are up way before me, there are often a few things in queue that need love – errors, access, abnormal response times…something.
After I get my ladies out the door (daughter is 18 months) by 7:30, then I head to the gym for about 2 hours for treadmill, weights and bike. After I get back, quick shower then it’s primary work time from 9:45 to 5:30.
What that consists of varies very widely. Last week it was emergency SQL server triaging and bug tracking while keeping the sites online as best we could.
This week it’s fixing the last of the bugs in the new top bar, getting several servers in our secondary data center online, moving data explorer back to Oregon, tracking down some database corruption on an internal instance, and I’m on bug duty rotation this week…so whatever pops up on meta.
If any production issue crops up, that takes priority. When I can find the time, we hunt down any performance gains to be had and go after then, constantly look for areas where performance needs a look, and add features to Opserver.
Work typically ends around 5:30 or so when the my girls get home, but I have the laptop handy catching up on personal projects, RSS feeds, and general twitter shenanigans…if something crops up when I’ll take a peek but that’s usually a rare occurrence. I’m usually up until 10:30-11:30 pm, grab some sleep then do it again.
How did you learn programming and when did you get interested in it?
I used to setup infrastructure at doctor offices and such when I was 14, and I wanted to automate things…so I learned scripting.
I’ve always been tech minded, my grandfather was an engineer for AT&T and showed me shiny things early on. I played with drop cords a lot as a baby, not sure that was a good thing.
What does your workspace look like?
I have a dedicated room for the office with just the essentials.
If you’re curious about specific hardware:
- I use a Steelcase Series 5 70” desk (standing/sitting, they’re movable)
- and a Mirra chair or floor mat when standing.
- I use 3x 30” Dell monitors for screen real-estate, a Das keyboard,
- MX 510 mouse,
- a pair of MS cameras,
- 2 sets of Plantronic 995 wireless headphones,
- Sennheiser 595s for music.
- For the tower I use a custom build: 3960x, 64 GB RAM, 4 SSDs for databases, etc. and lots of spiny storage for backups and such.
- I also often have the rMBP 2.6 GHz/16 GB/1 TB on the side as an extra machine or testing some retina stuff we’re working on at the moment. It’s also my machine for morning/night/travel as well. Parallels for windows, no bootcamp for me.
What’s your favorite thing about being a programmer?
Solving problems. Everything I do is solving a problem, whether it be how a production glitch or designing a new system that needs to scale to millions of users. These are fun problems to solve, at least to me. A big one is how we make Stack Overflow faster all over the world, something we how to make a huge dent in next year with infrastructure all over the world. That’s a huge problem to solve, with huge benefits to our users…and I look forward to solving it.
Being on 2 teams of insanely smart people is also a very lucky situation to be in, we can come up with some crazy solutions to unique problems. Some of the solutions are insane, and we all love it.
What you don’t like about being a programmer?
We have so many things that can be better, there simply not enough hours in the day to lay down code for all the ideas. Opserver makes this especially true, I have a feature list hundreds of items long that I just need to find time to do. It’s a good problem since it keeps my mind occupied and I love 10 things going at once…but I do wish there was more time in the day.
Do you still find code or questions or challenges that seem like gibberish to you at first?
Occasionally, yeah this still happens. I typically have a close guess for most cases these days from knowing most of our systems and how they work.
To me the most important skill is being able to dig in an debug an issue. We have tools built to do this as well. Quickly looking at running stack traces, knowing how to dig into memory dumps with windbg, recognizing symptoms vs. causes, etc. are very helpful in getting to the bottom of an issue quickly.
To me, knowing all the code isn’t as important as being able to figure out the code you don’t know. Learning from challenges that arise is also a huge opportunity that many teams miss, or just don’t have time for.
For example: adding monitoring/alerting around causes, making the problem system or code more redundant, eliminating the cause completely…these things need to be done, not ignored forever. At the very least, fixing one issue takes at least one factor out of debugging the next.
Do you think it’s possible to become a good programmer without a (technical) degree?
Absolutely. I don’t know about other universities, but I went consider my time at college very uninformative.
The curriculum was, at best, 5 years behind current technology. I highly recommend a co-op or internship to anyone over a classroom. I believe that at least in some cases (stories from friends tell me most cases) real-world programming teaches more in 4 weeks than 4 years of college does.
Are you smart? Can you solve problems? Then I don’t care about any degree. We have interviewed hundreds of candidates for our team and I don’t know that any of us has looked at the education section of a resume – I know I haven’t. It doesn’t matter.
Good programmers are just good problem solvers; beyond that it’s solving the problem more efficiency…code is just a tool. Along the same lines, we usually don’t even care what language you write in currently, that’s something that’s pretty easy to pick up as well.
I firmly believe being smart, being passionate, and doing smart things are all awesome…degrees are completely optional.