Что обязательно нужно знать сильному разработчику:
- English
- Математику
- Алгоритмы
- Паттерны
- Уметь общаться с людьми (возможно ключевой навык в любой сфере)
В языках и технологиях опыт придет по мере использования.
И да, у каждого работодателя свой список и что-то из его списка нужно знать лучше, что-то достаточно поверхностно.
Можно подходить так, выбираете интересующую область, к примеру хотите заниматься big data - хранением и обработкой данных, статистикой и визуализацией. Изучаете что актуально на рынке в этой области. Языки R, Python, интрументарий - Hadoop и Ко.
Чем дольше вы активно разрабатываете в какой-либо сфере, тем больше у вас опыта, в то же время технологии и языки нередко скоропостижно устаревают.
Теперь непосредственно пройдусь по вопросам.
Джентльменский минимум.
1. Бэкенд-разработчику нужно знать ЯП и фреймворк на котором пишется приложение, работу с БД, систему контроля версий.
2. Фронтенду - ЯП и фреймворк, контроль версий.
3. Да, забывать что не используешь, процесс нормальный. Если уже работали с каким-либо стеком, вернуться к нему проще, чем изучать заново.
Помимо указанного минимума есть такие вещи как:
- Системы управления зависимостями.
- Инструментарий.
- Командная строка.
- Автоматизация процессов.
- Тестирование.
- Всевозможные парадигмы и принципы разработки.
Не пугайтесь списка, если выбираете путь разработчика, многое осилите с годами.