4/21/2018Time to read: 5 min
My official job title is an associate engineer. At my company, we don't make a distinguishment for back end and front end. But I happen to be in the UI Platform team where I deal with mostly Front-End technologies, so when people ask me what I do, I usually tell them: I am a Front-End engineer (shh, don't tell them that I secretly drop the "associate" title)
So you must be good at design, right?
Uhh, yeah. I studied Digital Art in college and worked as a graphic designer for a school club for a year. But that working in Front End does not mean making graphic designs. We have dedicated UX designers creating mockups for a feature and we developers code it up. Front-End engineer is more on the implementation side.
So what tools do you guys use?
HTML, CSS, and JavaScript are three main tools we use. But I would say in 90% of our time we are dealing with JavaScript only.
Is JavaScript very simple?
JavaScript might have fewer language constructs comparing to some languages, but it doesn't mean anyone can start writing it without learning it. I was designed to be similar to Java's syntax because Java was a very popular language back then, but it has absorbed a lot of features from all kind of languages over the years and now it has got its unique flavor. On the other aspect, having a simple language (I am not saying JavaScript is simple) doesn't mean the development is simple. Front-End development requires a different domain of expertise than backend development.
But one would hire full stack developers because they can do both front end and back end right?
If the full stack developer has really solid experience with both back end and front end, then he or she must be very exceptional. Plus with the complexity of today's software ecosystem, it's very hard to keep up with the development on both areas. When hiring an engineer, we shouldn't expect him or her to rely solely on his or her memory to do the job. Having specialized front end or back end engineer allows engineers to focus their learning and keep up with the trend.
So what makes Front End hard?
This is a good question, back in the day, Front End was simple, the websites are simple, and there wasn't much interactivity happening in the front end. Servers were the one that does the heavy lifting. But that is changed now. With the advancement of devices, users are demanding more interactivity, a lot of business logic is moved from back end to front end. Front-End not only needs to take care of the communication with Back-End (a network request is usually initiated by front end) but also managing the data and providing dynamic user interfaces.
Hmm, can you give a example of a front end problem?
Sure, take a search box for example, like the Google search box. It's usually Front-End engineers' job to implement it.
What does a search box do? It needs to show suggestions when user type. So when a user types a character, we send the current input string to the server, to get a list of suggestions and display in the drop-down box. But server request can take long, we can't stop the user from typing just to wait for the suggestion to come up. When the response comes back, the user has already typed the second or third character and we already send out the second or third request. Can we wait for the most recent request to display the suggestion? No, the most recent request might never come back, which means the suggestion would never show up. But we still want to show the user some suggestions, even though they might be outdated.
What if the responses are out of order. For example, if we type "barn"
but the suggestions for "barn"
come back before suggestions for "bar"
. This might happen. When the suggestions for "barn" come back, we already display them, so when suggestions for "bar" come back we need to figure that it is an outdated request, we shouldn't do anything about it.
What if we got a fast typer who can dish out 100 words per minute, that is about 4500 characters. Do we want to send out 4500 requests very minutes for a user? probably not. Servers can't handle it. So we have to add some special logic like: if we already send out a request in the last 0.3 seconds, we don't send out a new request. Users will probably not notice this difference because they understand that the app needs time to process. So this unnoticeable degradation can greatly reduce the burden of our server.
Now, let's come back to the question itself. Aren't we just talking about a simple search box right? would you imagine it being so hard?
So how is the pay for Front End engineer?
The average base pay for Front End engineer in San Francisco is $115,109/yr. The average base pay for Software Engineer is $124,555/yr. The data is from Glassdoor.com as of April 2018. There are a lot of factors in those numbers. A lot of company, like my own, labels Front End and Back End engineers generally as software engineers. The ones who specifically use the term Front-End engineer might be the companies that primarily focus on Front-End or large corporations that have specialized roles for Front End engineers. Also, if you are shocked by those big numbers, keep in mind that this is an average for engineers of all seniority. Also, this is Bay Area, where a single room can cost almost 2000 dollars a month.
I'm gonna be honest about my salary, I feel there is nothing wrong to share it. My salary is 105k a year, plus about 25k equity each year. I am a junior level Front End engineer in the Bay Area. In our company, Front End engineers are paid the same as other engineers.
Wow, I want to be a Front End engineer, should I go to college?
I feel Computer Science degrees in college still focus on the fundamentals of computer science, while Front End technology is always changing. You still have to spend your extra time to keep up with the trend in the Front End community. The fundamentals learned in school can absolutely help but going to college is not the only option to get into the Front End industry. We have colleagues in our team attended boot camps to learn about Front End technologies in half year. It is totally possible to learn on your own because all the resources are available online. It just takes a lot of dedication to stare at the code on Saturday night when all your friends are out partying.