Какие области computer science нужно знать full stack веб разработчику?
В подавляющем большинстве случаев деятельность программистов далека от науки, тем более деятельность web-разработчиков.
Веб-разработчику знание computer science не обязательно, но полезно. Помимо общего развития оно позволит писать более производительный и менее ресурсоемкий код.
Что стоит изучить:
1. базовое устройство и принцип работы ЦП и ОЗУ, как выполняются команды, как происходит чтение и запись памяти, как работают процессорные кэши, как работают прерывания и для чего они нужны.
2. базовое понимание ассемблера хотя бы для одной архитектуры (наиболее актуально x86_64)
3. базовое понимание как работает ОС - системные вызовы, отличие user space от kernel space, отличие микроядерной и монолитной архитектур. Что такое виртуальная память
Помимо общих тем полезно будет знать более прикладные вещи:
1. Структуры данных, какие есть, какая для чего нужна и где ее более оптимально использовать
2. Алгоритмы, алгоритмическая сложность (о-нотация и омега-нотация), знание о наличии распространенных решений и понимание, какое решение будет наиболее оптимально в конкретном случае
3. Архитектура программного обеспечения
4. Паттерны проектирования
5. ООП (наследование, инкапсуляция, полиморфизм подтипов (на наследовании и на интерфейсах), композиция, абстракция)
6. ФП (функции высшего порядка, замыкания, параметрический полиморфизм, композиция, ассоциативность, контроль побочных эффектов, монады и функторы)
А еще есть закон протекающих абстракций, согласно которому не лишним будет знать, что и как у нас работает под капотом:
1. как работает интерпретатор python
2. как работают интерпретаторы js (на примере v8 хотя бы)
3. как работают JIT компиляторы, и как это вообще возможно если executable память read-only, а writable память не executable в большинстве популярных ОС
4. как работает сборка мусора, какие есть алгоритмы, почему большинство сборщиков мусора используют поколения. А конкретно к v8 еще можно задать актуальный для react вопрос: почему иммутабельность и постоянное создание коротко-живущих объектов в js относительно дешево, если аллокация памяти - это дорого?
5. как работает браузер, как он рисует страницу, как обрабатывает event-loop js
P.S. большинству работодателей предлагающих работу связанную с разработкой в вебе это все нафик не сдалось от нанимаемого разработчика... большинству работодателей нужно тупое формошлепство на фронте и создание тупых проксей от БД до фронта на бэке... но те немногие работодатели, кому эти знания стоят острой необходимостью, готовы платить практически любые деньги разработчику, который все это знает и умеет применять на практике.