Fog Creek

dev.life – Interview with Phil Sturgeon

In dev.life, we chat with developers about their passion for programming: how they got into it, what they like to work on and how.

Today’s guest is Phil Sturgeon, Senior Software Engineer at Ride. A former PHP-FIG member, he founded PyroCMS and was a core contributor to CodeIgniter. He’s also the author of Build APIs You Won’t Hate and regularly blogs about software development.


salvatore
Location: New York City, US
Current Role: Senior Software Engineer at Ride


How did you get into software development?

There was an online magazine at my secondary school, and they wanted students to contribute mini-sites for other students to read. There was a really, really bad games review website built with Microsoft Publisher on there, which was essentially like browsing around a PowerPoint presentation. It was awful. Like any 11-year old child I was obsessed with video games, so I decided to learn how Front Page worked so I could make a better one.

Eventually, another friend mentioned Dreamweaver and PHP, which stopped me crafting thousands of pages by hand or using iframes for content. This was the start of 15 years of learning, programming and messing about with the Internet. My parents had an IBM, with a 650 meg HDD and I think it was 8 megs of RAM. By no means as restrictive as some of the previous generations computers on their Z86’s and whatnot, but it was hardly a huge amount of fun.

So I started with PHP, JavaScript and MySQL like many, although I did try ASP for a while after my mum bought me the wrong book for my birthday. I was self-taught but then went to college at 17 to study computing formally. They taught us C++ and Prolog which was great, but a lot of it was over-normalised SQL server, Perl and HTML font tags.

ti

Tell us a little about your current role

My career used to be heavily open-source based. I’d work on multiple projects which had a business model on top or sell consulting on the side of them. Over the last few years, I have been passing my responsibilities to other developers as I try to step away from that to focus on my full-time job.

Open-source used to take up a good half of my day. Answering questions, reviewing pull requests, seeking further information from bug reports, debugging, coding, documenting, etc. It was interesting work and it did a lot for my career, but with a full-time job, that work goes into evenings and lunch breaks and when it’s as much as I was doing, it can be a real time suck.

I used to work on CodeIgniter, FuelPHP and PyroCMS. They all have amazing new developers and owners now. I used to be on the PHP-FIG too, but I gave my seat to the new PyroCMS project lead.

This has meant I can now focus on getting my work done for Ride.com, which is a whole lot of HTTP API and service-based development. It is a lot of fun, and the distributed international team is an amazing bunch of people.

I am working full-time now as a Rails developer, for the first time since I spent a few months with it in 2010. I’ve used Ruby here and there for plenty of things and the syntax is insanely easy, but jumping through the hoops of Rails and learning its rather magical conventions can really be a time sap.

With lots of remote developers, getting things done when I run into a Rails roadblock can often be a productivity and mood killer. Luckily we hired an on-site developer with extensive Rails experience, so this got me going again.

This should serve as a reminder to try and avoid investing your time and efforts too heavily into a single language, framework or tool. With the majority of the last 15 years being spent in the PHP world, I have to try extra hard when working with tools like Rails or Django, even though smaller frameworks in the same languages seem to present no problems.

When are you at your happiest whilst coding?

When that test suite finally goes green after a day of spitting E’s in your face!

What is your dev environment?

It varies depending on the project. If something is incredibly complex and going on to a well-provisioned server, I’ll use Vagrant and Chef to make the dev/prod parity as tight as possible.

If, on the other hand, I am shoving things on Heroku I’ll just run a local server with $ php -s, $ rails s or whatever unicorn-type clone that language fancies using.

I use a Macbook Pro, with Atom, AtomLinter, editorconfig, rubocop and ruby-test. If Git didn’t exist and I had to go back to handling complex merges with SVN I would probably become a Kayak instructor.

I actually started with a standing desk a month or so ago. I have a Varidesk, with a nice mat to stop my feed going dead. To keep life interesting I also have a balance board, and I’ve not face planted the desk or any co-workers just yet.

What are your favorite books about development?

The best programming book I have ever read is a soft skills book, but it’s something a lot more people should read. Team Geek is the name, and it made me think about a lot of stuff.

I’m also a huge fan of these two bloggers, Nikita Popov and Anthony Ferrara. They’re both PHP contributors who have had huge impacts on the language, and have some very intelligent things to say about PHP and programming, in general.

What technologies are you currently trying out?

I’ve been building a few services in Go for the last few months and I’m really enjoying it. The simplicity and insanely strict type safety have lead to a lot fewer bugs being made during development, and the built-in web server and async functionality has made the whole thing lightning fast.

slides

When not coding, what do you like to do?

I’ve spent a lot of time during the last year booted out of the country I live in, but as soon as I got back I broke three ribs snowboarding. Clearly I should stick to skiing next winter, but when I’m all in one piece and I’m not in the office and there’s not a foot of snow on the ground, I’ll be out on my bike doing laps of Central Park or exploring the New Jersey mountains.

What advice would you give to a younger version of yourself starting out in development?

Diversify your skill set from the get go. Don’t try to be a jack of all trades, but try to avoid becoming type-cast or a one-hit wonder.

Learning multiple languages is easier now than it ever has been with CodeAcademy and Treehouse making it obnoxiously easy to do. The more you learn the more you start to understand programming concepts, in general, instead of having the one language’s idiomatic approach baked into your head forever.

Thanks to Phil for taking the time to speak with us. Have someone you’d like to be a guest? Let us know @FogCreek.

Recent dev.life Interviews

brian_bondy

Brian Bondy

jared_parsons

Jared Parsons

Antirez

Salvatore Sanfilippo

hakim

Hakim El Hattab