Основы компьютерной грамотности для разработчика
Профессиональный разработчик должен знать не только "свой рабочий язык" или фреймворк которому научился. В разработке (как и в любой другой профессии) чтобы работать на высоком уровне нужно иметь запас знаний и опыта заметно больше, чем требуется непосредственно для выполнения задач.
Тут я собираю такие "общие" знания, которые сами по себе в программировании используются редко, но позволяют понимать как работает система и писать программы так чтобы они работали хорошо.
На странице собраны ссылки на внешние материалы, по темам которые я считаю важными понимать как основу. Ссылки постепенно могут меняться, дополняться. Какие-то темы я буду раскрывать сам по мере возможности.
Устройство компьютера
- 📖 Представление целых чисел в памяти компьютера
- Представление вещественных чисел в памяти компьютера
- 📖 Кэш процессора
Сети
Отличный курс по сетям - Сети для самых маленьких, рассказывается теория о локальных и глобальных сетях начиная с самых азов.
Дальше отдельные темы:
- 📖 DNS
- 📖 MAC-адрес
- 📖 IP
- 📖 TCP
- 📖 UDP
- 📖 Bash - при работе в linux-среде нужны навыки работы в командной строке linux, основные команды. Без этого будет сложно.
Технологии
Алгоритмы
- Учебник по алгоритмам от яндекса. Тут объясняются основные теоретические понятия: сложность, типы алгоритмов, структуры данных. Без привязки к конкретному языку программирования.
- Яндекс-тренировки по алгоритмам - тут есть хороший набор задач на разные типы алгоритмов, система их автоматической проверки, видеоразборы задач объяснение принципов их решения. Хорошо подойдёт и для тренировки и для освежения знаний у опытных разработчиков.
Навыки
- Отлаживать код "в уме" - без отладчиков, песочниц и т.п. понимать как работает программа и уметь выполнить её вместо компьютера. Этот навык позволяет понимать работу сложных систем в диагностировать ошибки без возможности включить отладчик: по симптомам, логам и т.п.