Steve Grunwell 

Upper Cup Coffee. — Steve Grunwell is a Senior Web Engineer at 10up, a world-class WordPress development company. He specializes in WordPress and application development and has released several plugins, including one from the grounds of The White House during the first annual National Day of Civic Hacking in 2013. When he’s not writing software he enjoys hiking, music, and writing about writing software on his blog.

An introduction is in order. Who are you and what you do?

My name is Steve Grunwell and I’m a Senior Web Engineer at 10up. We are a completely distributed company that does work with a lot of major publishers. I do a lot of backend work as part of my nine-to-five, but I also enjoying hacking around the frontend.

Steve Grunwell
Steve Grunwell is a Senior Web Engineer at 10up, a world-class WordPress development company.

What’s a typical day like for you at 10up?

Since 10up is distributed, everyone is able to work wherever they want, whether that’s at home, a coworking space, or a coffee shop. It’s not your typical employer where you get up, drive to work, and wait around the watercooler while the coffee is brewed.

I wake up and usually eat a bowl of cereal while I check my email. I’ll then hop onto HipChat to check for messages, which could either be for my current project or in our special interest rooms, like for craft beer enthusiasts or internet memes. From there, I’ll log into Basecamp to see the progress we’re making in our project work.

My team has a check-in every Monday, Wednesday, and Friday, which is basically a scrum where we discuss what we’ve been working on and if we have any blockers. On Wednesdays we may have a presentation, internal training, or just treat it more like a watercooler-type conversation. It’s really important to maintain a social connection beyond being just workers in a company doing client work, especially when you’re not in a physical office.

I typically work from 8:30 until 5:30 or so. If I decide to work through lunch I can do that. I still try to go out for lunch every once in awhile, but it’s nice to be able to cook something that I can actually enjoy, instead of a refrigerated peanut butter and jelly sandwich. I could also use that hour and go watch some TV, take a nap, or even mow the lawn. It feels less like a work environment, although I’m just as productive as when I was working in an office.

How many people work for 10up and how is the company organized?

It’s just over one hundred, and again we’re all over the world and across different time zones.

10up logo

We’re organized into pods, which are teams of six to ten-ish people. The pod that I’m on, Omicron, has people from all over the world, so we’re all in different time zones. Our pod has people from the United States, Canada, Mexico, India, and Brazil. It’s fun to have that cultural diversity and be able to say, “I have friends on four different continents!”

Each pod has an engineering manager who’s responsible for the overall code quality and technical direction of the pod. There’s also a pod leader, who is typically a project manager or web strategist who acts as the general spokesperson for the team.

How was the transition to working remotely?

I knew it was going to be a challenge going into it. I’ve always been a really social person at the office, the one with the inside jokes, so I worried that I was going to feel isolated. But thanks to HipChat and Hangouts, I don’t feel alone at all.

The other day I was telling my team that I missed them. I’ve had the opportunity to meet a lot of them in person. We have an annual company meeting, which was held in Boulder this year. It’s basically a conference where we talk about our strategic goals, current client projects, and have tech talks.

There’s also downtime between the talks, so you can grab a beer, see the city, or go for a hike. It’s an opportunity to meet people who have flown in from across the world. Once they get past their jet lag, it’s great to see their smiling, half-awake faces.

Each pod also organizes a yearly meetup that’s held six months after the all-company meeting. We’re still figuring out where we want to go. The meetup is more of a social and team building event, which is a nice break from client work. We’re no longer just avatars from across the world, but friends who can have one-on-one conversations, joke around, and generally bond as human beings.

How did you get into web development?

It’s not a dark and gritty origin story, unfortunately. I went to Bowling Green to major in video and landed an internship at a small agency, Sea Lion Studio, where I was shooting and editing. Everything went really well and they liked me enough to hire me on once the internship ended.

Now this was during the summer and I was taking classes, so I couldn’t work more than twenty-five hours a week. The agency also had a full-time co-op student, so they had him take the lead on the video work. I was a little upset about that at the time, but it made a lot of sense from a business perspective.

Around the same time the agency’s designer/developer left, so my boss came to me and asked, “Hey, do you mind taking a look at this PHP? I kind of understand it, but it would be nice to have a second set of eyes on it.” So I took a look at it, even though I wasn’t a web developer by any stretch of the imagination. In high school I had programmed in Basic on my TI-83 calculator and written some static HTML sites in Netscape Composer, but that was it.

