Daniel Dvorkin Interview
Daniel Dvorkin (@MZAWeb) is a husband, father, and member of Modern Tri.be. Encouraged by his dad, his love of programming began at age five. In this interview, Daniel talks about his favorite projects, what he’s learned from them, and shares some top-notch resources for creating clean, efficient, beautiful code.
You’ve been programming since the age of five. Tell us why you love it. What about programming still excites you?
My dad was a hobbyist developer in the early 80s, and he used to sit me in his lap and we’d build simple games like Pac-Man together in Commodore 64 BASIC. I was hooked. It started like a game: “Let’s see if I can pull this thing off.” I loved the puzzles. Luckily, I’ve been able to keep the same approach, even after so many years. Every new project is a game I play, trying to come up with a solution that not only works, but is performant and elegant. Sometimes I succeed but most often I could still score higher. That’s pretty much what keeps me excited and allows me to keep doing this day in and day out.
I’m a voracious learner. This wonderful profession, and the WordPress community in particular, is so full of talented and smart people to learn from that I can’t see myself doing anything else. I love that there are puzzles for every level of proficiency. At first you just want your code to compile. Then you want it to work. At a certain level you want it to be beautiful and efficient. You always get a way to improve your skills and keep from becoming stagnant and bored. If one day you somehow mistakenly conclude that you conquered the ultimate level, you’ll get a wake-up call when you join an open source community because there are always people that are so much better than you that it’s ridiculous.
Even before finishing high school, I discovered that there were some crazy people out there that wanted to give me money in exchange for me spending my time programming. This was huge. It was so obvious and natural that I don’t think I ever consciously decided to make a career out of this. Since then, I’ve had a few jobs with a more managerial role, and I got bored pretty quickly. Ultimately, at least for me, it’s all about the fun you get and I’m happiest elbow-deep in the code.
Also, I really need to give a shout out to Modern Tribe’s management. Those guys keep finding fun, complex, and exciting projects for me to work on.
In your eyes, what are the hallmarks of beautiful and efficient code?
That’s the million dollar question! It’s one that I keep trying to answer for myself. If you’d allow me, I’d like to point you to how others have answered this question. They’ve had a profound impact on what I think about this.
First, two classics: Clean Code: A Handbook of Agile Software Craftsmanship and Code Complete: A Practical Handbook of Software Construction. As far as I know, those are the bibles of clean and maintainable code.
One book I recently really enjoyed is Hacker’s Delight.
In our own community we have great resources for inspiration. I’d recommend anyone who’s not done it yet to go watch these two Nikolay Bachiyski videos on WordPress.tv: Selected pieces from Elements of Style translated to code and Writing Code as User Experience Design.
Of all the projects you’ve had the chance to work on in your career, which is your favorite and why? What has been the most important thing you learned from it, good and bad?
It’s really hard to come up with a unique answer for this question, so if you allow me to break the rules, I’ll name three projects that had a big impact on my career in the last year or so.
Until I joined Modern Tribe, I didn’t have much experience working on products. I’ve been doing client work almost exclusively all my life. There are certain differences I find really interesting. I’m still learning, but here’s the skinny…
Technical debt is way more expensive. You have to live with this code forever, so you better be sure you want to see that line of code you’re adding for a long time.
Doing services, we all have customers that are hard to deal with, right? With Events, having 400,000+ users — a lot of them depending on your product to run their business — adds a layer of pressure that’s just in a completely different league. You REALLY don’t want to screw them. And no matter how proud you are of your product, you’ll always find someone that hates you and thinks you’re stupid and ugly. I have mad respect and admiration for people like Nacin and Jaquith. You need some immense balls to lead a product with a userbase like WordPress. Also, “scope, timeline, budget” (Shane’s mantra), is really important in services projects, but when you have tons of people out there using your product, and when your own company is the one paying the bill, boy those three words become religion.
Your team is everything. When working for a long time in the same codebase with the same team, you have a deeper level of trust with them. You learn what each one is best at, you can rely on them and know they will do the right thing. After all, you’ll need to live with their code virtually forever. In this case, to be honest, working with the best team in the world makes it easier (wink wink).
I started contributing to the bbPress project this year (though way less than I’d like). I won’t go into the details of how it feels to contribute to an open source project, since most readers here know about it already, so I’ll keep it short. If you are a developer and get the chance to work on a project with John James Jacoby (@jjj) as lead, just do it. I promise you, his brilliance and obsession for code beauty will make a better programmer out of you in no time.
Two years ago we started to work for the MIT Sloan Review and I got to lead the architecture and back end for it.
It’s always nice to work for an institution like MIT. They know a few things about tech. It adds some pressure, but the satisfaction of a job well done pays off completely. And in this particular case we couldn’t be luckier. There’s just no better client out there than Sean Brown and his team. I bet you. You won’t find any. Sean is smart and thoughtful, knows exactly what he wants, but he’s very patient and open to explore new ideas and approaches.
I had a lot of experience leading the development side of projects, but this time I also got to lead the infrastructure. It’s not my main area of expertise, but I really love getting my hands “dirty” in the servers, and this was the first time I had 100% control over them in a big project like this. We ended up with a really fine nginx-based stack that performs better than I expected.
What were the three most important things you learned from doing UX testing on the MIT Sloan Review site and how has that experience changed you as a developer?
Doing UX testing on a project you’ve spent a long time working on is probably one of the hardest things to watch in our line of work. It is really painful. We’ve done a bunch of UX testing on different projects and the biggest take aways always seem to be the same:
- This is not as easy to use as we thought.
- Non-geeks use technology in a very different way than us, and a lot of concepts we take for granted are really not that common. “Intuitive” is a really bad description for interfaces, because it changes with different people in different contexts.
Seems obvious, right? But day-to-day it is really hard to remember those simple tips. Seeing real people use your work is a totally humbling experience. Now when I have to implement a particularly complicated interface, I ask for help from my wife or non-geek friends to sanity check for me. Basically, I stopped trusting my own judgement on the matter.
How did you get into working with WordPress and what made you stick with it?
Roughly eight years ago I needed a blog for a project I was doing with a friend. I tested MovableType, but wasn’t too happy with it and a friend recommended I give WordPress a try. It was weird for the first 20 minutes, but by the time I finished implementing our theme, I was hooked. I loved how easy it was to customize, but very powerful and capable at the same time. After that I started preaching WordPress to every friend that needed a blog, and helping them with the implementation. In 2007 I was working for a company that wanted to build a vertical blog network and the choice was easy. We did more than 40 WordPress blogs in a couple of months. After v. 3.0 was out, it took me some time to realize how powerful the custom post types API was so I didn’t jump in to using it as a framework for all the sites I needed to build straight away. That happened in 2011, and I never looked back. Now I only take WordPress projects.
You recently became a father for the first time, to your lovely daughter Maite. How has the humbling experience of fatherhood shaped your outlook on work and life in general?
To be honest, I was expecting to have some sort of epiphany or radical life-changing experience. In reality, the only radical thing I experienced after Maite was born was sheer happiness and mad levels of love (and lots of sleepiness, too). But in the day-to-day stuff, the changes were way more subtle. I have the luxury of having my office in my home, so I can see Maite grow and play whenever I want, but there’s a counterpart to that. I get way more distracted, and need to work in batches of concentration. And being a bit ADHD, it’s not always easy. But I’m immensely lucky to be married to a wonderful gal that takes care of everything and more so I can focus on my work and be productive (even though she’s a successful professional in her field).
Being parents grounded us a lot. Financial decisions are not as light as they used to be. We need to provide for a kid, and we need to be careful and smart with what we do. This year we embarked on a new adventure. We decided to stop renting, and we’re building our own house in the mountains. It’s a frightening experience, but we’re getting a lot of fun out of it, and we expect to be ready to move there in a year. In fact, I threw a BBQ for the builder to celebrate the completion of the foundation. It is tradition in Argentina!