DEV Community

Cover image for Senior front end dev here, ask me anything!
Rob Kendal {{☕}}
Rob Kendal {{☕}}

Posted on

Senior front end dev here, ask me anything!

OK, so this is my second AMA, but it's been a while and I thought I'd try to answer any burning questions out there in Dev land.

I've been a web developer for close to 15 years, largely in front end, more recently specialising in JS and React. I've just moved jobs to become a little more fullstack, dealing with AWS and cloud engineering.

I run The Front End podcast too, and I'll be using some of the material here for an upcoming Q+A episode.

No question to big, too small, too weird or off-topic!

(PS - I'd probably avoid the 'is HTML a programming language?' one because some people will literally burst into flames...)

Top comments (109)

Collapse
 
giorgosk profile image
Giorgos Kontopoulos 👀 • Edited

What is your definition of front-end developer ? There is a big discussion the last few years and people immediately assume (wrongfully in my opinion) React knowledge and no regard to knowledge of CSS and I do see it on the questions and responses of this thread. What is your take ? What would you answer to Chris Coyier question css-tricks.com/what-makes-a-good-f... ?

Collapse
 
kendalmintcode profile image
Rob Kendal {{☕}}

Great question!

In a nutshell, for me, it's about the knowledge and experience in designing and building successful, accessible user interfaces, using a variety and combination of the right tools for the right job.

However, I think people get bogged down in talking about the tools that define the term, rather than the role, i.e. what it is the front end developer needs to achieve.

We've talked in this thread about changing the term and because the tools involved in modern front end are blurring a lot, the title itself almost needs to become something like 'user-driven developer' or 'interface developer' — something beyond this idea of a 'front end'.

But think about it in terms of other jobs out in the world, like, say a plumber. A plumber deals with your waterworks and pipes, right? We don't talk about, 'oh, you have to know how to use a blow torch, or this shiny new spanner to be a plumber' do we? We talk about the processes and skills involved instead.

Development is such a broad collection of venn diagrams to me, all overlapping, and you can choose where you live in those diagrams depending on your passion, depending on your role. You absolutely can be a FE dev without touching a line of CSS, but you're likely going to be fairly niche. Similarly, you can be a successful FE developer that specialises in HTML and CSS, but with fairly little JS. It all depends on what your doing...

Collapse
 
giorgosk profile image
Giorgos Kontopoulos 👀 • Edited

Great answer, I just wanted to raise some awareness especially to newcomers that one can be a front-end developer without knowing React ... but the places he/she could be employed in based on open job positions is rather limited (quite sadly, lots of open positions asking for front-end developers actually are positions for React developers)

I would call knowledge in React a specialization, but basic knowledge in CSS should be fairly standard in my opinion.

Thread Thread
 
kendalmintcode profile image
Rob Kendal {{☕}}

I agree. The holy trinity of CSS, HTML and JS are key, core concepts in front end.

Collapse
 
kendalmintcode profile image
Rob Kendal {{☕}}

Web API...I honestly don't know. I'm quite excited about some of the new JS features though. The optional chaining is on fire (developer.mozilla.org/en-US/docs/W...)!!

It's the little things on the front end that always prove the most fiddly and not, surprisingly, the huge complex features that people think will be hard. For example, in a recent project we had a really faffy combination of radio buttons and checkboxes. They had some tricky dependencies (like you could choose multiples of X but not Y) and the logic to remember all those choices and dependencies was mind-melting...

Recently, I've been working on a couple of things:

  1. React Query Builder
  2. and Google Sheets Reader - a little utility that lets you read Google Sheets without the messy official API stuff.
 
kendalmintcode profile image
Rob Kendal {{☕}}

That's entirely up to you and how you prefer to learn. For me, I like to practice what I learn soon after by doing examples to cement the knowledge. I also write blog articles to help people (it also helps me in the future when I've forgotten what I learned!).

Collapse
 
