Некоторые вещи, которые должен знать любой программист:
- Алгоритмизация. 1 Важно развивать своё алгоритмическое мышление, чтобы уметь составлять алгоритмы, декомпозировать задачу и выявлять нужную последовательность действий. 1
- Оценка сложности алгоритмов. 1 Нужно хотя бы примерно прикидывать временную сложность алгоритма, чтобы понимать, какой участок кода тормозит программу. 1
- Кодировки. 1 Ориентирование в них хотя бы на минимальном базовом уровне поможет избежать проблем. 1
- Парадигмы программирования. 1 Знание отличий, преимуществ и недостатков разных парадигм поможет выбрать наиболее подходящий инструмент и подход для решения задачи. 1
- Техники и приёмы программирования. 1 Стоит ознакомиться с понятием рекурсии, мемоизации, динамического, линейного программирования и понимать, где и когда их лучше применять. 1
- Архитектура компьютера. 12 Хотя бы примерно нужно понимать, что такое память в компьютере, зачем она нужна, какая быстрее и так далее. 1
- Ориентирование в структурах данных. 12 Нужно понимать, зачем нужна каждая из структур (списки, деревья, очереди и другие), какие из них в каких случаях более эффективны. 2
- Устройство сети. 12 Важно понимать, как работает интернет: что такое протоколы, сокеты, DNS, IP-адреса, зачем всё это нужно и как взаимодействует. 1
- Знание английского языка. 34 Множество книг и статей по программированию выходят именно на английском языке. 3