Существует ли «карта программиста»? Что и за чем учить?
Доброго времени суток!
Подскажите, кто-нибудь находил ресурс, на котором была бы представлена интерактивная карта пути становления веб-разработчиком/программистом? Что я имею ввиду: например, вы начинаете изучение с HTML. Следующей технологией/языком (ступенью) для вас может быть JavaScript и CSS. Изучив HTML и CSS вам предлагают обратить внимание, например, на препроцессоры или постпроцессоры CSS. Изучив HTML, CSS и базовый JavaScript вам уже открываются различные фреймворки (JQuery, Bootstrap и т.д.). Ну и так далее, так далее. То есть под картой я имею ввиду список всех (ну не всех, самых популярных, известных или хорошо поддерживаемых) технологий, языков программирования, Фреймворков с указанием необходимых минимальных знаний для его использования. Лично я представляю это как упорядоченный граф, где вершины - это технологии, ребра и направление показывают связь между технологиями, а вес показывает сложность изучения технологии.
Может немного сумбурно сформулировал, но надеюсь вы поймете.
Изучив HTML и CSS вам предлагают обратить внимание, например, на препроцессоры или постпроцессоры CSS.
Конкретно с CSS я бы рекомендовал сразу начинать с препроцессоров, т.к. они по сути добавляют 2 основные фичи:
Вложенная структура
Переменные
Остальное особенности препроцессоров можно будет изучать после освоения CSS, но разработку для обучения стоит вести сразу использую препроцессор. Для начала можно использовать эту прогу для компиляции. Потом уже с нее переходить на компиляцию с пом. gulp, webpack и т.п.
Я программист с 15-летним стажем активной работы. Программирование - это инструмент для разработки ПО. Такой же как умение ходить для свободного перемещения из точки А в точку Б. Когда ребёнок рождается, нет никакой карты, в которой бы было указано - в какой последовательности он должен изучать ходьбу, чтобы стать в итоге полноценным человеком. Так и в разработке ПО - нет никакой последовательности. Вам нужно изучать всё сразу, понемногу. Причём не теоретически, а практически. Ребёнок не читает книг по развитию умения ходить, не слушает лекции от родителей. Он сразу пробует. Падает, и снова пробует. Пока не научится. С разработкой ПО в точности так же.
Нет никакого смысла читать книги по изучению конкретного языка. Ставьте задачу - "переместиться из точки А в точку Б" (сделать какое-то конкретное приложение) и гуглите по каждому непонятному моменту, пока программа не будет написана. Научитесь правильно строить поисковые запросы.
После того как вы с большим трудом запустите свой первый продукт. вы уже будете знать и уметь в десятки раз больше, чем студент, окончивший пятилетний курс по специальности "программирование" и прочитавший пару толстых теоретических книг.
Я наткнулся на вопрос топикастера, столкнувшись с аналогичной проблемой. Думаю, что в нынешнем обилии технологий хочется для себя набросать план изучения, чтобы наглядно понимать, что нужно освоить, чтобы добиться результата.
У ребенка есть 10-20 лет для освоения базовых навыков для жизни, а у нас их нет, поэтому хочется иметь конкретику, которая сэкономит личное время. Надеюсь понятно изъяснился.
А на самом деле все прекрасно гуглится.
Мне почудилось, что топикстартер ищет волшебную таблетку, или чудесный алгоритм, следуя которому можно быстро выучить язык, за ним второй, третий и тем самым стать крутым программером в сжатые сроки. "Выучить язык" вообще невозможно в принципе. Опыт приобретается долгими месяцами упорного труда. Чтобы сносно разбираться в любом деле необходимо не менее года практики. К программированию это тоже относится.
Какие-то основы всё равно нужно поднимать из книг или курсов, т.к. знания должны быть упорядочены. Подход простого решения задач и гугленья может сыграть злую шутку. Пример из своей жизни: умею гуглить, умею читать - легко и быстро могу разобраться в существующем проекте или собрать что-то на незнакомой технологии в краткие сроки, но на собеседованиях, обычно, спрашивают какие-то конкретные вещи (это не учитывая тех, кто на Front-End требует знания бинарных деревьев) и документации/интернета под рукой там нет. В итоге новичку-самоучке на первых парах проще фрилансить, чем устроиться куда-то в компанию, т.к. собеседования превращаются в непреодолимую стену.
Val Saven: Да, это вообще интересная тема. Если человек уже умеет фрилансить, на кой ему устраиваться куда-то в офис? Я программистом не устраивался на работу, поэтому не знаю - какие знания обычно требуют. Но когда сам нанимаю людей, главным образом оцениваю не энциклопедические знания, которые можно заучить, а другие более важные качества - стремление к самостоятельному поиску ответов, умение взять ответственность за свою работу (т.е. не просто написать программу и гордо доложить об этом, а самостоятельно проверить 20 раз вдоль и поперёк на разных наборах входных данных и только после этого сказать, что всё готово). Такие навыки невозможно почерпнуть из книг.
А вот что ещё я бы рекомендовал - непосредственная практика по той конкретной деятельности, которой вы хотите заниматься профессионально, а также работа в небольшой команде, где вас очень быстро "накачают" нужным опытом. Это позволит сократить срок обучения в разы.
Не тратьте время на теоретическое изучение литературы. Сразу идите в практику. А литературой/интернетом (а лучше консультациями опытных товарищей) пользуйтесь по мере возникновения вопросов. Более быстрого способа получить качественные навыки не существует. В любой отрасли.
Я наткнулся на вопрос топикастера, столкнувшись с аналогичной проблемой. Думаю, что в нынешнем обилии технологий хочется для себя набросать план изучения, чтобы наглядно понимать, что нужно освоить, чтобы добиться результата.
У ребенка есть 10-20 лет для освоения базовых навыков для жизни, а у нас их нет, поэтому хочется иметь конкретику, которая сэкономит личное время. Надеюсь понятно изъяснился.
А на самом деле все прекрасно гуглится.
всё правильно говорите!
всё сразу учить не получится, технологии конкурировать начали друг с другом, используя маркетинговые трюки, по типу "стероидов" которые уже стали мемом, поэтому действительно должна быть какая то карта. И желательно начинать с низов, но не с языков ассемблера, с появлением Си они стали не нужны. Мой совет, найти карту в которой упоминается язык Си, алгоритмы, и базы данных