kendalmintcode profile image
Rob Kendal {{☕}}

Partly, it's to remember that it's never quite as fast as people thing. There is the cutting edge where things progress very rapidly and it seems like they never sit still. Then there's this slower bubble in the middle (where most people live) where you're restrained to some extent by your workplace or tooling or tech stack, so it's not as rapid.

However, for me, I like to read several blogs, a lot of different opinions and techniques on places like Dev, and follow various people on twitter to keep up to date. If I come across something that piques my interest or I feel is valuable and I want a deeper dive, I'll invest in a solid book or course to learn more, with a view to implementing that knowledge as soon as possible.

Collapse
 
tia311 profile image
Thuyet

Could you give advice on projects for newbies? What kind of technologies/skills you'd expect to see in a junior frontend dev's portfolio? I'm starting small, so feel like my github is a collection of trivial things. Thanks a lot.

Collapse
 
kendalmintcode profile image
Rob Kendal {{☕}}

Hey Thuyet,

Good question. I think I'd expect to see a smattering of different things as they try to work out what route they want to go down. I advise my mentee's to have a few 'complete' projects that showcase some exposure to a few different technologies or approaches.

For example, I have mentee who has built a great song-finder web app. You can search for artists or songs and view lyrics and find album info. It's really good as it showcases some HTML and CSS work, but exposure to real API's, React and (most importantly) how he thinks, how he has approached the problem.

Those kinds of things work really well for me and that's what I'd like to see if I were hiring someone.

Collapse
 
quanla profile image
Quan Le

Hi man, your profile is quite similar to mine. How do you think about Hooks? I think it sucks, and the people love it sucks even more. Nice to know you :D

Collapse
 
kendalmintcode profile image
Rob Kendal {{☕}}

Hello there!

I'll be honest, I was a little resistant to Hooks to begin with. But sometimes, when you're perfectly fine and dandy with whatever you're using, it's difficult to justify moving to something new, especially when the perceived benefits of that something new don't outweigh the effort involved to do the move. I was very productive with functional components and class-based ones.

However, I've made the leap after learning a bit more and gradually introducing them and now I love them as they make things much simpler more often than not.

Have a read of Amelia Wattenberger's amazing article on them and see if it changes your mind > wattenberger.com/blog/react-hooks

Collapse
 
quanla profile image
Quan Le • Edited

Thanks man, I just read the other article that you shared, and frankly, it doesn't change my mind. I am stubborn, I know, but her use of Class components is just terrible to begin with, and even if I don't know how to use it better than her, the benefit of Hooks code being shorter won't bribe me to look away from its hacky and dangerous nature. Thanks anyway. It's nice to know you

Thread Thread
 
kendalmintcode profile image
Rob Kendal {{☕}}

You too matey, always nice to make a connection :D

I think that's a great nature of development: what works for one, doesn't for another. And the Facebook team have explicitly said that class things aren't going away because they have literally 1000's of components that depend on them.

So the good news is that you don't have to choose!

Thread Thread
 
quanla profile image
Quan Le

Yeah, and then we have Preact, or Vue or stick with old versions... anything that keeps me away from Hooks. I thought Redux was worst until I saw Hooks.
Anyway, have a good day (or night). Cheers

Collapse
 
thomas_sweet profile image
Thomas Sweet

Hi there!
As a junior FE dev, what is the main thing I need to focus on when wanting to improve and graduate to senior level.
Is it just years of service that give me that title?
Do I need to learn as many technologies as possible? (because more and more employers are expecting you to know more and more)
Is it about becoming an expert in a field you decide to specialise in?
Or is it just simply learning a new mindset of curiosity, questioning everything and finding better and better solutions, as well as adopting an attitude of transparent communication and knowledge distribution?

Collapse
 
kendalmintcode profile image
Rob Kendal {{☕}}

