DEV Community


What theoretical knowledge should frontend developer know?

talentlessguy profile image v 1 r t l ・1 min read

My older brother says I lack some theoretical skills but I don't know which ones. I'm a frontend developer so I don't know how much do I need.

I already know:

  • Basic parsing (I wrote a function for parsing integers using recursion by myself)
  • Recursion (I rewrote some racket array methods using recursion [source])
  • Basic data structures, such as Heap, Stack, Associated Array, Matrix etc.
  • Function composition, alternativity, optionality
  • Calculating simple syntax trees [source]
  • Basic agebraic structures (monoid, group, half-group etc.)
  • Boolean logic (xor, implication, or etc.)

What other theoretical knowledge should web developer know to write performant web apps (e.g. optimizing with math)?

Discussion (8)

Editor guide
vimmer9 profile image
Damir Franusic

From whay you've written here, it seems you know quite a lot and are more suited for backend programming.

Although fronted is quite complex and comprises myriad of various tools, UI developers usually don't pay that much attention to optimisations and let alone know the difference between stack and heap. This is not a disadvantage since many of those terms are abstracted in the fronted.

I mean no disrespect to the fronted guys as I have also done my fair share of UI development. It takes a lot of work to be a successful fronted developer these days.

It's up to you to choose your path but given your extensive knowledge, you might aswell try both and decide which suits you better.

Hsppy coding 😉

talentlessguy profile image
v 1 r t l Author

1) I'm fullstack tbh, but mostly frontend

2) Some complex frontend requires math, for example Virtual DOM or optimizing memory

Thank you for your response :)

vimmer9 profile image
Damir Franusic

Modern frameworks like React and Vue usually deal with Virtual DOM. That's why I mentioned that nobody seems to care about manual optimizations since there are so many tools included in the workflow. It's hard to keep track which one does what.

I am a C developer and am currently doing embedded development where every single bit of optimization and minimization is important. That is why, in my personal opinion, believe that you would find it more challenging and fulfilling to lean more towards the back-end development.

Congrats on being full-stack, I know it takes tremendous effort to cover both sides. Whatever you decide, you can't go wrong with that amount of knowledge.


khalyomede profile image
Khalyomede • Edited

It really depends on your position on a project. What do you prefer to do? I would say you could pursue your learning by having more network oriented courses to understand how the browser handles connections in Http 1 and differences between versions 1 and 2, speed optimization can be beneficial to be able to improve SEO if you work on this direction (and will force you to understand different media formats, bundles that can help you create Webp images from png and jpeg,...), etc...

talentlessguy profile image
v 1 r t l Author • Edited

1) I know how HTTP works, I even tried to read some traffic packets
2) difference between HTTP 1.1 and HTTP2 is a good thing to learn
3) I also know about webp and I try to use it everywhere cos images become tiny.

I don't have a sub direction of frontend, I just learn it all

palashkaria profile image
Palash Karia

Although I see a lot of theoretical logic, I think a lot of web stuff is missing. Not sure if that was intentional, but I'll add some suggestions here:

  • CSS - the W3C spec. I would recommend starting with Magic of CSS, see the linked spec there, & then moving to pedantic CSS. Trust me, knowing this much CSS will give you superpowers

  • Related CSS stuff

    • CSS Modules -- this is not related to any particular framework -- check the original article that introduced this concept
    • CSSnext, postCSS, SCSS/LESS (basic knowledge, as CSSNext should cover most)
    • Design Systems & Components -- again framework independent, and I'm sure you know . what components are, but it is very useful to understand the separation of concerns &different strategies available here. See this article for a good overview
  • Webpack & babel - critical theoretical knowledge that I wished I knew earlier. Not just JS stufff -- I mean the whole asset pipeline & the choices you have. I can recommend - they have a free email course & a book too. You can try them in order

  • Unit testing -- & other types of testing in general. Knowing the use of each kind of tests will help you test your code better. Haven't ever used this resource, but heard a lot of good things

These are just off the top of my head. If you have any questions on these, or are looking for specific info on anything else, let me know. Hope this helps :)

talentlessguy profile image
v 1 r t l Author

My question is about theoretical knowledge, not practical.

of course I know these things you listed. I already build projects using design systems like styled-system, Next.js for universal web apps and Styled Components / Emotion / styled-jsx for styling. Before I used Stylus and PostCSS but using just .css file is pain the ass. I don't like CSS modules, just not my taste. For unit testing I use Jest, for E2E I use Cypress

palashkaria profile image
Palash Karia • Edited

Well, I consider much of this as theoretical knowledge.. As you see, I did not mention styled-system, next.js, jest, cypress, or any of those tools, as that what they are – tools.

What I did mention is the CSS spec, resources to look into it, & the theoretical arguments/milestones which led us to the CSS-in-JS we have now. Other things that I mentioned are because I jumped into the tooling too soon without knowing the background knowledge/the theory behind it.

Hence my recommendations :) It's up to you to consider these or not. Cheers!