Episode TranscriptCarrie: Howdy, Howdy. Welcome to Episode 120 of officehours.fm. I’m your host Carrie Dils. I’m excited to bring to you to an interview with Steve Grunwell. At the time I interviewed Steve (just a couple of weeks ago) he was a senior web engineer over at 10up. But literally hot of the press Steve has continued a new journey with a young company called Growella as their Director of Technology. Steve? I am wishing you well on your new adventure. Before we dive in though, I would very much like to thank today’s sponsor, SEO Bootcamp. What this is if you haven’t heard about it yet, is 3 days of live SEO Training. What the heck does that mean? Well, it means that you show up with a web site that you want to improve the SEO for and you are going to work on it (hands on) while you’re there under the instruction of Rebecca Gill. So when you leave, you are going to have stuff done. You’re going to have accomplished a ton for your web site. I’ll be there. I would love to see you. You can check out more information over at SEObootcamp.com. One more little thing to note before we hop in. That is if you like what you’re hearing on officehours.fm, I would absolutely love for you to share it with someone who you think could benefit from listening to the show. If you would like to join in the conversation, you can do that. We’ve got a slack channel now. You can visit officehours.fm/community and sign up to be a part of that slack group absolutely free. Without further adieu, here’s my interview with Steve.
I am super excited to introduce you to Steve Grunwell. Steve, how are you doing?
Steve: I am doing well. How are you Carrie?
Carrie: I am doing all right. For those who maybe don’t know you Steve, or haven’t met you yet, I’m sure they know of your company. You are a lead engineer with 10up, which is awesome. How long have you been doing that?
Steve: I’ve been at 10up since November 2014. So I’m coming up on two years right now.
Carrie: You’re like an old-timer.
Steve: In 10up years, yes. But I was really fortunate because when I joined Eric Mann took me under his wing. He was kind of like I am going to make sure that you’re set up for success. I’m sure you’ve crossed paths with Eric. He is just generally a good person and that’s the kind of stuff that he does. I’ve been at 10up for two years. For a while I as an engineering manager until we decided we’re going to do away with the EM thing. I’m like OK cool. I’ll just go to being a project lead on like all the things. Then just very recently I was promoted to lead web engineer. So yay!
Carrie: Nice. So does that mean that you are not as hands-on in the tech and more on the management side of things? Are you still getting all of your geek on?
Steve: I am getting all of the geek on. I think in theory being a lead web engineer makes me more of a let’s stand back and look at bigger strategy but at the same time clients need things done. When you’re working on like giant projects, it’s really beneficial to be able to say OK this person can lead this project. They understand what’s going on. Hopefully they can take teachable moments from that back to the large organization and act as a roll model, but at least a mentor, even if not in a formal capacity but say hey this is the challenge we had. This is how we approached it. This is why our clients are happy.
Carrie: You know. It’s really nice to have the whole teammate (I wanted to say synergy) but that sounds like the worst consulting “BS” word ever.
Steve: I just had bad flashbacks.
Carrie: I know, right? Hey we can help you create some serious synergy. It’s like when you’re a little bit stuck on something, there’s somebody else in organization that’s got that experience. They can hop in and help. It’s just nice to have people to lean on. Earlier you mentioned Eric, people who are invested in your success. That’s very awesome.
Steve: We also were on IRC that predated my time at 10up. When I joined, we were on HipChat. This year we finally switched to Slack. It’s been awesome to be able to say hey! I have this issue that I’m looking at. Here’s a link to the Beanstalk repo or let me drop code samples in Slack. We have entire rooms around engineering and support. It’s just kind of like can I reproduce this with someone? Can I get a second set of eyes on this? So as far as a collaborative environment, tools like Slack have just been fantastic.
Carrie: It’s kind of a double edge sword. It’s fantastic but I may or may not get some distraction coming from there.
Steve: A little bit. You definitely have to be on top of your notification settings.
Carrie: So would you for my listeners give a rundown of your technology background, some of your roots and how you ended up where you are right now?
Steve: Well I actually started as a video major in college. I was doing video work in high school and was like great video school! If I ever find anything I like more, I’ll change my major. In the spring of my junior year of college I got an internship at this small little studio called SeaLion Studio. Unfortunately, I don’t think they’re still around. It was a very like let’s focus on bringing in college students who are focused in visual communication technologies, telecommunications you know, these very like interactive experiences and give them some real world experience. I was working part-time there, as I was an intern. They decided to hire me but I was taking summer classes the following summer. So I was still part-time and they brought in a full-time video person. They said we do not have enough video work to justify…like we’re going to put this other guy on the lead for the video stuff since he’s here 40 hours a week. You’re here 24. Fortunately, about the same time our designer/developer left. This was a very small shop where it was like Oh! We still have client deadlines. Hey Steve? Do you mind taking a look at this PHP and trying to make heads or tails out of it. Before this I my programming experiences like TIA 3+ in high school and building HTML things, Netscape composer when I was in middle school. Then my dad was like no you can’t have a website. Well, look at me now dad.
Carrie: You’re hard-core teenage rebellion was making a website?
Steve: Oh totally! We had a network in my house. My brother had a computer. He was literally like 10 feet away from my bedroom. I would publish this website on the network so he could go visit it by manually opening the HTML file on the network share. It was really low tech. We used floppy disks as a distribution method. This was not exactly scalable. Keeping content up-to-date was awful but it’s not like an eighth grader has much to talk about.
Carrie: That’s awesome. So you were figuring out PHP?
Steve: Yes. Thank you for keeping me on track. So as I got into it, I was like oh! OK this makes sense. I can say echo here and hey it printed to the screen. I think I can do this. And if you’ve ever done video production in college it can get really frustrating because college kids kind of have a lot going on. To say hey we have to shoot and edit this video because it’s due Monday, people are like well I’m going home this weekend so I can’t do it until I get back Sunday night. It’s like I’m going to be up all night editing…and the coordination was really a pain. So with web to be able to say Hey I’m going to spend the weekend sitting on my couch and knock this thing out. It was a real breath of fresh air and I was hooked. So after my then girlfriend, now wife graduated (she graduated the year after me) moved back home to Columbus Ohio, I got a job in an agency here. I’ve been doing agency stuff since.
Carrie: I noticed in your bio that you’ve got some Rails work and ventured outside of…you’re a lot more than just a “WordPress developer”.
Steve: Yes and it’s a point of pride. Please don’t put a Rails test in front of me because I’m definitely rusty there.
Carrie: You’re rusty on Rails? That was terrible. It seems like the word WordPress or the phrase WordPress developer can be used a little bit derogatorily in the larger programming community. I know you go to a lot of conferences that are not WordPress specific. Do you see that? Like people will disdain the WordPress developer? What’s your experience with that been?
Steve: I’ve never experienced anyone being outwardly hostile around…like oh you work in WordPress? In certain crowds you certainly can kind of get that sneer. Like hey when are you gonna drop PHP 5.2 support? Ha Ha! How’s that autoloader coming? It’s frustrating but at the same time it’s kind of like you can stand back and go that’s a person I don’t have to pay much attention to. Clearly they don’t see what WordPress is as a community and as a platform. No it’s not the shiniest thing you know? There are over a decade of commits and the resulting technical debt from that. Not to bring this back to Eric, but PHP Tech 2015 (I think he’s done it a few other times) he did this great talk where it’s kind of like hey! If you wrote off WordPress a few years ago here’s all the stuff that you’ve been missing. It’s very much like WordPress can be an application platform and here are the cool things that you can do. It’s not just that blogging CMS or blogging engine. You want to be conservative with the term CMS from years ago. We’re doing a lot of really cool things. It’s also really nice to be able to tell stories about like where we’re working with some of the biggest publishers in world. So people who aren’t just running blogs. We aren’t doing Cat Blogs at 10up. We’re doing things for companies like TED, for Microsoft and for the Enthusiast Network. A lot of big names which is just kind of fun. It’s like oh you think WordPress can’t scale? You think WordPress can’t do this or can’t do that? I can point you to some cases to prove that you are so very mistaken.
Carrie: Yeah. You guys are a WordPress VIP partner?
Carrie: Ok. Yeah like Microsoft is probably like…just doing some Microsoft today no big deal.
Steve: Admittedly Microsoft has been one of the clients I’ve done a lot of work with lately and it’s really a lot fun talking to people. They’re like oh so? You’re doing Microsoft with WordPress? It’s probably just some kind of tiny little micro site, right? I’m like no. It’s Microsoft’s News Center, the official news outlet, windows blogs, and Microsoft blogs. It’s like some major things, event sites, all the press information is disseminated through these channels. It’s like if we’re not rocking it there could be big effects on Microsoft. They’ve been extremely happy with the work that we’ve been doing with them. It’s just really cool. This is Microsoft! They’re embracing open source. We’re getting to solve a lot of interesting problems. It’s just really kind of a cool thing! I don’t want to be like star struck.
Carrie: That’s awesome, especially the point about them embracing open source. When you think open source what’s the antonym of that? You think typically Microsoft and that’s cool to see them embracing open source.
Steve: It’s been very much in the past few years especially since Satya Nadella came in. There is this huge refocus of wanting to play well with others and wanting to embrace open source. We don’t want it to be like you’re using Microsoft products or you’re using everything else. So they’ve done things like now on Azure you can run Linux VMs. They have native bash. It’s been an interesting change especially from like when I first switched to Apple and when I was doing video work. I’m like Ugh. Microsoft. I can’t imagine using them again. Now it’s like oh crap! Maybe I wrote them off to soon because they are doing some cool stuff.
Carrie: So working with enterprise-level clients is just a whole different ballgame. From maybe an Ecommerce, your average Ecommerce shop or someone who is doing more of like a brochureware site. When it comes to enterprise, a lot of times with these third-party applications you have to consider and how you interact with those. Can you kind of paint the picture? You can talk about Microsoft or maybe just sort of an average project if there is even such a thing. What are some of those considerations both in terms of the tech that you’re using and your development workflow with your peers when you’re working on those bigger projects?
Steve: I guess I will start by giving a huge shout out to our systems engineering team led by Zach Brown, our Director of Systems Engineering. It’s just been awesome to have this dedicated team. With every other agency I’ve worked in, it’s kind of been all the developers are also kind of sys admins or maybe there’s a sysadmin but they’re more like “I have to manage the exchange server” and all of that. With the Web server stuff they’re like “I don’t want to touch it”. But you have this really talented team that can build out this very scalable infrastructure. It’s just been really cool to see that you don’t need these clusters of like millions of servers all running with everything. It’s just like let’s be judicious about caching. Let’s make sure that we’re not running unnecessary processes. We have libraries that have come out of work that we’ve done. John Bloch, who is another lead web engineer at 10up along with (I believe Eric worked on it) wp-async-task. It is a library. It’s available on GitHub that basically lets you say hey! I have to do all of this process heavy stuff as the user is saving a post. Obviously we don’t want our editorial experiences to be tied up. Like it’s taking me 45 seconds to publish this post because it’s doing a bunch of stuff in the background. So John and Eric wrote this library (while they were here at TechCrunch) that lets you offload this to a secondary process. You can run tasks asynchronously so you’re not holding up the entire process. We’ve also been doing a lot of work with general performance. We have our 10up Engineering best practices also available on GitHub.
Carrie: It’s an amazing resource.
Steve: I am in that, but more than I care to admit. I’ll be doing code reviews and I’m like well I’d better make sure I’m linking to the proper thing because I learn new things all the time. I need to subscribe to see what changed. What am I doing wrong that we hadn’t defined before. Now that documentation is also getting a renewed level of attention. Taylor Lovett (TL) has been putting a lot of focus on that. Just making sure that we have a solid resource, something that 10up does to give back to the community and to help encourage well-built software.
Carrie: By the way for those of you who are listening, I will post a link to the 10up Engineering Best Practices. I appreciate that y’all released that back into the community. It does have the added benefit of making sure that we’re all on the same page when it comes to coding standards and quality. That’s really cool. I’ve got it bookmarked.
Steve: It was admittedly one of the things that turned me onto to 10up originally. I was kind of aware of 10up, but didn’t really know people there or anything. Shortly before I started, they published this stuff. I was like “Oh yeah. This is going to be a good gig”.
Carrie: Sorry. I got you off track. I jumped in with my best practices love and got you off track on talking about project builds and your enterprise experience.
Steve: Yes. In addition to getting best practices out there, I’m building libraries and tools to help standardize processes and generally use development. We’ve also been playing a lot with (not much of this is public at this point) because we don’t have a solid product to say here everyone. Go look at this. Luke Woodward, who is the Associate Director of Engineering has been pushing for a good composer-based workflow using WP Packagist (better written than said out loud I suppose). What can we do to really streamline these sites? Rather than looking at it as I’m building a WordPress site, think of it as I’m building an application and WordPress is a dependency. So being able to approach things like here’s a composer repository and here’s a database. Put the two together and you have your site. It’s a really exciting different way of looking at WordPress but also makes things easier to manage. Build servers are becoming big. We’re playing around with DeployBot a lot. We have that running on a number of client sites at this point. Again just making sure that as we’re doing code reviews that we don’t have things like compiled assets in the repo where suddenly we’re getting merge conflicts. Or we have to re run Grunt or Gulp. We are working with the ES6 right now. We actually…Vaskin arranged with Wes Bos to get the course for the entire engineering team.
Steve: So there’s like no excuse for us to not be writing ES6 and being awesome at it. It’s just continually trying to push everything forward, making things in a modular component like fashion where we’re able to move quickly and build quality code. That will ensure that our clients will get the best editing experience, our visitors get the best experience in their browser (or device) and make sure that engineers continue to be challenged.
Carrie: Earlier you used the phrase technical debt. First, if you could just define that for listeners. Secondly, how with what you’re talking about plays into that by taking the time to set up things properly the first go-round versus maybe doing the quick and dirty?
Steve: Absolutely. Technical debt is kind of an amorphous topic. At a very high level technical debt is where we’ve made a decision. We’ve done something and now moving forward we have to maintain that. We have to continue in that process or back out of it and try to go in a different way. It’s the…I don’t want to say that it’s imaginary because it’s certainly very real…but the idea that you’re building up this debt. You introduce a new feature. Moving forward you need to make sure that feature isn’t breaking. Thus you have this debt. Whether it’s extra time during testing, whether it’s longer QA or UAT periods. You need to make sure that everything that is being introduced continues to work or every process that you put in place does. If you say well we’re kind of doing the quick and dirty thing and we’re going to commit compiled assets. Then suddenly code reviews become more difficult because you have that technical debt of great! It’s doing a diff on compiled files that I don’t care about. Even if it’s just let me scroll past this in GitHub or Beanstalk. That’s still time that’s taken. So the more you can do to to kind of set things up at the beginning, or to have a plan, or at the very least to track your technical debt and find time to say ok. We’re going to back and chip away at this. We had to kind of rush something out because of a client deadline or because it needed to be hot fixed in prod because it was a huge security hole or something. Make sure you’re tracking that and then going back and saying ok. We’re going to address this and make sure they we’re fixing this and doing it right making sure it has documentation and making sure it has tests around it to ease the…oh no! Someone came into this project and now they have no idea how to wrap their head around it. Or you come back to the project that you worked on a year prior where you say “I have no idea what I was thinking!” Whatever we can do to minimize that is definitely in our best interest, our clients best interest and in the general best interest of (not to get hero worship-y) the greater good.
Carrie: You can go for the greater good. It’s ok. I like thinking about that and certainly have kicked myself for decisions I made in the past that make current projects a pain in the rear because I did something not the best way the first go around. So do you think there are times (not in the context of 10up because I understand it’s an agency and you’re working with other people, and there are systems, procedures etc.) Say you are doing the one-off project and it was throwing up a team website for your baseball team or something like that where the time involved to go ahead and do all that proper infrastructure probably takes longer than actually just installing a theme and going to town. Would you ever skip some those things or is it so ingrained now that you’re going to set up workflows even on a little project?
Steve: I think every process in order to be effective needs to be scalable. So you know whether it’s a QA plan or to provision your new site, if it’s going to be that this process is going to take longer than the “real work” then there’s something wrong with the process. But if you go ok, this is my Little League site. (Yes. I play Little League, a twenty-year 29-year-old man) I’m just really that bad at sports. The sad thing is, I’m the worst person on the team. Yeah. This Little League site doesn’t need the care and attention that I might put into launching this new site for Microsoft for instance. But at the same time, I’m not the kind of person who is ok with things being out there and sort of looming. Maybe it’s a little bit of like (I always joke about by my copious amounts of free time) I’d rather spend the time up front so that it doesn’t become like an urgent thing later because I know that something is going to go wrong at the worst possible moment. You’re like Oh boy! Let’s go on vacation. You’ve got the car packed up and the baby is ready to go. My wife is like come on honey! Let’s go! You’re like no! I just have to re-provision this entire infrastructure because something exploded and the Little League tournaments are right around the corner.
Carrie: Good answer.
Steve: So it’s a scalable process but still half a process. Other times with side projects I use this opportunity to say ok. When you’re doing client work you can’t always say we’re going to target like 100% test coverage regardless of the fact that with 100% test coverage you’re probably testing things that don’t need to be tested. That can be a point of debate. I’m also the person who when I’m working on GitHub projects, like the last few plugins I’ve written using wp_mock, or using PHP unit I have had like 90 to 100% test coverage on the things because I can. It’s just like those really cool to have that badge on my GitHub read me that says 100%. Codeclimate you know 4.0 things. I have a composer library I wrote last year called wp-enforcer that basically uses the WordPress coding standards and PHP Code Sniffer. It installs it as a composer dependency. You can say you literally cannot commit unless pass PHP Code Sniffer. It started as kind of like let’s help people catch things like input sanitization or output escaping and all that. Then it just kind of turned into ok. Can I beat myself? Can I beat this code sniffer and not have it ever yell at me? So it’s the little things you do to keep yourself entertained and challenged I guess.
Carrie: It’s the badges. It’s all about the badges. Clearly you’re a lead engineer. You’re fantastic at what you do. Thinking back to maybe when you were a junior developer for folks now that are more junior or maybe looking for some advice. When we look at the landscape of technology, I mean even if you just want to look at different types of tasks that you could run…do I use Grunt or do I use Gulp? Do I use Sass? It is overwhelming and you’re probably not going to learn everything because that us it very practical. For someone who’s getting started or wanting to beef up their tech chops that is sort of looking for direction…What is the most valuable for me to put my energies? What would you say that?
Carrie: That is fantastic advice. Wow! We’re already at 30 minutes here. I guess I need to wrap up. Steve? I need to keep talking to you. Are you coming to WordCamp US?
Steve: I don’t believe I am. I have a young child right now so that kind of puts the hinderance on some travel plans sometimes. I am speaking at PHP World in Washington DC later this month. I think I arrive on November 15th and then CodeMash in January. I think I am taking December off between the holidays and conference talks in November and January.
Carrie: Awesome! Well I will just continue to talk to you online until that time comes. It was great visiting with you today. Where can folks find you on the web?
Steve: I blog occasionally and by occasionally very rarely at stevegrunwell.com. @stevegrunwell on all the social networks that matter.
Carrie: Thanks Steve. I appreciate you so much.