It's something that comes with time. And that thing is experience. It's being able to look at problems and see commonality, familiar solvable issues and knowing how to tackle them (more importantly, how not to tackle them). That 'time' isn't a fixed thing either: there are developers better than me, younger than me, with less 'time served' than me, it's about your journey and your learning.

With what you learn, that's up to you. You absolutely don't have to master everything going, but being a generalist is super useful. Being able to adapt to changing environments and be flexible is very appealing to employers and will allow you to change your direction if you wish.

However, becoming an absolute specialist in a core set of topics is also a great route and move into consultancy.

Collapse
 
thomas_sweet profile image
Thomas Sweet

Thank you for your answer! It makes a lot of sense. I think we often get stuck on a thinking that the 'senior' title is based on one definitive thing. But that my actually keep us from being able to really learn and grow as developers. Rather we should be focusing on our journey and coding with our eyes open and questioning as much as possible.
Thank you for taking the time to answer my question!

Collapse
 
jack_garrus profile image
Nadia Guarracino • Edited

Hi Rob, nice to meet you!
I have 4years of experience as a Front-End and I am trying to learn to make API and learn a backend language to enhance a side project of mine that people around me are using everyday more. So I want to ask you which kind of BE technology to learn that could be a nice compromise between my poor knowledge of that field and to be perfect for an app that has the potential to be largley consumed?

Thank you for your time!

Collapse
 
kendalmintcode profile image
Rob Kendal {{☕}}

Nadia, hello!

Node might be a good way to go. It's already in JavaScript, so it should be less of a transition and learning curve for you. You can create API's in there using things like Express JS and hook up to a data store such as Firebase or AWS Dynamo DB, without having to muddy the waters with a fully-fledged DB solution.

That said, if you want to spread your wings a little more, then Python is a popular choice, coupled with Mongo DB for storage. You could host them on a service such as Netlify for very little to free cost too!

Hope that helps :D

Collapse
 
rolfstreefkerk profile image
Rolf Streefkerk

Sorry I got triggered by your comment Rob. DynamoDB is a fully fledged DB solution with global tables (multi region) and caching (DAX) built in. Amazon and other major corporations use it to for peta-byte scale databases. In terms of design and built for purpose for cloud it will beat MongoDB on performance without actually having to install and manage anything.

See the use cases here: aws.amazon.com/dynamodb/

It's highly recommended to use with local installs available on Docker.

Thread Thread
 
kendalmintcode profile image
Rob Kendal {{☕}}

Hey Rolf, no need to apologise sir and I definitely don't like the sound of triggering anyone 😬

But that's my bad, I phrased it poorly.

Of course Dynamo DB is a full solution. What I meant was, in Nadia's context of not having a lot of back end experience, something like Dynamo DB will give her some persistent storage with the hassle of setting up a full, traditional-style, relational DB. It also brings a much shallower learning curve too, especially when, as you say, there's no installation and managing of things.

Thanks for highlighting!

Collapse
 
jack_garrus profile image
Nadia Guarracino

Thank you for your response, Rob :) I think I will follow your advice and start to become a true MERN stack developer!

Collapse
 
stealthmusic profile image
Jan Wedel • Edited

As a backend Java developer that is also doing frontend, I am really shocked how frontend toolchains works. Compared to the backends I know, everything seems to be slow, extremely resource consuming and non-deterministic. Builds have hundreds of warnings and noone seems to care as long as it’s working. I would really rewrite it if I had the time...

Do you think that there is some „good enough“ attitude In the industry and if yes, why is it, or is just me having bad luck?

Thanks!

Collapse
 
kendalmintcode profile image
Rob Kendal {{☕}}

I think there's definitely some of that yeah. But you're also dealing with a lot of balls, in a lot of airs, and a lot of jugglers all trying to keep track of them.

For example, at my last job, we've got an API developer. He's writing things in C# and also looks in on some SQL, but that's about it (not to undermine that at all, believe me, those things are more than enough!!). Then there's the front end. We've got to manage JavaScript, CSS, HTML, how they all interact and affect each other, then build tools to manage that, and libraries like React thrown into the mix, all with a healthy smattering of third-party things that we have no control over. But I do think we should take more care when developing to keep the quality and refactor as we go.