The more time I spent with the code the better I understood it. It was really cool to tweak the code to see what it would do, and it was great being able to build something interactive instead of just assembling videos.

How did you come to specialize in WordPress development?

When I moved back to Columbus I started working at Fahlgren Mortine. We did a lot of work for larger clients, both nonprofits and businesses. We built a community news site for Denison University called TheDEN, which was the second WordPress site I had ever worked on. The first was a customization of the Twenty Ten theme for WordPress 3.0 and we had edited styles.css directly, which was embarrassing since we broke the upgrade path.

Screenshot from TheDEN.

For TheDEN there were issues with the implementation in that a lot of plugins had been directly edited. I was asked to sort that out in order to get the project to the finish line. I did an audit to find the affected plugins and then abstracted the custom functionality into either feature plugins or the theme itself.

The more that I worked on TheDEN the more I realized how great WordPress was. It was so nice to not need to write my own authentication system or build the content management functionality over and over again. I was able to focus on customizing the site for the client, instead of building everything from scratch.

With every WordPress site that we built I set a personal goal to try something new or improve upon some previous work. I have code snippets from those days that were a quick copy-and-paste jobs into functions.php. When I look at them now I think, “Oh that is so bad,” but it was how I learned and worked to improve my skills.

After a few years at Fahlgren I was contacted by Buckeye Interactive for a Senior PHP Developer role with a focus on WordPress. I went in for an interview and met the team and really liked the company. I was looking for a more technical leadership role, which I found at Buckeye.

It was at Buckeye that I started speaking at company events and then WordCamps. I had done theatre in high school, so being in front of an audience was never a big issue for me. Speaking is also a great opportunity to travel and meet people. I confess that it’s also nice to get recognized at meetups and networking events from the talks that I’ve given.

After a couple years at Buckeye I decided that I wanted to work on bigger projects for larger clientele. That led me to join 10up as a Senior Web Engineer, where I am able to push the boundaries of web development. I also work with a lot of really smart people, which keeps me on my toes. Having more experienced developers as mentors is a great way to continue learning.

What do you like best about working with WordPress?

I’d say the community. There’s a tremendous diversity among people who are using WordPress. It’s not just the core contributors or the developers who build client sites, but the normal people who use the platform as a way to document their interests and start conversations.

You don’t need to be a very technical person to use the software because it’s designed for the masses. It’s really empowering how it can be used for communication, especially for users at where anyone can start a blog for free.

It’s also a very friendly platform for developers, which is both a blessing and a curse. It’s a twelve year old piece of software that was forked from an even older piece of software, so while it’s improving all the time, there’s still a lot of older ways of doing things. It’s accessible for non-technical people, who don’t know about namespaces, autoloading, dependency management, or the other tools of modern development.

I also love the look on a developer’s face when they discover the Plugin API and realize that they can add a filter to alter how a core function works. You don’t need to copy an entire function from core to edit it for your theme, but instead can hook into the function and alter how it works to your choosing.

WordPress may not have the newest code base, but it works for a lot of people and it’s constantly improving.

Is that the worst part about working with WordPress?

Yeah, the worst part about WordPress is that it’s not the newest toy. I’m not driving the 2016 Tesla, I’m driving the 2008 Camry. It’s reliable and gets me where I need to go, but it’s also not the latest-and-greatest thing on the market, either.

What about the support for older versions of PHP?

I’d love to see WordPress drop support for deprecated versions of PHP for the sake of performance and security, but I respect that the core team doesn’t want to alienate users who are using poor hosting. Your average user won’t recognize that PHP 5.3 is, for all intents and purposes, defunct. They also wouldn’t understand if their blog went down due to WordPress dropping support for deprecated functions and methods. They’d think, “I don’t know what that means, but WordPress changed and now my site doesn’t work,” then switch to a different platform.

I was peeking at your profile on, and I saw that you’ve written a handful of plugins. Do you have a favorite?

I have two favorites. The first is WP Password Generator, which was my first WordPress contribution. It adds a little button to the Create User screen that says, “Generate Password,” that when clicked fills in the password and updates the strength meter. In a later version we added a button to reveal the password, if you wanted to see it.

WP Password Generator
One of Steve’s plugins, WP Password Generator.

I built it while working on TheDen because they wanted to add new users without having to come up with passwords for them. That would then lead to emails like, “Here’s your password that you should now change,” which was a pain. It’s also a good way to generate secure passwords instead of “password123”.

