Anthony Navarre started using html after his first indie film experience and quickly learned that html by itself wasn’t going to be enough. After touring us around Thoughtbot’s Denver office, located in the center of the Galvanize work-space, we got down to business. Anthony tells us what brought him to Thoughtbot and what he has planned for the future.
Brent: I’m Brent Weaver, and you’re watching uGurus,the must-watch web series to become a more profitable and in-demand web professional. Today I’m hanging out at Galvanize in Denver, Colorado. I’m here with Anthony Navarre, who is a developer at Thoughtbot. Welcome to the program.
Anthony: Howdy. Thanks for having me.
Brent: So Anthony, what’s your background?
Anthony: I actually got started in a completely different industry,doing something very unrelated to web development. When I was in my last year of high school, I tried out for an indie film at Susquehanna University in Pennsylvania. I was just about to go into Penn State and start this whole acting and film and video thing for myself. I was so excited that I got one of the four leading roles for the indie film. Of course, the following summer when we filmed the thing it turned out to be a complete wreck and nothing happened with it. My first semester in college I got a call from the producer, though, and he said “Hey Anthony, I really liked working with you. I have this idea for a startup,and I’m wondering if you can help me to build it. So how do you feel about learning HTML real quick?” [Laughs]
Brent: [Laughs] So acting to HTML?
Anthony: Yeah exactly.
Brent: Makes total sense.
Anthony: Yeah so there was actually a connection between the two. The website that we set out to build was an indie film centered website. We did all this kind of short form narrative content and we sourced it from other places, for example filmmakers that we knew, we did calls for submission,and stuff like that. We did it a dinner-and-a-movie kind of style. We would film interview segments where we would host the videos we were presenting. That meant that of course we needed to build all this other stuff around that. Not only did we need to manage that content ourselves, which meant that HTML by itself probably wasn’t going to get us very far, but also just that content by itself in QuickTime 56k wasn’t really as compelling. We ended up wanting to do movie reviews and some other features. Pretty soon I found out that I would need something other than just HTML. That was what led me to PHP and eventually full systems and wanting to do more with it. So that’s where I got my start and eventually I landed here in the Boulder-Denver area. In fact, I saw your interview recently with Kevin Menzie. I used to work with him at Slice of Lime. That was my first gig here. There I was doing WordPress sites and PHP, mostly for startups. We worked with Tech Stars quite a bit at the time. And then more recently I worked at Factory Design Webs, which is an ad agency and so I got to cut my teeth on bigger projects. There I worked on the North Face, Oakley, and Audi of America, so I got to see what it’s like to take care of much more infrastructure as a developer.
Brent: So now you’re at Thoughtbot. Tell me a little about Thoughtbot.
Anthony: Yes, so my time at Factory, while I learned so much, made me really miss working with start-ups. Agile has been thrown around a lot in any kind of conversation you can imagine. But when you talk to start-up folks who’ve been through the trenches and have seen it crash and burn and have also wrapped their heads around what it takes to do well, you see Agile actually take shape. You see people respond to the feedback you give them and immediately start to do it. So when you talk to somebody who owns a start-up and you say, “Well this is the way we probably ought to architect your app,” you’re doing it the next day. You don’t have to go through any kind of bureaucracy or red tape or anything. There is no decision by committee. Everyone gets that we need to move forward. We pick the best ideas we have, give them an honest try, and then measure the results of that. And so I was missing that so much that I decided I was going to look for an organization that I can join up with that is going to already get that before I even walk in the door. Thoughtbot was an obvious choice for that.
Brent: So who is a typical client for Thoughtbot?
Anthony: So most clients are startups or smaller companies that are maybe a little established. They’ll often come to us not necessarily knowing what they want to build yet. So for instance the larger company that’s more well-established might come to us saying we have this specific problem that we want you to solve, usually by means of a mobile app, or a website, or something like that. But they don’t necessarily know exactly what they want to build. Same thing with a startup. They may come to us with an idea, they know the problem, they know the domain, and they know their customers, or their potential customers. They just don’t yet know exactly what they want to build. So we come in and not only act as developers to build it, but we also have to fill in all those gaps and figure out what we even need to build in the first place. So we do a lot of consulting and design work around “what should the product be to begin with?” That way we can kind of make sure that what we build is the right thing to build.
Brent: You guys work primarily with startups. So is that obviously funded start-ups that have money to pay you guys, or are you taking some kind of piece of the action?
Anthony: I think there’s been a couple of situations where we have considered equity. I’m not sure we’ve actually done those. I think maybe we’ve done a few, I’m not sure. But most of them are startups that are either boot-strapping out of their own pocket, or they’ve got at least one or two rounds of funding. A lot of times they might already have a product that’s on the marketplace and they want to start over because they know they’ve made some mistakes with it. Maybe there’s too much technical debt, or maybe it’s just not solving the problem well enough for their customers and they want to figure out why. They’ve got enough of a handle on the problem that they’re already making revenue, and they’re already solving some of the problems, but they want to do a better job at it. I think that’s the majority of it, if I had to guess. But the overall picture is they come to us with, “Hey we’ve got a problem and we know that you guys are good at solving problems.”
Brent: So what are some of the techniques you guys use to solve those problems. Do you guys just sit around a room and white board or is there any kind of method to that madness?
Anthony: Yeah, so one of the biggest things we employ is the product design spread. So this is something that Google Ventures has brought to the forefront as a design practice. It’s a whole process. The idea is we get the client and a bunch of ourselves in a room together and we start talking about the problem and we follow some guidelines. For instance we’ll go to the whiteboard for solving a specific problem and then we’ll do some silent voting on what we feel is the best solution for the problem. We’ll do lots of brainstorming activities and things like that during that session. And all of that process is outlined on our playbook and we try to make all of that really transparent so that everyone in the organization can participate and all of our clients can also participate. One of the things that I see a lot is an issue with the word “creative.”When people say, “well you have creatives and you have developers,” I take issue with the word “creatives”, because everyone can be creative, everyone can participate in this discussion. So the main premise is getting everyone in the room together to solve the problem, and no one is more worthy than anyone else to contribute to the solution.
Brent: You mentioned having a playbook, maybe give me some specifics around that. This is a given book that you bring in to meetings with you guys that says “this is how it’s done”?
Anthony: It’s not like we bring it into meetings, we have it online. It’s on playbook.thoughtbot.com. It outlines everything there is to know as an employee at Thoughtbot. Everything from technical stuff in terms of recommendations, process stuff like how we run our product design process, and how we do Agile from day to day. So it’s not like we’re saying “here’s the prescription and here’s how you should do it.” It’s more like “here’s some stuff that’s worked for us, here are the details, and we can change that as we go along.” In fact, Requests, so everyone has the opportunity to do so. So it’s not just something that comes down as a mandate from on high.
Brent: So you’re in Github with your company playbook, doing Pool Requests about it. That’s great. That’s a fantastic method of doing that.
Anthony: Yeah, and it’s worked really well for us. Besides just the touchy-feely side of it, “hey I get to contribute to what it means to work here!” it’s also really transparent for our clients. They get to see how we work. We understand that you as our client are going to know about your context and what you need that we do, but we’re also showing you what works for us. And we can figure out where those two things meet. Since it’s all publicly available, we’ve recently decided that instead of making it a marketing piece and pitching it as something for our clients to go and consume, we’ve actually re-targeted it recently so that we’re focusing more on ourselves. It’s first and foremost for ourselves to make sure we’re unified in our approach. It’s a guide, so the rules are there to be broken when we need to do something that’s slightly different, whether that’s a client need or a particular project in mind that needs a bit of an adjustment.
Brent: You mentioned that everyone that walks into the room has a creative voice. The other evening in Denver, you had a presentation all about creativity and the creative process. Maybe share some of your views on how to be more creative.
Anthony: Sure. So a lot of the stuff in the product design sprints center around getting stuff out of the way that prevents you from being creative. As humans, we tend to have this aversion to putting your neck out there and saying, “hey, this is my idea. Is it good or not?” because in essence we’re afraid that it will be judged. So a lot of the stuff we do in the product design sprints are designed to take away a lot of those things that make us fear that we’re going to be judged. For instance, when we’re finished doing some wire-framing on whiteboards or something, we put in some time limits. So because you have a time limit you don’t have to worry about making it perfect, you just have to get your idea out. You’re removing a little of that fear about “oh I need to make it perfect”. I think a lot of designers that I’ve worked with want to get every pixel right. By putting the time limit on there, that’s no longer an issue. And then we might do silent voting afterwards so that no one knows where the votes are coming from, we’re just collectively choosing the best idea. These aren’t our ideas either, we just re-tailored them and put them in place, but the idea is getting ourselves out of the way so that everyone can feel safe to participate–there’s no barrier to participation. And that applies to the rest of our work, too. So that’s how it plays out in the product design sprints, but when it comes to practicing Agile, when you’re using something like Trello or Pivotal Tracker or Trajectory or something to capture all of your ideas and the story cards and stuff, it gets really important that our client feels like they can go in there and mess around with all of the content and move cards around and do what they want. We need some coaching and guidance around what’s going to lead to the best results there. But what it comes down to is that it’s right there, it’s easy, and you just have to type, and thus participate.
Brent: At Thoughtbot as a developer, do you work a lot directly with clients or does that go through PM? How much actual client interaction do you guys do?
Anthony: We prefer a heavy degree of client interaction. In fact we actually require that most of our clients be there in person or are at least able to do telepresence for things like stand-ups and retrospectives at the very least. We’ve found that it goes even better if we’re able to sit with a technical stakeholder and at times even do technical pair programming with them. The idea is we want that feedback cycle between what our client wants and respects and what we’re delivering to be really tight. The best way to do that is to allow for a lot of high bandwidth communication. So we use things like Campfire and Trello and whatever we can to allow for as much asynchronous communication as we can, but also have opportunities for a lot of high bandwidth synchronous communication as well.
Brent: You mentioned a couple of tools. How do you guys decide as a team which tools you’re going to implement versus which ones you guys are going to open up, create a free account, and throw away. How do you decide which ones actually become a part of that process with your customers.
Anthony: There’s a lot that goes into that. So for starters, our clients become a bit of a testing ground sometimes, because our clients may have a specific need and we need to go in and do some research. We’ll go and figure out which might be the best tool to fit that need. But then of course we need to test and verify, learning from that example. So something we do on pretty much every project we work on is at the end we make sure that the whole company sees some sort of synopsis on how it went and what were the new tools. That covers a lot of bases, not just the tools. We get process improvements through that. We get communication problems identified, etc. Also, our Fridays are devoted to just investment time. Whatever we want to work on, whatever’s excited us, whether it’s open source or we want to go check out a new tool, all of that gets called out in our investment time. So on Fridays, if I want to build something–as opposed to pulling this other thing off the shelf–that would be my time to do it, and then report it back to the rest of the team.
Brent: So every Friday, everybody at Thoughtbot basically gets that day to do personal or company investment in growth, learning, or pet projects?
Brent: Very cool. Do you have any specific clients that you’ve recently worked on projects for that you can talk about that are really cool, something you can share with us?
Anthony: I don’t have any that I’ve worked on recently that I’m able to share. All the stuff that I’ve been working on is in stealth mode right now. But Thoughtbot as a whole has had some pretty interesting stuff. I know that we worked on LevelUp. We worked on an interesting project for MIT, which later became a partnership with Harvard. It’s EDX and it’s online classroom type of stuff. That ends up dovetailing nicely into a lot of stuff in our Learn products. We focus a lot on education. That way we’re not only helping ourselves be better developer and designers, but we’re also helping the rest of the community and our future co-workers. We recently open-sourced the Learn website so that people can see how it’s built.
Brent: Is this Learn.com?
Brent: OK. I’ll definitely have people check that out. Has there been any project that you’ve worked on–and this could be at Thoughtbot or wherever–that’s just crashed and burned and just hasn’t worked out, something you want to share?
Anthony: Well I won’t name the client [laughs], but yeah I think every developer has at least a few war stories about stuff that didn’t go so well. For me, there is one that comes to mind. This was at one of my other gigs, before I worked at Thoughtbot. One client had this API migration that was coming up where the data they were getting was going to come from a new provider. They knew about this far in advance, but we didn’t know about it until the last minute. The timeline got moved up because the API provider decided, “we’re going to pull the switch early.” So we had all of this already working against us, and then in the midst of the panic, I was doing some migration with some data, I fat-fingered something, and of course I didn’t make a backup. I’ve been doing it for 10 years and I should know to make a backup, but I was in a panic. Even with experienced developers I’ve seen that happen quite a bit, and I hope that I’ve now learned my lesson. But it’s that situation where the tides are already against you, and you panic and make some stupid mistake that you wouldn’t otherwise. We ended up eventually being able to solve the problem overall with a little bit of data loss that turned out to be relatively inconsequential, but it was still nerve-racking [laughs]. I lost data, and that’s the last thing you want to do as a dev.
Brent: What are some of the things that you’re doing now to stay up on trends and the tools? The web is always changing, there’s always new stuff coming out, new languages, new user technologies. What are some of the things that you do in your daily practice to keep on top of that stuff?
Anthony: Historically, I’ve always done things like trolling on Hacker News or just Googling for problems as I’m encountering them to see how others have solved the same problem and weighing how they’ve solved them against my own thinking to see if it fits the context at hand. And of course there’s some blog articles along the way that I’ve referenced more frequently than others. But to be honest, since coming to Thoughtbot, it’s become a lot easier for me, because so many others are constantly doing the same thing and posting on Campfire, “hey check out this article that I found.” And then we run our own blog, which is very technical-centric, so just by keeping up with that alone I get exposed to a lot more than I otherwise would have. And then of course I also like to tend meet-ups in the area and try to stay connected to the local community so that when others say something I at least have it in the back of my mind, that I should ask that person about that, and ask them what it was that they were describing to me, so I can go see if it fits my problem at hand.
Brent: What would you say you’re best at?
Anthony: That’s a good question.
Anthony: [Laughs] No, not at all! I’d say I’m probably best at mentor-ship, at teaching other devs. Right now I’ve got an apprentice, Eric, in our office. We run an apprentice program called Apprentice IO for bringing new devs into the mix and making sure that within a certain time they are up to Thoughtbot standards. Because once you’re in as a full-time employee, it’s really flat, everyone is either a Thoughtbot dev and they’re expected to be full-stack and a good consultant and good at performing their own project management stuff–because we don’t hire separate project managers either. And if you’re a designer, you’re expected to know CSS and HTML, you’re expected to do more than what the industry tends to say is a designer. What I find to be the most fun is to watch someone grow over time and learn the stuff much faster than I could [laughs]. I’ve got all this experience that I can just give them the paths that are going to be the least painful and that way they can avoid a lot of the stumbling blocks that I had. It’s really fun to watch. I’ve been doing it for a while now, mostly on a one-on-one basis with junior devs, and now I’ve also started to take that into the G-School program here at Galvanize. I mentor for that program as well. It’s just really fun to watch peoples’ light bulbs go off as they’re coding.
Brent: What could you say to other freelancers that are out there that aren’t working with a team? For example, how big is the Thoughtbot dev team?
Anthony: Here in Denver, it’s about 9 people. We’ve got a total of about 65 or 70 people full-time. We’ve got offices all over the place right now. That’s not included the premises.
Brent: So you’re working with a pretty decent sized team, how does that compare to freelance life where you’re just a solo developer and you don’t have a team?
Anthony: I think the main way it’s different is you’re left by yourself to come up with all the answers. I mean you’ve got the internet [laughs]. To answer the first part of your question, my advice to those people is to find opportunities to work with others. Because it doesn’t matter how smart I am, my ideas are always going to be better if they’re at least challenged by others. So if you’re a freelancer and you don’t have the means or the time to go and have full process with a team of other people, at least vet your ideas and make sure someone else is challenging them. There’s plenty of times where I’ve encountered a situation where as a developer I’m building something that I think is going to be perfect, what the client wants, but then it turns out they were expecting something slightly different. “That isn’t exactly what I had in my head.” And if you can avoid that by having communication earlier in the process and getting other people to challenge your ideas and get you to come up with better ones, then the end product is going to be that much better. Then you’re going to be much more likely to get repeat business from that client, and they are going to be more likely to refer you to other clients.
Brent: What trends are you following right now?
Anthony: So right now I’m paying a lot of attention to front-end Java scrip frameworks. For those of your audience who are developers in things like Backbone JS, Knockout, etc., I’m focusing on Angular right now, and that’s getting me into a realm that’s called functional style programming as opposed to object-oriented style programming. And for those in your audience who aren’t so technically-inclined, it’s really just a different style of getting things done that isn’t necessarily superior to object- oriented programming or inferior to it. It’s just a different style that’s forcing me to learn new ways to think about architecting my code. What it means for my end users is I’ll be able to deliver faster, snappier experiences and that it’ll be with less code to do so.
Brent: That’s definitely good for most websites.
Anthony: Exactly. So the idea is in the long run I’ll be keeping my cost down for my clients by delivering less code, because it’s easier to maintain. And the interface will be snappier, because it’ll be using function rigor as opposed to other techniques.
Brent: So what’s next for Anthony Navarre?
Anthony: This year one of my major goals is to give back more to the development community. A lot of other developers will share my experience. We’ve spent a lot of time learning from other sources. Academia has a hard time keeping up with how fast technology changes. I’ve relied so much on people who just give back to the community through open source or through blogging. They’re just sharing their ideas, they’re not expecting me to pay them to get these ideas. And so I think it’s high time that I take some of my experience and give it back to the community. I’ve been around long enough to have some strong opinions about the right way to do things and some stuff that’s going to get you into trouble. I think it’s only fair for me to start putting that out there. Where it’s wrong I’ll get the benefit of people challenging me and telling me so [laughs], and where it’s right, hopefully it’ll help people out and they’ll be able to avoid some of the stuff that took me longer to learn.
Brent: Now are you doing that through your own blog or is it through Thoughtbot? How is that happening?
Anthony: I’m starting with speaking. Since I have a little more of a background in theater, it’s a little easier for me to crack that nut, because I just get up on stage and give a presentation. So I’m going to start touring the talk I gave at Refresh Denver and eventually submit it for a regional conference or something like that. I also want to start doing some blogging. I’ve been having this mental block. I think it’s the same thing as when you get up to the white board and you say “I want to do it perfectly!” and I end up doing the same thing with my writing. I need to get over that and start doing some writing in 2014.
Brent: Very cool. Well we wish you luck and a great 2014.
Brent: Thanks for joining us and stay tuned for more great content from uGurus.com.