But it depends on what the warnings are too. Ideally, you should keep them to a minimum, but some are less avoidable. Plus, when it comes to JavaScript, it's so loosely defined that that doesn't help.

On a personal note, I've not found the tooling to be that slow but I might be biased because I'm front end for life 😍😍

Collapse
 
stealthmusic profile image
Jan Wedel • Edited

Thanks for your reply.

I was not so much talking about code quality. This is also an issue sometimes but I absolutely agree that frontend is a whole lot more complex than I thought before. But backend also is, langue, Relational / object DBs etc, Message queuing systems,
Operations, Linux systems... I could go on.

But I was really about the tooling, the stuff that you use everyday when compiling code, running tests, seeing changes in the browser, updating dependencies, fixing issues with dependencies. This is all a lot worse than in Backend and it drives me crazy every day and wondering how anyone could have ever worked with it for years...

We have a very large application so maybe it is not so bad when dealing with smaller web apps or even just „normal“ Dynamic Web Sites.

Thread Thread
 
kendalmintcode profile image
Rob Kendal {{☕}}

Ahh I see. Again though, I don’t find it that bad. I use VS Code and most projects can be fired up with something like Webpack and just hot reloaded so changes are immediate, especially with CSS which is almost instantaneous.

Having come from a C# background I actually found the whole Visual Studio effort to be sluggish.

But I think you’re right, it’s all about the project and maybe just the specific tools you use at the time.

Thread Thread
 
stealthmusic profile image
Jan Wedel

Hmm, maybe I should give VSCode a try... :)

I'm using IntelliJ for both FE and BE so that should be a fair comparison. So I can have like 6 Java projects open without an issue, but having just one UI project will run at 50-70% CPU when having Karma and WebPack dev server running... When I change one line of code in one of the Angular projects, it will recompile that first, then the test app will be rebuilt and webpack runs... I have the feeling that I spend 30% of the dev time just waiting which is really frustrating.

To be fair, I don't have the latest and greatest CPU and this is a very large project. But I could run our whole backend with 10+ Java microservices on docker on my machine but running one UI project just kills my machine.

Collapse
 
thomas_sweet profile image
Thomas Sweet

Do you think FE and BE should be renamed? In the past years FE has morphed into something that is not anymore so clearly defined. On the one side it has become very Backendy and JS complex, but I have the feeling that a lot of FE devs who are really passionate about CSS and the actual UI/UX aspects of FE feel like they are forced to go in a more fullstack mindset. I think that largely is a good thing. But it also seems like both sides of FE are full time jobs in and of themselves. A lot of coders and programmers love getting into these complex logic problems and all these great technologies and they love fighting about Vue or React or Angular and if HTML is actually a coding language. But what about the side that is closer to design and conceptual stuff. Usability, Accessibility and all those things should not lose their priority for FE devs. I am not sure if my question is clear.... :D

Collapse
 
kendalmintcode profile image
Rob Kendal {{☕}}

No I get ya 👍🏻

It's funny, we talked about this on the latest episode of my podcast about how FE and BE are so overlapping now. I think the terms are becoming more UI-focussed and data-handling focussed. I don't have a great set of names for you but if anyone's got a better pair, then let us know 😊

But I think it's a good thing in a way. We've never had a better time to diversify our interests and follow what challenges you. When I started, you were back end or front. There was a clear divide, but it was fairly boring in some respects. Now, you can chase your passion whether it's UI, UX, JavaScript but in a backend way.

Ultimately, it's all development, it just depends whether you want to be more user-driven (UX/UI) or service-driven (API's, databases, backend stuff).

Collapse
 
thomas_sweet profile image
Thomas Sweet