The plugin is very hands off. It’s basically an Ajax call for the function that WordPress uses to generate passwords. It was my first plugin in the repository and it was great to watch the download count grow and see the feedback.

Some people have suggested that the functionality be added to WordPress. There’s a ticket in Trac by Pippin Williamson that proposes to do just that, although he cites a similar plugin, Simple User Password Generator, which was coincidentally developed by some of my co-workers at 10up. Fate, maybe?

My other favorite plugin is Son of Clippy, which was developed after a conversation about adding more advanced tools to the back of a client site. The client wanted a better way to check for grammar and clichés and it was jokingly suggested, “Like Clippy, but for WordPress.” That just stuck with me, so I decided to build it.

Son of Clippy
Another of Steve’s plugins, Son of Clippy.

I had seen ClippyJS, so I wrote a WordPress wrapper around it with a little bit of WordPress-specific functionality. The save animation is triggered when a post is being auto-saved. There’s also an option screen where you can select one of Clippy’s friends, like the dog or the gorilla, too.

So I released the plugin and put my colleague Eric Mann’s name on it, even though he had nothing to do with it, other than being in on the original conversation. After it got approved, Eric got @-mentioned on Twitter and completely disavowed any contribution to the plugin. Thankfully he has an excellent sense of humor, so he hasn’t removed his name, even though he could. He’s been a good friend and teammate.

At WordCamp Columbus you spoke about “5 Things You Can Do to Become Your Agency’s Favorite Client.” Would you tell us one of those things?

You can actually read about all five things since the talk is based upon a post I wrote for the Metropreneur. The biggest takeaway from it, besides the fact that people like getting paid on time and being respected…

[laughing] You don’t say?

…, is to plan ahead and know the problem that you want to solve, even if you don’t know exactly how to solve it. There are two types of software developers, those who just do what they’re told and those who ask questions and produce solutions. At 10up we’re the latter. Our job is to work with you to build something that will suit your needs and is going to make you happy.

There’s a whole spectrum between implementation versus innovation. Tell us your problem and we’ll build you a solution that will be easy-to-update, scale well, and won’t introduce a whole lot of technical debt. Ideally, even after our engagement you’ll be able to maintain the project, either in-house or with a freelance developer if you don’t want an agency retainer.

Do you have any suggestions for people who want to speak at conferences?

The application process can be nerve-racking, especially for conferences that pay their speakers or reimburse their travel. It’s much easier to get started speaking at a local WordCamp than at bigger conferences like php[world] or php[tek]. I’ve applied to speak at CodeMash three times, but have yet to be accepted; I guess they’re kind of my White Whale right now.

Steve Grunwell speaking
Steve’s talk, Keeping WordPress Under [Version] Control with Git, at WordCamp Grand Rapids.

When I first decided that I wanted to speak at WordCamp Columbus, I started going to the monthly Meetup. The content usually skews more towards beginners and it’s a smaller audience, so it’s an absolutely low pressure way to get started. No one is going to think less of you if you mess up or if you just read from your slides, they’re just happy to have people presenting.

Local WordCamps tend to bring in a mix of new and veteran speakers, just so the same six people don’t run every session. There are different topic tracks, for businesses, for developers, for users, so that opens up a lot of opportunities to speak. You don’t need to be a WordPress encyclopedia to teach someone something. You also don’t need to be super involved in the WordPress community to benefit from attending.

Obviously you do a lot of work with PHP and WordPress, but what other languages or technologies are you interested in?

PHP is my bread and butter, but I am also enjoying the renaissance of modern JavaScript. I’m completely self-taught as far as software development goes. PHP was a great language to learn with and JavaScript has been fun to work with too. It’s really easy to get started with jQuery, although it can be difficult to break the bad habits that come with using it. There’s also a lot of exciting stuff going on with the Node.js community, with all these apps being written entirely in JavaScript.

I’ve also hacked on Ruby over the years and at one point I even applied for a Rails Developer position, though I was woefully underqualified. I’ve also wanted to sit down and write some C, the grandpappy of programming languages, but haven’t really sunk my teeth into it yet.

How do you decide on what to learn next?

A lot of it is dictated by client needs, like if they need a particular feature. If I need to learn a new language or framework, I do it. At 10up we do a lot of WordPress work, so instead of going for breadth, I go for depth.

