The Rise of the Front-End Developer
On May 21, for the Test in Production Meetup on Twitch, Yoz Grahame, Developer Advocate at LaunchDarkly, moderated a panel discussion featuring Rebecca Murphey, Senior Technical PM at Indeed, and Ben Vinegar, VP of Engineering at Sentry.
The panelists shared about their own backgrounds and career paths, how the scope of front-end engineers is evolving and becoming more operational, how hiring managers like themselves evaluate front-end engineering candidates, and more.
Watch the full panel discussion below.
Yoz Grahame: Excellent. Hello. And welcome to Test in Production for May 21st, 2020. Thank you for joining us. Today, we are talking about how to become a better front end developer, or how to find one if you're hiring them. Our guests today are two superbly experienced front end engineers, and with several books, and many, many talks between them. We have Rebecca Murphey, senior technical lead at Indeed.com, and Ben Vinegar, VP of engineering at Century. Thank you both so much for joining us today. [crosstalk 00:00:39].
Ben Vinegar: Happy to be here.
Yoz Grahame: Thank you. Thanks so much. We're looking forward to this, especially you're both so experienced with front end and you've both had already long and distinguished careers, if that doesn't make you sound too old. And to start with, I'd like to find out more about those, what the important steps were in the journey to where you are today. Let's start with Rebecca. Tell us when you started, but what was your journey here like?
I've taken a very winding path. Today, I am a senior technical project manager at Indeed. And I've been there for about four years. Prior to taking on the tactical project manager role, I was in a senior engineering manager role. The technical project manager role was actually pretty new. But as the engineering manager there, I grew a team from zero. Well, one, if you count me I guess. A team of me to a team of about somewhere between 20 and 25 software engineers. Plus product, QA, [inaudible 00:02:22] et cetera. All focused on trying to level up Indeed's front end engineering capabilities.
Rebecca Murphey: Hopefully I can share some of that experience today.
Yoz Grahame: Fantastic. Thank you. That is quite a journey, and it especially shows that people can come from sometimes quite nontraditional backgrounds. Although still, you started in engineering, but doing something quite different than you're doing today. Ben, how about you?
Ben Vinegar: Yeah. For me, the path to front end engineering began with, I don't know, just went to college, studied computer science. I just wanted to make video games, which I think is how a lot of people get into programming early in their careers. "I want to make video games." My first jobs were writing C in assembly. I was working on graphics drivers for video cards, which is pretty cool.
And then I saw a presentation, actually about the same time, maybe around 2005-2006. A presentation on Ajax and Ruby on Rails. It was like a local agency who was dabbling in those technologies kinds of presentation, on campus in Toronto. The University of Toronto. And I was so blown away by what was possible. I think they were showing a demonstration of, Rebecca, if you remember this, like Endless Pageless, where instead of having to paginate and the server, you keep clicking one, two, three, four, five, and the server generates new responses, you just keep scrolling and the browser just keeps refreshing new content.
Yoz Grahame: Right. Again, that's quite amazing, doing drivers for graphics cards. Sound remarkably low level compared to jumping up and down, different ends of the sack in terms of complexity. Or is there actually a lot in common there, would you say?
Ben Vinegar: Well, you're plotting pixels. I'll take some [crosstalk 00:05:10] from Rebecca, right? I think that there's ... why did I get into graphics? Because I like to visual ... there's like this sort of visual medium to programming that interested me. And I think that getting interested in web development and front end development, into product design, is sort of related, to some extent. I think that the interests are connected. Maybe the technologies are different, but the end goal, the desire to just plot pixels and good experiences are the same, if that makes sense.
Yoz Grahame: And that's great. It's the theme there, of having a continual ... a thread of principle, of what interests you, of what you're trying to achieve. It reminds me of Brett and Victor's famous inventing on principle talk, about having a single set of concepts that you're trying to achieve through premiere. Rebecca, would you say there's ... the various topics you covered, and I was looking earlier, at the talks you've given. There are so many and they cover so many different things. Can you think of any particular guiding principles or motivations that have carried you through your career?
Rebecca Murphey: I think kind of similar to Ben. The structured presentation of information, and building systems that can help you with that. Even back to my desktop publishing days, and when I was working in an advertising agency and doing desktop publishing there. You had some people who were building things. They were doing it on computers but using tools very similar to what you would use before there were computers. Rulers and squares, and those sorts of things. In high school, I had one of the actual photo cropping tool. Not the picture of it in Photoshop, but the actual one.
Yoz Grahame: Oh yeah.
Rebecca Murphey: When I was doing high school yearbook. Truly, this concept of how do we take these kind of manual processes and turn them into structured and efficient delivery, presentation delivery of information? Yeah, that's been a theme in my career since, I don't know, coming up on 30 years now, before I had a career.
Yoz Grahame: It's amazing too, to that, because it's on one hand, it could be so simple, and yet so continually elusive. We've been surrounded for hundreds of years, with good examples of simple and effective visual communication. And yet we are still, even more [inaudible 00:07:53] examples, of how to get it wrong, and how we continue to get it wrong.
Rebecca Murphey: Yeah. And I think it's been really interesting too, like making getting it right accessible to more people. And that's in a scene, especially in my recent group too, of you shouldn't have to be experts in front engineering to ship decent, at least, user interface. And so thinking about how do we make that possible for people, to be successful, without having to have a decade or two of experience.
Yoz Grahame: It used to be that you could achieve a whole lot in front end with a relatively small set of tools, assuming you knew them pretty well. And hope that's the case, but how do you see front end engineering as having changed over time? Especially what do effective front end engineers need today? Rebecca, start [crosstalk 00:10:02]?
Rebecca Murphey: I think it depends on so much on your ... Ben and I were talking about this yesterday, how I know for me, my understanding of what front end engineering even is has evolved over the years. Not just because front end engineering has evolved, but I've gone from working in a tiny agency, that basically had three people working at it, to a slightly larger agency that had a few more people in it. And then a startup that had a few more people at it. And now, at Indeed, which has ... I've lost track. I think 10,000 or 12,000, working not on engineering, of course, but it's the biggest company I've worked at.
And so I think front end engineering is different, depending on the nature of the organization that you're working at. Not just where you are in your career, but what you need to know if you are at an agency, say building lots of linting cages and micro sites on very tight timelines. You bring a totally different skills than if you're working in Century, with Ben, where you are engineering systems that will be used by other people, and they're never done. They go on forever and ever. And there's no deadline of ... I'm sure there are deadlines. But there's no date when you're like, "All right, on to ..." you know, Century is working on a product that's such a different experience.
I'm not answering your question so much as just saying it's a really hard question to answer, because the answer varies so much based on the nature of your work.
Yoz Grahame: Yeah.
And then JQuery shows up and it's like, "Hey, what if you didn't have to do that to like a huge degree?" And yeah. It just sort of blew your mind. And that just made everybody's lives a little easier. And I would argue that even JQuery has probably been almost like the inflection point for where people started treating this as a career more seriously, because if it did feel a little bit like you were just slamming your head on a wall all day, [crosstalk 00:13:06].
Rebecca Murphey: I think it's also interesting about back then. I don't know about you, Ben, but when I was working at that little agency, you would write your code and you would open up your FTP app, and drag a file from your desktop into production. And so the active deploying code, I think part of that was the nature of it was a tiny place, and part of it is the nature of so much more has ... we didn't com- we still don't compile, but we didn't compile. There was no build-step. Yeah. So much of what exists in today's tool chain wasn't there.
And so it was easy. It was also, in hindsight, really freaking scary. And that's where there were so many opportunities to make decisions that effected your user's negatively, or broke the site, or whatever. And I feel like some of this is [inaudible 00:14:11] and some of this is just the tools that exist today that just didn't exist then, especially around front end.
Yoz Grahame: That's a great way ... I hadn't thought about that, but that's fantastic, because as Ben said, a lot of people have complained that things aren't nearly as simple and easy to get started as they used to be. But it's not so much that there's more complexity. It's that the complexity has shifted from repetitive toil, which can be messed up very easily, to preemptive configuration and setup, things like CI pipelines, where pack all that stuff, that.
Ben Vinegar: Also, nothing is stopping you from building a website.
Rebecca Murphey: That was what I was going to say.
Ben Vinegar: Like we did 10 years ago. Nothing is stopping you. And yet [crosstalk 00:15:00].
The tooling in the front end ecosystem is complicated, but has enabled us to work at scales, and deliver products that couldn't even comprehend in the absence of that tooling.
Yeah. They are saving you from yourself. And again, organization size matters here a lot. Some of these tools do not make sense in certain scenarios. But at scale, it's impossible to live without them.
Yoz Grahame: Yeah. And I can see how ... I'll say I understand why people complain, because you're missing the immediate feedback, when you get started, and you want to be able to just throw something at the [inaudible 00:17:03] and see it work. And that's not a shallow thing. That is a hugely valuable, continual rapid feedback loop that you get when you're learning this stuff. But you can still have that, as you say. Before we move on, just to say to our audience, thank you for joining us. If you have any questions for Rebecca and Ben and I, we're happy to take them.
And continuing on the theme of, as we mentioned, what teams today need, what developers, Ben, to be a front end developer on your team, you've got the various built tools and things like that, that you're using. What else? What are the practices, perhaps over less technical or at least front end specific, are needed to do ... the way we talked about it yesterday, was pushing pixels to production. What does it take to get your pixels all the way to production, that aren't to do with front end specific tools?
Ben Vinegar: That don't have to do with front end specific tools? What are they ...
Yoz Grahame: Maybe some tools, but the ones that are more focused around a large production organization, so the aspects of the pipeline involving working with other people, to do with the version control and [crosstalk 00:18:33].
Ben Vinegar: Oh yeah. Oh yeah.
Yoz Grahame: Things like that.
Ben Vinegar: I'll put an asterisk on this, I could talk about our experience, because Rebecca and I spoke earlier. And so Rebecca is working in a company where maybe they're trying to make it so there's less things that you need to know, so that the opportunity for contribution is more open. And I think every company is trying to do that too. We're trying to do that to a degree.
I was certainly doing a lot of work with Backbone. And Backbone was a little helpful as well. But what it still made very challenging was you had to propagate state from your client side application into pixels, into dom elements. And that was a lot of work. And to do it in a way that made really great experiences, you had to know a lot of minutia about the browser, and how it works with the dom, and so on.
And React, why has React and other frameworks become popular? It's because they've introduced a paradigm where you don't need to know that. Sure, you need to know that you're rendering DIVs and spans, and all that stuff, and a link is an A-tag. But if I render 1,000 items, is that going to block the page? Certainly not to the degree that you needed to before. What I'm saying here is I think it's honestly, a focus on programming is becoming more important than just understanding how to be a good programmer. You do good code reuse. How do you lay out architecture and things? And less about the minutia. Rebecca?
Rebecca Murphey: I think I would say it depends. It depends on what job you want. If you want to be working on React, well you better know that stuff, if you want to be working on React. And the team that I work on now, we are building a micro front end framework for use of Indeed, where new people can independently deploy pieces of the user interface, that are then assembled to compose the whole page. And if you want to be on that team, actually a number of people on that team, we explicitly ... we don't need you to know about front end engineering. We need you to know about distributed systems and systems at scale. That's what we need you to be able to think about. We also need one or two, actually incredibly well versed front end experts, to understand where all the dragons are in a system like that.
And so, on the one hand there are those teams, where actually you need that depth and detailed experience, and you've got to just spontaneously be able to spout out how cookies work in strange scenarios, and you just have to have this encyclopedic knowledge of front end engineering, which is really hard. On the other hand, the users of that system, like Ben was just talking about, we are trying to make it so if you know HTML and CSS and can read instructions about which buttons to click, and you are decent at React, then you can be really successful in a system, like Ben was saying, without having to have the deep and nuanced and knowledge of front end minutia. It depends, again, on what path do you want to go down, what skills you actually need to be acquiring, I think.
Ben Vinegar: Would you say that those roles, those are becoming the new staff engineers at a company, in the front end space?
Rebecca Murphey: Yeah. The people I think, who end up in those roles, are necessarily senior. Interestingly about them, they tend to also have non-front end expertise, or at least be able to participate pretty well in those conversations. And so once you describe all the attributes of these people, you are talking about somewhere between staff and principle kind of engineer folks. And so there's very few of them. You don't need a large number of them, even at a company our size.
Yoz Grahame: Would you say though ... because it sounds like what we're talking about there is increased specialization, in that there's more of a focus on certain things, like in particular, each team needs smaller groups of expertise, or smaller domains of expertise per individual. Do you find that ... it's always interesting to ... have either of you been in a position of working at a large organization, where you can be fairly specialized, and then switching career to a much smaller org and suddenly you find yourself having to relearn a whole bunch of stuff you haven't touched in years, because you're the only one?
Rebecca Murphey: I am petrified of that experience. No. I've honestly only gone larger and larger over the course of my career. And as a thought exercise, I sometimes consider what would it be like, even just go back to being an individual contributor at my current company, versus being in a manager role. I haven't had that experience. I've talked to people who have had that experience, who've gone from being executives to being the only coder at their startup. And it's a fascinating journey, but I have not had it.
Yoz Grahame: It's fascinating as well, in terms of in choosing ... there's another aspect of specialization here I want to touch on, which I've seen change in front end, which is with each phase, each set of new tools, we get new things to learn about as a topic in the domain. I mean, there's front end, but then you're talking about Rails. And Rails, famously was the first really accessible framework to be based on MVC, and taught everybody about MVC. And similarly, the different kinds of ways of thinking about structure and things to care about.
And so we've seen other topics as well steadily increasing performance. Things like performance ... sorry, so the increase in priority. Performance is one, that gets more and more focus. Accessibility, thankfully is one similarly, getting focus. And for those, do you find that it's ... where is the balance in how much an individual needs to know in respect to where they are in front end? How much of these different topics does the individual always have to know, and how much can you leave to the experts? Sorry. That was a very general question. I suppose, I wonder if it depends on the different topics [inaudible 00:26:12] question, and where you see those splits.
Ben Vinegar: You brought up this sort of what should you know, what should you need to know. And I think when we're hiring at our company, I don't think that we're very fixated on, hey, does this person have the explicit experience of our stack or whatever. We're probably looking for broader experience and fundamental ability above all. And I think a lot of companies do that, and that's why are interested in that, and that's why, love them or hate them, some interviews are oriented that way.
For example, I know Century is a single page application, written in React. And we did that in 2015. And I'm actually really excited when we get someone who's been working on Angular for a couple of years, or somebody who's working on Amber, because I like unique perspectives that they bring from that ecosystem, because every framework has good ideas. There's a reason why people are using them. They're all a little bit different. And so to actually have people come in and bring what they know is really valuable. Go ahead.
Rebecca Murphey: So many things that I'm wanting to jump in. I didn't mean to cut you off. I think that what you said, about you're not looking for ... that you're excited when you see Angular and Amber folks come in. Yes. Oh my gosh. We explicitly ... I explicitly am never looking for how well you know React. I'm looking for like how did you contribute to your company, how capable are you of evaluating trade jobs and making decisions. And maybe you have been working in an Angular for the last five years. What's terrible about it? Maybe you've been working with React for the last five years. What's terrible about that? I'm wanting to know, if you can see all sides of technical decisions, and be able to evaluate those trade jobs. That's what I'm really, really eager to see with them when I'm considering somebody.
The other thing I'd say is [inaudible 00:28:27]. I need to know accessibility. I need to know that when you need to know accessibility, you're going to take that really seriously, and then get up to speed on it. Whatever it is. It's accessibility, it's performance, it's React, it's View. I need to know that you have demonstrated, that you have the ability to learn new things, when they're hard, because there's still lots of hard stuff in front end. And I would say performance and accessibility are pretty high on that list.
Yoz Grahame: Yeah. And that's a great point because a lot of people say ... I hear this more and more from engineers. And this is really useful advice when it comes to hiring decisions, is that we care less about tons of existing knowledge than the ability to learn quickly. But Rebecca, I think the other point you threw in there, which is I think even more vital, is the ability to make decisions, the way to communicate and to evaluate different options, possibilities, and tools, and then make an informed decision, which you can also communicate well, and persuade people of, is surprisingly difficult and so valuable. Thank you.
What else ... on the topic of what we look for in hires, you've got ... and I know there's a continual ... there's all these people looking to hire front end engineers, but is there are those who are experienced and some make the mistake of looking for people like them. And those who aren't experienced and don't know what to look for. What have you found that is maybe ... you know, the general top advice around ability to learn and ability to communicate decisions and evaluate well. Are there more front end specific skills or qualities that you look for? Rebecca?
Rebecca Murphey: I think that, and this all depends on the seniority of the person that you're looking at. You know, for somebody who is really genuinely looking for a hunger for learning and a hunger for taking on new challenges, I don't really care about the ... if you are interested in front end and have some nominal aptitude for it, cool. I care much more about do you have the tenacity, do you have the initiative. Will you raise your hand when you're stuck or will you go disappear for three days and keep telling me that everything is fine? Not that that ever happens.
I think for junior folks, it's really it's about tenacity, initiative, and ability to learn. And the specifics aren't that important to me. For more senior folks, I am looking for how do you decide things, how do you influence things, what's the last big project that you worked on, and do you understand why you worked on it, and what did you screw up? What would you do differently the next time? What was the business rationale for this? Was it a pet project of yours that had no value to the business, or did you increase clicks on widgets by so many, that you made a million more dollars? I'm looking for kind of product sense as well.
On the technical side, I'm looking for the more senior you are, the more I want to know that you can function across the stack. Not necessarily that you are good at the whole stack, but that you can at least talk about and understand and participate in conversations about the whole step, participate in conversations, like how are we going to get these pixels to production? What are the risks in shipping these pixels to production now versus later, and this way versus that way? And understanding stuff like CICD, and build tools, and how servers work, and how DNS works, and how your whole system is going to fall over because there was an earthquake in this place over here, or whatever.
Yoz Grahame: Yeah. The conceptual leap to realize that things don't always happen in the right order that you expect, can be a major one if you don't know how to deal with it. Gets [inaudible 00:33:35]. Ben, how about what do you look for in ... what do you maybe look for, when ...
Ben Vinegar: Well, I'm reminded why ... oh, we may have lost Yoz here for a little bit. But I'll jump in, what I'm looking for. Why I'm reminded why me and Rebecca get along so well, because I think I agree with most of what she just said. You highlighted two things already, like junior folks and more senior folks. And it's like on the junior side, you're looking for talent, tenacity. I really like the word, 'tenacity.' That's going into my lexicon. And I think it ...
I do want to make a point about why whiteboard interviews or interviews can sometimes feel ambiguous, and like why am I asking this, this isn't what the job is going to be. There is a misconception that people, like hiring managers, are looking for you to solve exactly the whiteboard exercise, and know exactly what it is. They're actually trying to understand how you're solving it, and they're trying to figure out things like tenacity. When you see an ambiguous problem, do you get upset and say, "I can't solve this"? Because from a hiring manager's perspective, they're going to think, "Well gee, when I show this person another ambiguous problem, that's probably going to look more real in the future, are they going to have a similar attitude?"
And so if I had a bunch of people interviewing, it's to take those exercises, try your best, and just try really hard, and demonstrate to somebody who is trying to evaluate you, like, "Hey, I'm going to try and meet the challenge. And I might not get it, but that's okay. But I want to at least demonstrate that I'm going to try and meet the challenge." And then of course, we see here, that I agree, that the conversations ... well, you've got more of a career behind you, and there are expectations that you can speak to these very specific things that we need you to do.
I don't know [inaudible 00:35:43] can probably speak a little bit more specifically, about even our interview process a little bit. But what we do have is we do have specific roles open for front end engineers occasionally. And there is a specific track for that role, that includes a combination of take-home exercises, specific interview questions for that. And some of them are experience based. Not trivia, but our expectation of what somebody in a senior level, front engineering role should know. One of those things are like prototypes, or even fundamental language things. Do you know how to manipulate objects in non-basic ways, for example?
Yoz Grahame: [crosstalk 00:36:32]. Ope. Sorry, go ahead.
Rebecca Murphey: I want to say, on the ... I'm just thinking about take-home exercise. I love to see how people engage with a problem that is reasonably constrained, because we don't want to take up too much of their time. It's reasonably constrained, but there's a lot of room for a lot of decisions. And so do they invest heavily in the UI aspect of it, but they got the algorithm for collision detection off of stack overflow? Like how do they [crosstalk 00:37:07] is it okay, do they say that they got it off of the stack overflow? I want to know that.
But also seeing how where they invest their time, I think, is a really interesting ... it's an interesting signal. I wouldn't say it's a hire or no hire signal, but it's a really interesting thing to see, where people choose to spend their time. How much they choose to invest in, say, code organization, on what's ultimately a toy project. And again, there is no right or wrong answer. That's just fascinating to see, and can give you kind of launching points for more conversation about, "I see that you spent a lot of time on this, but how does it behave if I do this weird thing to it? Do you know? Did you try that? Did you experiment?"
I personally love those exercises. I personally also want to find a way, to make them really equitable, I guess, so that you aren't asking for something that is very possible for some people, and very not possible for other people, to complete in their free time. But I love the signal that you can get out of them, just as far as learning more about that person, knowing what to talk about after that. And I'm sorry. That was a lot more words than I meant to say about that, but I [crosstalk 00:38:45].
Yoz Grahame: That touched on so many interesting things. In particular, I think the last one about how do you make this equitable, with these kinds of interview processes and challenges, bearing in mind, that we have very different quantities and qualities of spare time to do this kind of work, and do it effectively. But also, the environment of it's so difficult to get people problem solving effectively in an interview room, because your mind is in a very different state. Your emotions are in a very different state.
And this actually leads into something else I wanted to ask you about, which is when you're on the other side of the table. When you are being interviewed or when you're applying for a job at a company, and a lot of people forget that it's a two way street. You're not just being interviewed. You are interviewing the company, to find out whether you want to work there. In your experience, when you have applied at new companies, when you've gone for interviews, are there things that you now specifically look for or ask about? Ben [crosstalk 00:40:08]?
Ben Vinegar: Not actively interviewing. I feel like I can answer that question more from a place of experiences where I didn't ask those questions, and why I originally regretted it.
Yoz Grahame: [inaudible 00:40:22]. Yeah.
Ben Vinegar: Yeah. I took a lot of them for granted. This is actually a good topic, because I think we can't just go through an interview process ... everyone is so concerned about saying the wrong thing. You're kind of on eggshells. If I ask them a question, will that offend my interviewer, so I'm just not going to even approach it, right? And for what it's worth, if it all goes well, you can ask those questions later for you don't ... you can always ... let's say you have an offer in hand. You can always talk to someone. They're going to be very interested in answering those questions for you. If you don't want