Well user-driven and service-driven is a good start for a new naming convention :D
Thank you for sharing your thoughts on this. I agree, the diversity is a great thing. Sadly I think companies could often do much better if they understood the diversity better.
I will have to check out your podcast episode where you talked about this. :)
Thank you again.

Collapse
 
urvin5 profile image
Urvin shah

Hey can you please suggest a good path in learning vanilla javascript ,we can get many materials online but after some time learning javascript is so overwhelming that i get lost .

so please suggest some good material also i am a person who is more into step by step watching videos and practicing rather than reading docs. And also give some projects ideas that could help in practice more...

Thankyou

Collapse
 
kendalmintcode profile image
Rob Kendal {{☕}}

Howdy,

Sooo, my go to list for things like this includes:

  • Free Code Camp
  • Wes Bos

Free Code Camp is brilliant and, although it's a little more formal, you can gain certification in various web development skills, not least of all JavaScript.

Wes Bos, on the other hand, is a hugely popular online personality web developer who provides lots of free and paid courses such as you describe (like videos with real projects). He's engaging and super helpful, so definitely worth a look.

In terms of staying focussed and not getting lost, a common mistake for people seems to be spreading themselves too thin. What I mean here is consuming lots of different courses or online tutorials and it ends up getting overwhelming and confusing. Find something you like and stick with just a couple until that knowledge sinks in and you can move onto another topic or series of them.

Projects-wise, I like more 'complete' solutions that solve a problem. I find those help me to cement my knowledge when trying to get new things to stick. For JavaScript, you could try thinking of something you struggle with and building a simple solution to it that can be added to when your knowledge increases.

For example, the classic (and cliched) todo list. Or a simple calendar/appointment app. Maybe a journal/diary app, or even the music search app I mentioned in a couple of these replies somewhere in the thread. Or, a topical idea might be to build a learning tracker where you can enter your goals and learning materials to date, making notes and reflecting on where you are in your learning journey.

Collapse
 
urvin5 profile image
Urvin shah

Ohhhh thats a great help thank you so much i have tried freecodecamp but never tried wes bos, and i would surely be working on this mentioned projects also i loved the idea of that last project a learning tracker it helps in planning and also tracks our pace as well as it also helps developing our basics

Thank you

Collapse
 
urvin5 profile image
Urvin shah

Hey that was a great help i am gradually mastering on Vanilla javascript also i have started learning react basics and now i want to master react and react redux can you please help in suggesting good articles and some projects

PS : I want more materials on hooks rather than state components

Collapse
 
johnpevien profile image
John Pevien Laguindam

Hi!

I'm currently learning React and I'm seeing frameworks like "next" and "gastby". Im thinking, do I really need to learn these frameworks? Or React alone is good enough.

Would love to get your opinion on this 😊

Collapse
 
kendalmintcode profile image
Rob Kendal {{☕}}

I see this question a lot (or a variation on it), and unfortunately the answer really is 'it depends'...

If you're aiming for a role that's very React heavy, then you're going to need at least some exposure to it. Do you absolutely need to know React or Gatsby? No, not necessarily. For example (although my website uses it), I don't have much experience with Gatsby. It's a specific tool for a specific job and I've no use for it (at the moment) in my day to day work. There's nothing to stop me learning it, but if I don't use it then I know that knowledge will be lost to me.

I think hireable developers are flexible and adaptable. Having some exposure to different frameworks and toolsets will help you in the long run, but you don't necessarily have to learn absolutely everything out there, and in so much depth.

I think, ultimately, having a solid level of knowledge and experience in JavaScript will stand you in much better stead than doubling down on a particular framework. After all, even React is just JS, right? It has it's own quirks and ways of doing things, but it's all JS. It's easier to pick up a new framework (e.g. Vue) if you have a solid foundation.

Collapse
 
johnpevien profile image
John Pevien Laguindam

Thanks for the detailed answer. Really appreciate it 😁