I’ve been doing a lot of unit testing, admittedly due to some peer pressure from Eric. He is really big into it, so I want to be able to speak competently about it. Testing talks also tend to be in-demand at conferences, so there’s a lot of opportunity there to then teach what I’ve learned; testing is a lot like diet and exercise: people know they should be doing it, but very few actually are.

Testing is a lot like diet and exercise: people know they should be doing it, but very few actually are.

Now that my work is more focused on WordPress, I want to expand and pick up the periphery of WordPress, while continuing to grow my skills as an engineer.

Is it hard keeping your work separate from your home life?

It isn’t that difficult for me because 10up puts a lot of focus on having a work-life balance. Of course, it’s up to each employee to make that happen. Ivan, my engineering manager, takes time off around 5:00 PM to pick up his girls from daycare. He’ll then go back to work at 7:30 PM and I’ll sometimes get emails from him. I get my work email on my phone, so I see his messages, but I still try not to respond until the following day since it’s my evening.

With a distributed team time zones can be an interesting challenge. When Sudar, who lives in India, has adjusted his schedule to mitigate the eleven hour time difference. He works in the morning, takes the middle of the day off, and then goes back to work in the evening. He has a family, so he’s able to spend time with them, even though it’s an unusual work schedule.

Some people just don’t adjust well to remote work. They miss the social aspects of being in an office, like hanging around the water cooler, getting their lunches stolen from the break room, throwing paper airplanes (These are things I assume everyone is doing in offices, though I’m not sure as I’ve been out of that environment for eight months).

My office is in our finished basement. I don’t like the term “Man Cave,” but I also have my guitars, a big TV, and a couch down there too, so it’s pretty comfortable.

I make a point of checking that my team doesn’t need anything from me before I sign off for the day to avoid leaving anyone high and dry. Working remotely may not work well for people who are new to the workforce, at least if they haven’t yet learned to be accountable. It’s about communicating and setting expectations for time. We all have calendars, so make sure people know about your doctor’s appointment.

What are your interests outside of web development?

Well, I have a baby girl on the way, due in September, so the last few months have been all sorts of baby prep. We’ve been taking baby classes, getting the nursery in order, researching the best cribs, the best strollers, so that’s been eating up a lot of my time. It’s been exciting, getting to share this life change with my wife.

I’m really into music. I played guitar in a band in high school and in college I taught myself piano. Last year I got a deal on an electric drum set at Guitar Center, so now when I get off a really tense client call, I can put up an away message for fifteen minutes and pound away on the drums with my headphones on.

I also enjoy listening to music. I got a turntable for Christmas, finally, so I’ve been going to some of the local record stores to look for records. I don’t go with any particular album in mind, it’s more like, “Oh, cool. An old Roy Orbison album,” and then I pick it up.

Steve’s roasted coffee
Some of Steve’s home roasted coffee beans.

Since I’ve started working from home I’ve gotten really into coffee. Buying fresh-roasted coffee from local roasters is expensive, so I started roasting my own coffee in a popcorn popper. It’s really simple to do and I can get green coffee locally or online, so I’ll roast once or twice a week and always have fresh coffee in the morning.

The home-roasted coffee makes a good gift for friends and family. I love being able to say, “Hey we’re coming to visit and I’m bringing you a half pound of coffee, which was only roasted two days ago.” I put the roasted coffee in these little paper coffee bags and I’ll draw something on them, maybe come up with a pun for the name; my favorite has been “Heisenbuzz” for my bourbon-infused roasts.

What was your last roast?

The last green coffee that I roasted was Venezuelan. I tend to do a lot of medium roasts. Light roasts have a higher caffeine content whereas darker roasts tend to have a bolder flavor, but sometimes they can taste burnt. Medium is just nice because I can get the caffeine that I need to keep me going without totally annihilating my taste buds.

What are your goals for the year?

The big things this year are all centered around our baby being born and making sure that I’m able to remain productive at work while also being productive as a parent. I don’t want to be the father who realizes that his kid is all grown up and regrets not being there for it.

One of the benefits to working at home will be sharing those early moments with my wife, at least while she’s on maternity leave. After that we want to put her somewhere she’s able to learn and be social with other kids. My wife and I have been doing well and are ready to bring in another member of the team, you know?

Goal number two for the year is world domination, followed closely by infinite money.

Let me know when you figure that last one out.

I’ll fly my solid gold jet to you.

I’d like that. I’ll get my runway ready.

Please do.