В этой статье я хочу разместить небольшой список того, что очень желательно знать человеку, который ступает на путь программиста. Этот списочек был получен в результате общения с людьми, не один год работающими в этой сфере, либо рядом с ней. Поэтому хоть это и не блог программиста, список должен быть довольно актуальным.
Условные обозначения:
- ЯП — языки программирования
- СД — Структура данных
- СКВ — системы контроля версий
- СУБД- система управления базами данных
Итак, ты хочешь стать программистом, а не просто кодером или индусом)) Что нужно сделать, выучить, с чем надо хотя бы познакомиться:
- Выбрать область и согласно ей выбрать один или несколько ЯП:
- основные языки этой области, например :
- 1-2 фреймворка/ набора библиотек, (наиболее популярных в интересной тебе области). Вот например фреймворки, касающиеся веб-разработки:
- Полезные ссылки по теме:
- Изучить патерны проектирования
- Алгоритмы и СД:
- о том, что это:
- Типовые:
- https://ru.wikipedia.org/wiki/Переменная_(программирование)
- https://ru.wikipedia.org/wiki/Массив_(программирование)
- https://tproger.ru/translations/linked-list-for-beginners/
- https://tproger.ru/translations/stacks-and-queues-for-beginners/
- https://tproger.ru/translations/binary-search-tree-for-beginners/
- https://tproger.ru/translations/sets-for-beginners/
- https://tproger.ru/translations/algorithms-and-data-structures/
- Книжка по Алгоритмам и СД:
- СКВ — знать хотя бы одну и уметь пользоваться, например Git:
- Регулярные выражения, они же regexp:
- Компилятор, интерператор, отладчик, системы сборки (ant, maven, gradle и прочие) — знать что это, знать какие есть, в общих чертах представлять как это работает. Что это не просто «магия», а коробочка которая вот так и так делает то и то:
- Дополнительные навыки, которые будут очень полезны, хотя вроде и не очевидны:
- SQL и 1-2 СУБД в основе — архитектором баз данных становиться не надо конечно, но понимать, что плохо спроектированная база или написанный запрос существенно будут тормозить работу надо. Равно как и знать, каким образом этого избежать. Кстати, не плохо бы знать, что еще есть и NoSQL БД, например MongoDB, Cassandra.
- JS
- HTML
- Linux в базе + база по скриптам (тот же bash) — не надо быть гуру, но поднять и администрировать веб сервер, а в идеале всю связку LAMP Вы должны уметь (опять же пример для веб-разработки. Если Вы не связаны с ней — нечто подобное, что составляет основу в Вашей сфере). Хорошим подспорьем тут будут курсы от Технострим Мейл.ру, либо книжки от компании O’railly.
- Понимание работы компьютера в базе. Так сказать основы компьютерной грамотности- железо, софт, ос. Гуру быть не надо, но чуть больше чем просто уверенный пользователь. Желательно на голову-две.
- Основы компьютерных сетей — ну тут вообще никак иначе. Сейчас трудно найти софт, который не использует сеть. И понимание того, как это все устроено, хотя бы примерно — очень важно. Полистайте книжки Олиферов или Таненбаума. Хорошим вариантом является курс CCNA — хотя бы по верхам пройдитесь.
- Основы Информационной безопасности — права доступа, алгоритмы щифрования, хеши, как работает ssh, tls и подобные им протоколы. Что такое ключи и сертификаты. Уязвимости, эксплоиты и тп. В современном мире нельзя быть разработчиком который в этом ноль без палочки.
- Идеологические и философские моменты:
- Уметь разбираться в чужом коде и примерах, а не копипастить его бездумно.
- Стремиться к красивым и простым решениям.
- Стремиться решить задачу оптимальным способом или оптимизировать чужое решение.
Если у кого-то есть, что добавить по этой статье- пишите мне или в комментарии, с радостью дополню!