I think I'm just overthinking the "just in case" stuff.

Collapse
 
anduser96 profile image
Andrei Gatej

Hey, thanks for the opportunity!

Do you think Stack Overflow contributions(answering questions) matter as much as side projects from an experienced dev/employer perspective?

I personally follow this approach if I really want to learn a tool/tech: explore & understand its source code and answer questions on SO. I find many benefits in doing that

Collapse
 
kendalmintcode profile image
Rob Kendal {{☕}}

Hey Andrei,

I can honestly say it has never ever been an issue for me, or any other developer I know. I think it's super helpful and a valuable experience so I would certainly not discourage answering questions on SO; as you said, it's a great experience and lots of benefits.

For things for potential employer to look at, I think things like blogs, videos, podcasts, and other content are what you can point them to as a measure of your level of understanding and experience.

Collapse
 
nibelino profile image
Matteo

I'm a backend developer with 3 years of experience. I want to move on to frontend development ... what should I know?

Collapse
 
kendalmintcode profile image
Rob Kendal {{☕}}

The holy trinity: HTML, CSS, JavaScript. Then, how to slot them together successfully. You can always learn a framework (e.g. Vue, React, Angular), but I think it's easier to pick those up with solid fundamentals.

What are you coding in at the moment as a backend dev?

Collapse
 
nibelino profile image
Matteo

I'm currently working with php + symphony but in the past I have worked a lot with node js ... so I know js well enough.
I've always been a very creative person ... I love composing music and drawing. the idea of ​​designing an ui has always attracted me. are there other tools you need to know? for example those related to the creation of a mockup or adobe stuff?

Thread Thread
 
kendalmintcode profile image
Rob Kendal {{☕}}

I think there's definitely a lot to be said for learning some complimentary skills, such as UI/UX design. Wireframing is valuable too, so check out something like Balsamiq, or Moqups (highly recommended), and Sketch (although that's a bit more design-y than pure wireframing).

A good tool to practice your front end skills is to take a theme design from something like Themeforest and try to recreate it yourself. It'll give you a good idea of the layout of a design and how to sharpen your creative eye for where things don't look quite right.

Photoshop skills can be useful, but it really depends on what you're doing. For example, I can chop graphics up and create clipping masks, but nothing fancy. I'm not a designer, and I shouldn't be. But it's useful to work in overlap sometimes and understand each other's language.

Collapse
 
shofol profile image
Anower Jahan Shofol • Edited

Hi Rob, Many thanks for this thread. I have three questions.

At what extent a Front end developer should know the Backend or DevOps?

Actually, how do you define a Senior Frontend Developer? ( The first question's answer may be included here! )

Lastly, I am in this problem now actually. How do you make side projects to rank up your skills and show to your probable employees (as I am not so good at backend, showing a full functional app is bit trickier for me)?

Collapse
 
kendalmintcode profile image
Rob Kendal {{☕}}

Hey Anower,

Great questions. In order:

  1. It depends on the role. Personally, I think companies expect too much from a single roles these days. If you need large amounts of backend and dev ops, then those are specialist (and separate) roles in themselves. However, it's useful to have some exposure to the concepts and even maybe some experience in configuring a CI/CD setup. There are a lot of venn diagrams in tech, so it's useful to be able to at least understand what the dev ops team is talking about, for example.

  2. Again, it depends. For me, I think it's about experience. You've seen the same problems and solved the same challenges time and again and this allows you to cut some of the trial and error and see at least the direction you need to be headed. Sometimes, it's about knowing what absolutely won't work, rather than what will :D

  3. I answered this sort of thing in one of the other answers on this page, but I'd focus on making realistic things that showcase a few different skills combined together. For example, you could make a weather tracker that automatically locates you based on your browser's location identifier, then pulls in local weather info from an API and displays it in a sexy way.
    Not particularly flashy, certainly not original, but it showcases how you think and approach problems, which is what employers are most likely looking for (or they should be!).