On today’s episode of Nurture.Team, the exploration we are going to have is:
Why companies should have frontend engineers and not just full stack engineers?
I have been in an age several years ago where there were dedicated DBA, Database developers, server-side developers and so on.
Lately, we hear more about “we are hiring Full-stack developer” and an engineer should be able to maneuver across any stack/ technology.
I want to learn from Diane why an organization needs frontend engineers and the value they brings to the table.
About the guest speaker
Our guest today is Diane Ko.
-
- She is currently a frontend engineer at Airbnb.
- Previously she has worked at SurveyMonkey and Intuit.
I wanted to know about the following:
-
- What is the definition of a frontend engineer?
- Why hire a frontend engineer?
- Do you think frontend engineers are a special category like a BI engineer or AI engineer? And how does it fit with full-stack engineering?
- How engineering leaders or organizations should invest in building a team of frontend engineers?
Key takeaways
1/ FrontEnd Engineers
-
- Frontend Engineer is someone who is working on web related frontend code and technologies like CSS, HTML, JavaScript or working on Node server; someone working on front-side of web stack!
- So, If someone is working on other user facing things like mobile applications, they are usually not considered frontend engineers
2/ Why Frontend Engineers?
-
- Probably because of the state of JavaScript.
- Around a decade ago, pages were static, simple and predominately run by JQuery.
- But in past few years, there is a surge not only in JavaScript frameworks but also CSS3, HTML5 (and so many things can be done over web), demonstrating a need to have dedicated and more serious deep-dive onto these newer and evolving set of technologies.
- Lastly, the web applications have become complex and handle user behaviors which earlier, may be, only server-side code was expected to handle and interpret.
- Thus, it’s incorrect to expect an evolving stack which does a lot of “heavy-lifting” to not be a dedicated stream; else you end up brittle code or poorly designed architecture with a future full of tech-debt.
3/ Do you need frontend Engineers for every organization?
-
- May be not! Applications which are complex or have deep frontend interaction, should definitely consider hiring and building a frontend engineering team.
- But given the fact that newer technologies get introduced in the web world every few years, it will be right investments for teams and organizations to hire engineers who are focused on frontend technologies.
4/ How does someone make a career as a frontend engineer?
-
- Looking at new tech as it comes out, go to conferences
- Start with tutorials within framework or Mozilla MDN docs which cover basics of HTML, Javascript and CSS.
- Do not skip the basics. If you lose sight of basics, then you could end up building something which is brittle or doesn’t work in some browsers or a poor architected code.
5/ How can Hiring managers build a frontend team?
-
- Knowing and hiring for position for frontend engineers. A company should believe and post jobs for frontend and not thinking that “let’s hire a full-stack and we will make them do frontend work”.
- Finding out what it is Front-engineers are looking for in a company and make a space for them.
- Look at companies which have official frontend roles and learn from them. (if you want to start building frontend team)
6/ Building a frontend community
-
- Have a community of frontend engineers in a company (depending on the size, it may exist or not)
- Have meeting open to anyone in the company where architecture, standards, new technology, patterns, tech-debt is discussed. People learn, they figure out common goals/ solutions.
Rapid fire with Diane
-
- What is your Spirit animal?
Rabbit
-
- What according to you is your Super Power?
Documentation
-
- Team activity
- Social: Escape games
- Technical activity: Have a frontend meetings or doing something you are learning about each other’s favorite technical liking.
- Team activity
Episode Transcript
Sujay: Hello and welcome everyone. I’m Sujay Maheshwari, your host for Nurture.Team. This show promotes open ended exploration and learning about teams, culture, diversity leadership and how to make work fun. For this episode, my guest is Diane Ko. She is a frontend engineer at Airbnb and lives in the Bay area here in sunny California. Previously, she has worked at SurveyMonkey and Intuit.
Today’s exploration is:
Why should companies have a frontend engineer role and not just a full-stack role. Several years ago, when I started my career, we had dedicated DBAs, server-side developers and so on. Lately we hear more about jobs for full-stack engineers and this person is expected to maneuver across any stack and any technology. What I want to learn from Diane is what value a frontend engineer brings to the table and why it’s important to hire that specific role on the team.
Welcome Diane! So happy to have you on Nurture.team. Also a sincere thank you for accepting my request.
Diane: Yeah, glad to be here.
Sujay: So let me start by asking. What is the definition of a frontend engineer?
Diane: I see a front end engineer as someone who is working on web related, front end code. Whether that’s user facing or front end server – for example, a node server or writing HTML, CSS or Javascript. It is generally someone who’s going to be working on the front side of the web stack.
Sujay: Okay. And does frontend engineer need to know any of the backend technologies or how the backend works? I want to make sure I don’t assume that a frontend engineer necessarily is not somebody who knows only HTML and CSS. Should they know more? Maybe they are in the mobile apps or some other areas developing code, correct?
Diane: Generally, when we think about frontend engineering, it would be someone who’s working mainly in the web stack. Someone who’s working on a mobile app would generally be considered a native engineer or specifically in iOS or an Android engineer vs a frontend engineer where a lot of the things that they might be more familiar with are Javascript, Javascript frameworks, HTML, CSS etc.
Sujay: Oh, wow. Okay. That actually is a revelation for me. Okay. Thank you. So that gives the context we have now a canvas to work with. Coming straight to the topic of this episode. Why hire a front and engineer?
Diane: I think one of the interesting things about frontend engineering right now and really the state of JavaScript is how much things are changing in the last even just ten years. So I started my career in 2009 and back then it was mainly a JQuery heavy time period. There were a couple of other frameworks out there but JQuery was pretty prevalent. Also, it was very common to have more static web pages as opposed to dynamic ones. And now we have progressive web applications, we have more complicated JavaScript frameworks, we also have CSS3, HTML5, there’s just so much more things that you can do on the web now. And when you look at all the things that maybe existed for something like Java or Python, many of the framework that exists now have existed for a long time.
JavaScript, a lot of the more popular ones like React really only came into being in the last five, ten years or so. There’s a lot that’s actually changing, to the extent that frontend has gotten to be a very complex problem. And there’s so much functionality that’s built into a lot of websites that if you don’t have a strong frontend engineer, you can end up with really brittle code or poor architecture. And you run into a lot of the same kind of architectural problems that you run into in the backend as far as like structure, organization and robustness.
Sujay: Got it! So what I gather from this is frontend engineering is a full time job. A full-stack engineer with even pretty good knowledge of frontend technologies may not be enough because A: frontend stack is evolving or has been evolving since last only so many years and there are a lot of options out there and B: right stack and the right design are super critical for the long term success of whatever that application or organization. Is that a correct understanding of what what you were saying?
Diane: Yeah, exactly. I think now we even have frontend servers. You can run a Node server that’s written in JavaScript and have everything so that you can create an application on the web that can actually operate offline because it’s running off JavaScript and that is really powerful.
So all that logic, the handling of it really requires someone thinking deeply about how to structure things in the front end space or even really being aware of the fact of there are a lot of these different technologies that exist. I think it’s possible for someone to be full-stack and care a lot about the frontend.
But having someone whose role it is to think more deeply about the frontend will help with a lot of that in the same way that someone whose role is a backend engineer might be better attuned for some of the more backend heavy work, as opposed to a full stack engineer.
Sujay: Correct. That makes sense to me however I would like to understand this. So I’m segueing into my next question – When I started my career, you know, we used to have these very dedicated roles like – She is a database developer, or he is a server-side engineers. right?
Are we saying that we want to go back to that kind of a world OR do you think frontend engineers are in a category right now which is evolving, as we established, and the way we have specialized streams like Business Insight engineer or we have Artificial Intelligence engineers – these areas are evolving and somebody needs to go deep into this stack – and that’s the reason there’s the argument for a front end-engineer. Is that the correlation we are trying to build here?
Diane: Yeah. I think some of it also relates to the complexity of the application that you’re working on. So, some websites are pretty simple in which case you could say that you could get away with static HTML, CSS, and very little JavaScript, and still be able to provide the experience that you need to provide with your application. In which case, maybe having a bunch of front and engineers is not the most important thing for your application.
You could also imagine some applications that are very complex on the web that operate almost like native application whether that’s desktop or mobile. And for those you start getting into really adding in a lot of the behavior. And when you don’t have someone who’s really thinking about how to structure it in a way that makes sense, is clean, has good architecture, is following best practices – you can easily run into a scenario where your entire application is kind of hinging on a couple of different files that are extremely crucial and very brittle.
So I think for me, I see frontend engineering, to some degree respecting the complexity of the frontend and and how much it’s evolved. But also realizing that if you are working in a very frontend heavy application then you probably need a specialist. Think about applications like Facebook, Airbnb, Twitter, Gmail – all these are very client heavy. There is a backend to it for sure. But a lot of the interactions that user is doing triggers a lot of other things, there’s a lot of behavior that’s within one page and all of that needs to be handled in a very clean way in order for it not to be brittle.
And that’s where frontend engineers can be really valuable so that they can create better structure and good design patterns, so that’s easier to continue to develop within that framework.
Sujay: But makes total sense to me. I’m convinced that frontend engineers are required if the application or the business demands.
So now for example, let’s say I’m looking to become a front end engineer. Where do I start? Can you give me a plan on how to prepare because it’s evolving and there’s so many options out there. How do I make sense of this land now?
Diane: Yeah, it’s interesting. When I first started working in the space, the frontend world was a lot less complicated. I remember talking to one of my mentors after he had spent time working on Ruby for several years and tried to get back into frontend recently – and he said – The whole landscape has changed completely and everything I know is obsolete.
The way that I’ve been able to stay engaged in the frontend community is by going to conferences, looking at new technology as it comes out. And so that’s something that helps me stay with it.
But if someone is interested in going into frontend for the first time – I think there are a bunch of great tutorials that exist out there – whether it’s within a framework or even Mozilla MDN docs that give you an introduction to what the web is like, starting off with the basics of HTML, CSS, and JavaScript
Starting off with the basic of HTML, CSS and Javascript. I think realistically the basics of HTML, Javascript and CSS, are going to take you a really far way. So if you can get to point where you understand how HTML works, and understand how CSS works on top of that, and how JavaScript works on top of HTML as well – that can really help regardless of whatever framework you end up using. And then once you start trying to learn more about the different frameworks that exist, then you can apply that same knowledge to that framework.
Sujay: That makes sense. So the basic – CSS, HTML, Javascript – is where the investment should happen and one shouldn’t shy in learning these three technologies.
And then you can always look at framework like VueJs or others and go deep into it. But the foundation would take you far far enough in your career.
Diane: Yeah. I see the basics as kind of your base level. I am trying to think of a server framework cause it’s been a while. But if you’re working on, let’s say, Django with Python, you would want to at least understand how Python works before you dive into Django.
Otherwise you might end up doing something that maybe doesn’t really make sense in that language or maybe isn’t taking advantage of some of the things that language provides on its own without having to build in a bunch of stuff that exist within the framework.
The same thing exists with HTML, CSS and JavaScript. It’s really easy now with the frameworks to kind of let the framework do a lot of stuff. And I think one of the things that you kind of have to be careful about is if you lose sight of what the basics are, you can end up creating something that maybe is a little brittle, maybe it doesn’t work in all the different browsers, maybe it’s not accessible. And so having an understanding of the basics will allow you to more effectively use the framework. So it’s not necessarily that you could maybe only know the basics if you’re working in a complex application because you still do need to understand how that framework works but that you shouldn’t bypass the understanding of the basics and jump straight into the framework because you can end up creating something that really is maybe not taking advantage of the language or resulting in something that could be maybe not even as effective as you wanted it to be either because you didn’t understand the best HTML element to use or that you could use a much simpler CSS and things like that.
Actually, if you can create really clean structure and clean styling, you’ll also end up reducing the size, the page weight, of your application and that also ends up impacting performance. So all of that stuff kind of comes into play and allows people to create much better applications but it’s really it’s the foundation for all of the other knowledge that you need.
Sujay: Don’t skip your foundational element. Right? Just because there is a framework out there which you are assuming is making your life easy. It may backfire in the longer run. Okay. So moving on – What’s your message for the engineering leaders or organizations in general on investing and hiring frontend engineers, building a team of frontend engineers – what should they think about and what should they expect?
Diane: I think the biggest thing for me is knowing that a position exists for frontend engineers. I remember there was a point where prior to my current job when I was looking and I was looking in a bunch of different companies. For the companies that had only full stack roles and there were no frontend roles, I was really hesitant to actually apply there because in some companies – if company doesn’t believe that frontend engineering is important for it to be its own role, it’s very difficult to continue within your career as a frontend engineer. So there were times where I wasn’t sure whether or not I would be able to make it to more senior levels of engineering while specializing in frontend – it was something that I really felt passionate. And I had done database work, backend work – I started off as a full-stack engineer. I just got to the point where like you know the things that I really enjoy doing are all the things that exist in the frontend – and I can do the backend work (if I have to) but I don’t enjoy it and I’d rather that there’s someone who enjoys it who’s building it. Being able to work in environment where that’s ok, I think is one of the things that really attracts frontend engineers to company.
And I think what also helps is having companies that take the opportunity to find out from frontend engineers that exist, what it is they might be looking for, whether that’s like going specifically and trying to poach certain people which I don’t know – I don’t know I should really say that you should do – but I think finding out what it is that frontend engineers are looking for and trying to create a space for them to grow and learn in your company because I think once you get to the point where it feels like the only way for me to succeed is to be a full stack engineer, or the only way for me to succeed is to become a manager, all of a sudden it becomes something where it doesn’t sound like this is a place for me. So if you really want your frontend engineers to grow and thrive at your company, really thinking about what it means to become a more senior frontend engineer, and looking at companies that have them, I think is also helpful.
I think there are a good number of companies that exist already that have a frontend engineering role and have engineers that are officially titled as a frontend engineer and trying to figure out what it is that they’re doing with their frontend community. How are they engaging, what conferences do you think that they’re going to really get a sense of what are people in the space trying to do and what are they looking for?
Sujay: Right. That makes sense. I’ve been in situations where somebody has written a job description – this person had call out every single technology every single stack out there – and that this is what we want. And I was like, listen it’s impossible person to find. It’s like asking for a Superman, Batman, Captain America – across DC, Marvel – everyone – like just in one person. And when you know that we clearly have a requirement for a particular kind of problem. So I when you were speaking earlier, I could think of that situation. If you want a frontend engineer just right a job description and look for frontend engineer rather than thinking, let’s hire a full-stack engineer and will make her or him to more of the frontend work. Maybe we can push her or him sometimes into the back-end as because we can get a general kind of thing, right?
Diane: Yeah. And I think a lot of times people think, well, you know, I only have headcount for maybe one or two roles. Why don’t I just get a full-stack engineer because they will do all of it. And I think sometimes that can work if you are truly interviewing for a full-stack role which means that you were interviewing them for both their frontend skills and their backend skills. But a lot of times I see, full-stack roles not actually interviewing for frontend skills which means that you’re not really testing if someone can really work full-stack, what you are testing is if someone can work in programming in general, which doesn’t necessarily always apply to frontend skills.
So one of the things that I always kind of caution with wanting to save time and money is that you might think that you’re saving money and resources from just like a general number standpoint and basic idea of a full-stack engineer, but you might end up losing money whether you’re causing technical debt or needing to do more training for the person who needs to understand frontend. So I think it’s just something to be careful about.
There are definitely people who are full-stack engineers who are also great at the frontend. I think it’s not to say that there is not a fullstack engineer who can do amazing things on the front end. But I think you also have to be very careful about how you’re interviewing and what you’re looking for and making the trade off because there are people who will be more front end specialized and maybe haven’t touched the backend in a while. In which case, they probably won’t be able to pass that full stack interview but they might be great for your team. So I think there’s a trade off there where you need to figure out whether or not you want like jack of all trades kind of deal or if you want someone who’s going to be specialized and who can make more of the larger architectural decisions.
Sujay: This was very insightful. I really like what you said and thank you for sharing that.
Diane: Yeah.
Sujay: Here is what I have faced in the past and I want your thoughts on this. So, let’s say there is this application, this product and there are multiple teams – let’s call them squads and let’s say one of the squads is very frontend heavy and they take care of the web application. And then of-course there is DevOps team and other teams. like analytics team. Now in couple of these teams there is a requirement of a frontend. They are doing some frontend.
What patterns have you seen which have worked – where the frontend teams they form like of a guild or forum – where they explain these are the utilities, the set of design patterns will use or does every team get a real frontend engineer – of-course there is a requirement and then they build these rules and again these practices collectively and then share across the companies that this is what we are going to do. What has, what is a pattern and an anti-pattern which you have seen in the past?
Diane: So one of the things that I think is really helpful for any company that has frontend engineers is to establish a frontend community there, having a place where the frontend engineers can also meet and discuss architecture, new patterns that are coming up, have a discussion about what seems like it would be the right direction for the company. And depending on the size of the company this might not be something that exists across the entire company. There may be several that meet together. For example, Airbnb has this meeting called the frontend architecture meeting, which is open to anyone who is a frontend engineer. You don’t have to be an architect to join this meeting but it’s a meeting where we actually talk about frontend architecture. So, we talk about whether or not we want to use new technology, what kind of new standards we should follow, also thinking about any new patterns that we found, maybe any technical debt that we want to get rid of. It’s a great opportunity for people to not only learn from each other but also figure out how we want to standardize towards a common goal. Because it’s very easy to have a bunch of different teams all kind of running off with a bunch of different types of standards and that can end up making it not only difficult to move from team to team, but can potentially result in lower quality depending on who’s making the decisions around standards. So something that can help is working off patterns and standards that already exist.
For example, Airbnb open sourced our Javascript style conventions and our CSS and HTML style conventions. And a lot of people have built their standards from that. There are other standards that exists as well that you could go off of. And I think having a moment where people are really thinking about — Okay, now that we thought about the code before, what are some of the patterns that we feel like are ones that we want to promote and ones that we probably want to not promote. Everyone just make better decisions as they are coding. I would say that one of the ways that the most useful for that is with linting – if you can create guidelines that can be linted against then it takes that whole process of having to consciously think about it as much out of the picture because at the point of coding you have something that’s recommending a better path or just double checking that what you’re doing is fitting in with what your company and group has decided is a good standard to follow.
Sujay: Well, someday you should write a book. You know it’s an advice. Well, it not even an advice really, just a thought in my mind I spoke out loud.
So cool. Alright. That was very helpful. Time for rapid fire.
Sujay:
What’s your spirit animal?
Diane:
You know I would say it’s probably a rabbit but mostly just because I have one (well two)
Sujay:
What’s the super power?
Diane:
Documentation.
I love it.
-
- Sujay: Do you write on Medium anywhere that we could see your style of writing?
-
- Diane: I always wanted to start writing articles and I’ve just never gotten to the point of actually writing a lot of them. I helped edit an article and wrote the forward in something about Android accessibility, which is available on 24a11y.com. It’s something where I really like documenting things, so internally, we have all this documentation that I’ve written that could practically be its own book, but it’s not externally facing.
-
- The article mentioned above is: https://www.24a11y.com/2018/
android-accessibility-at- airbnb/
- The article mentioned above is: https://www.24a11y.com/2018/
Sujay: What’s one team activity will you recommend to the audience of the show for them to do as a team?
Diane: For social one, I would say I really enjoy doing escape game and it really forces everyone to work together. It can potentially backfire if people start getting frustrated with each other, but it can be pretty fun.
A technical thing I think is really valuable is something like having those frontend meetings or doing something where you’re learning about people’s favorite technical things. One thing that we did recently, which was kind of fun, was we organized a frontend all hands of sorts, where people could come up with different talks that they could give, and they were short talks. So we did five minute talks on a variety of different frontend topics. It was really great and it was super well attended and people really enjoyed it. It was an opportunity not only for people to practice speaking in front of other people, which is such a valuable skill, but also lets people learn and share different things that they think are interesting in the frontend space.
Sujay: Even being in the technology space for so many years, I have to admit I was ignorant about the frontend engineering.
So thank you very much for your time and all the insights. I’m very sure folks who are listening to have learned something new today.
Diane: My pleasure.