Программирование с нуля Программирование с нуля: карта курса и честный разговор о профессии
0%

Программирование с нуля: карта курса и честный разговор о профессии

Программирование с нуля: карта курса и честный разговор о профессии

Если вы читаете это, скорее всего, вы никогда не писали код. Может быть, вы вообще не уверены, что это слово значит. Это нормально, и это ровно та точка, из которой начинается курс.

Здесь не будет фразы «это же элементарно». Программирование — не элементарно. Оно посильно: его освоили миллионы людей, у большинства из которых не было ни специального образования, ни какого-то особенного склада ума. Но это навык, который набирается медленно, и первые недели почти у всех проходят в ощущении «я ничего не понимаю». Мы к этому ещё вернёмся.

Эта первая статья — обзорная. Кода в ней немного, и запускать вы его пока не сможете: инструменты мы будем ставить в статье Первая программа. Задача сейчас — чтобы вы поняли, что вообще происходит, когда человек «программирует», как устроен путь впереди и на что вы подписываетесь.

Что такое программа простыми словами

Компьютер — это машина, которая умеет очень быстро выполнять очень простые действия: сложить два числа, сравнить два числа, положить число в ячейку памяти, взять его оттуда. Всё остальное — видеозвонки, банковские приложения, игры — собрано из этих простых действий. Просто их очень много: современный процессор выполняет миллиарды операций в секунду.

Программа — это записанный заранее список действий, которые компьютер должен выполнить. Программист — человек, который этот список составляет. Программирование — процесс составления такого списка.

Привычная аналогия — кулинарный рецепт. Рецепт тоже список действий: «нагреть сковороду», «разбить два яйца», «жарить три минуты». Аналогия хорошая, потому что показывает главное: порядок шагов важен, и шаги должны быть точными.

Но у неё есть важное место, где она ломается, и о нём стоит знать сразу. Рецепт пишут для человека, а человек додумывает. Если в рецепте написано «посолить», вы сами поймёте, сколько соли и что солить надо еду, а не сковороду. Компьютер не додумывает ничего. Он выполняет буквально то, что написано, включая ваши ошибки. Если вы напишете «повторяй шаг 3», не указав, когда останавливаться, — он будет повторять шаг 3, пока его не выключат.

Второе отличие: рецепт выполняется один раз для одного блюда. Программу пишут один раз, а выполняется она миллионы раз с разными данными. Поэтому программист думает не про «сложить конкретно 2 и 3», а про «сложить любые два числа, которые придут».

Вот как выглядит самая маленькая осмысленная программа на языке Python — том языке, который мы будем изучать:

# Строка, начинающаяся со знака #, — это комментарий.
# Компьютер его не выполняет, он написан для людей.

print("Привет!")          # print — команда «показать на экране»
print(2 + 3)              # компьютер сначала посчитает 2 + 3, потом покажет результат
print("2 + 3")            # а тут кавычки: это просто текст, считать нечего

Что будет на экране, если это запустить:

Привет!
5
2 + 3

Разберём построчно, ничего не пропуская:

  • print — это команда (правильное слово — функция, но к нему мы придём в статье Функции). Она означает «покажи то, что я дам тебе в скобках».
  • Круглые скобки ( ) — способ передать команде то, с чем работать. Без скобок Python не поймёт, что вы хотите что-то показать.
  • Кавычки " " превращают содержимое в текст. Для компьютера 2 + 3 без кавычек — это задача на сложение, а "2 + 3" — просто три символа подряд, как надпись на футболке. Это различие — источник огромного числа ошибок у новичков, и мы разберём его подробно в статье Переменные и типы данных.

Обратите внимание: вы уже прочитали настоящий код и поняли, что он делает. Дальше будет так же — по кусочку.

Что происходит между вами и процессором

Возникает разумный вопрос: если процессор понимает только простейшие операции с числами, почему мы пишем ему по-английски print?

Потому что между вами и процессором стоит переводчик. Вы пишете исходный код — текст на языке программирования, понятном человеку. Специальная программа переводит его в машинный код — те самые простейшие операции в виде чисел. В случае Python такая программа называется интерпретатор и переводит код по ходу выполнения, строчку за строчкой.

Пунктирная стрелка — не досадное исключение, а основной режим работы. Первый запуск почти никогда не срабатывает. Программист пишет, запускает, читает ругательство, чинит, запускает снова — и так по кругу, пока не заработает. Умение спокойно читать сообщения об ошибках — пожалуй, главный практический навык в этой профессии, и ему посвящена целая статья Ошибки и отладка.

Языков программирования сотни: Python, JavaScript, Go, C#, Java, Rust и другие. Они отличаются как отличаются человеческие языки — синтаксисом, привычками, областью применения, — но идеи внутри одни и те же. Выучив первый язык всерьёз, второй вы освоите в разы быстрее. Мы берём Python, потому что его код ближе всего к обычному английскому тексту и потому что на нём пишут очень разные вещи: от анализа данных до сайтов.

Пять кирпичиков, из которых собрано всё

Хорошая новость, которую редко говорят вслух: базовых конструкций в программировании мало. Практически любая программа в мире — от калькулятора до поисковика — собрана вот из этих пяти вещей.

Посмотрим на все пять в одной крошечной программе. Не пугайтесь, если сходу непонятно, — каждой строчке дальше посвящена отдельная статья курса.

# 1. ДАННЫЕ: сохраняем список цен под именем "цены"
prices = [120, 340, 90, 500]

# 5. ИМЯ ДЛЯ КУСКА РАБОТЫ: описываем правило «дорого ли это»
def is_expensive(price):
    # 3. УСЛОВИЕ: если цена больше 200 — считаем дорогим
    if price > 200:
        return "дорого"
    else:
        return "нормально"

# 4. ПОВТОРЕНИЕ: пройти по каждой цене из списка
for price in prices:
    # 2. ПОСЛЕДОВАТЕЛЬНОСТЬ: сначала посчитать, потом показать
    verdict = is_expensive(price)
    print(price, "—", verdict)

Вывод:

120 — нормально
340 — дорого
90 — нормально
500 — дорого

Что здесь стоит заметить, даже не понимая деталей:

  • prices = [...] — квадратные скобки задают список, набор значений под одним именем. Списки — в статье Списки, словари и множества.
  • def is_expensive(price) — мы дали имя правилу и можем применять его сколько угодно раз, не переписывая. Это и есть главная идея функций.
  • Сдвиг строк вправо (отступ) — не украшение. В Python именно отступ показывает, что строка «вложена» внутрь условия или цикла. Неправильный отступ — ошибка, и это первое, к чему придётся привыкнуть.
  • Программа читается почти как английское предложение: «для каждой цены в ценах — показать цену и вердикт». Это не случайность, а сознательная цель хорошего кода.

Вот и всё. Дальше программы становятся не сложнее, а больше: те же пять кирпичиков, просто их тысячи, и главная трудность профессионала — удержать порядок, а не изобрести хитрую конструкцию.

Карта курса

Курс идёт от «как вообще устроен компьютер» до «вот моя первая работающая программа и план, что делать дальше». Пропускать статьи не стоит: каждая опирается на предыдущие.

Как это ложится по времени и по смыслу:

Блок Статьи О чём он Ощущение на выходе
Как всё устроено 0102 Железо, память, файлы, сайты и серверы Компьютер перестаёт быть чёрным ящиком
Основы кода 0307 Установка, переменные, условия, циклы, функции Могу написать маленькую программу с нуля
Работа с данными 0810 Наборы данных, файлы, чтение ошибок Могу обработать реальные данные и починить поломку
Взрослые инструменты 1112 Классы, командная строка, контроль версий Работаю так, как работают в командах
Итог 1315 Проект целиком, индустрия, план дальше Есть готовая вещь и понятный следующий шаг

Курс не сделает вас инженером — это неправда, которую любят писать в рекламе. Он доводит до состояния «я понимаю базу и умею учиться дальше сам». Это ровно та точка, с которой начинается настоящий рост, и до неё доходит меньше людей, чем кажется.

Честный разговор о профессии

Теперь неприятная часть, ради которой стоит дочитать до конца.

Сколько это времени

Ориентиры, а не обещания. У всех по-разному, и разброс большой.

  • Первая работающая программа: несколько часов.
  • Уверенная база (примерно объём этого курса, с реальной практикой руками): 2–4 месяца при 8–12 часах в неделю.
  • Уровень, на котором берут на первую работу: чаще всего 8–18 месяцев регулярных занятий плюс несколько собственных проектов. Не «курс за 3 месяца и оффер».

Ключевое слово — регулярность. Час каждый день работает несопоставимо лучше, чем семь часов в воскресенье: навык программирования держится на памяти о деталях, а она стирается за неделю простоя.

Про что эта работа на самом деле

Кино показывает программиста как человека, который стремительно печатает и что-то взламывает. В реальности рабочий день выглядит примерно так: почитать чужой код, чтобы понять, как оно устроено сейчас; обсудить с коллегами, что именно надо сделать; написать сравнительно немного строк; полдня разбираться, почему написанное не работает; переписать; объяснить в переписке, что и зачем поменял.

То есть это профессия про чтение, разбирательство и общение гораздо больше, чем про печатание. Подробно рабочий день, роли и командные процессы разобраны в статье Как устроена IT-индустрия.

Про деньги и рынок

Честно: зарплаты в IT действительно выше средних по многим отраслям, и это законный мотив. Но рынок джуниоров (начинающих специалистов) заметно сложнее, чем был в 2020–2021 годах: входить в профессию сейчас дольше и конкурентнее, чем обещают рекламные ролики. Люди с одним пройденным курсом и без собственных проектов работу ищут долго.

Что реально повышает шансы: несколько своих проектов, которые можно показать и объяснить; умение внятно рассказывать о том, что вы сделали; знание базы (структуры данных, алгоритмы, как работает сеть), а не только одного фреймворка; и предыдущий опыт из вашей прошлой сферы — бухгалтеру проще войти в финтех, врачу в медтех, учителю в edtech.

Кому будет тяжело

Не «кому нельзя», а где стоит честно взвесить:

  • Если вам категорически невыносимо, когда что-то не получается часами. Это не редкий эпизод, это ежедневная фактура работы.
  • Если хочется быстрого результата. Первые месяцы отдача почти нулевая и очень демотивирующая.
  • Если единственная мотивация — деньги. Её обычно хватает месяца на три, а нужно на год.

При этом не является препятствием: возраст, гуманитарное образование, слабая школьная математика (для большинства направлений хватает арифметики и логики; математика всерьёз нужна в машинном обучении и графике), незнание английского на старте (его добирают по ходу).

Кривая обучения, которую все проходят

Вот как обычно выглядит ощущение собственной компетентности во времени. Пунктиром — то, чего люди ждут; сплошной линией — то, что происходит на самом деле.

Кривая обучения программированию: ожидаемый прямой рост и реальная кривая с провалом

Провал в середине — не признак того, что вы неспособны. Он возникает по понятной причине: пока вы повторяете за учебником, всё получается; как только садитесь писать своё без подсказок, выясняется, что понимание было поверхностным. Это происходит со всеми. Люди бросают именно здесь, обычно объясняя это себе фразой «у меня нет способностей».

Единственный способ пройти долину — продолжать писать код, пока стыдно и непонятно.

Как учиться, чтобы дошло

Несколько правил, которые дают наибольшую разницу.

Пишите руками, не копируйте. Копирование кода из статьи ощущается как обучение, но им не является. Перепечатывание вручную заставляет заметить каждый символ. Ещё лучше — сломайте пример специально: уберите кавычки, поменяйте число, сотрите отступ — и посмотрите, как изменится ошибка.

Предсказывайте вывод до запуска. Прежде чем нажать «запустить», скажите вслух, что ожидаете увидеть. Если предсказание не совпало — вы только что нашли дырку в понимании, а это самое ценное, что бывает.

Не читайте вперёд, если непонятно текущее. В программировании всё сцеплено: непонятые переменные сделают невозможными циклы, непонятые циклы — функции.

Держите цикл коротким. Не пишите тридцать строк и потом запускайте. Пишите две-три — запускайте — смотрите. Тогда, если сломалось, вы точно знаете где.

Про нейросети-помощники. Они умеют писать код и вам будут доступны. На этапе обучения они опасны: код появляется, задача «решена», а навык — нет. Разумный компромисс: сначала пытаетесь сами минимум 20–30 минут, потом можете спросить объяснение — но именно объяснение («почему здесь ошибка?»), а не готовый ответ, который вы вставите не читая.

Типичные ошибки новичков и что означают сообщения

Разберём три ошибки, которые вы почти наверняка увидите в первый же день. Читать сообщения Python проще, чем кажется: самое важное — последняя строка, там написан тип ошибки и пояснение.

1. Забыли кавычки у текста.

print(Привет)
NameError: name 'Привет' is not defined

Дословно: «Ошибка имени: имя Привет не определено». Python увидел слово без кавычек и решил, что это имя чего-то — переменной, команды, — а такого имени он не знает. Лечится кавычками: print("Привет").

2. Забыли закрыть скобку.

print("Привет"
SyntaxError: '(' was never closed

Дословно: «Синтаксическая ошибка: скобка ( так и не была закрыта». SyntaxError означает, что Python вообще не смог разобрать текст как код — и потому не выполнил ни строчки, даже правильные. Полезная привычка: если ошибка указывает на строку, где всё выглядит верно, проверьте строку выше.

3. Складываете текст с числом.

age = 30
print("Мне " + age + " лет")
TypeError: can only concatenate str (not "int") to str

Дословно: «Ошибка типа: к строке можно приклеить только строку, а не целое число». str — это текст (string), int — целое число (integer). Для Python «склеить два текста» и «сложить два числа» — разные операции, обозначенные одним знаком +, и смешивать их он отказывается. Правильно так:

age = 30
print("Мне", age, "лет")        # запятые: print сам расставит пробелы
print("Мне " + str(age) + " лет")  # или явно превратить число в текст
Мне 30 лет
Мне 30 лет

И одна ошибка не в коде, а в голове, самая вредная: «у меня ошибка — значит, я делаю что-то не то». Ошибка — это обратная связь, а не приговор. Опытные программисты получают их десятками в день; разница лишь в том, что они не расстраиваются и читают текст, а не сворачивают окно.

Практика

Пока Python не установлен, первые задания делаются на бумаге или в заметках. Если хочется попробовать код прямо сейчас, можно воспользоваться браузерной песочницей — например, Python Tutor, который ещё и показывает выполнение по шагам. Но спокойно можно и подождать до статьи Первая программа.

1. Рецепт для буквоеда. Опишите шагами, как приготовить чай, для существа, которое понимает всё буквально и не додумывает ничего. Затем перечитайте и найдите минимум три места, где вы что-то подразумевали, но не написали. Подсказка: «налить воду» — откуда, сколько, куда? «Подождать» — сколько и как понять, что пора?

2. Предскажите вывод. Не запуская, напишите, что покажет каждая строка:

print(10 + 5)
print("10" + "5")
print("10 + 5")

Подсказка: кавычки означают «это просто символы, не считай». Ответы разные во всех трёх строках.

3. Найдите ошибку. В коде ниже три ошибки из тех, что разобраны выше. Найдите их и напишите, какое сообщение выдаст Python на каждую:

name = Аня
print("Привет, " + name)
print("Тебе " + 25 + " лет"

Подсказка: одна ошибка про кавычки, одна про типы, одна про скобки. Начните сверху вниз — Python останавливается на первой.

4. Разложите на пять кирпичиков. Возьмите знакомое приложение — например, будильник — и опишите словами, где в нём данные, где последовательность, где условие, где повторение, где именованный кусок работы. Подсказка: «звонить каждый день, кроме выходных» — это сразу и повторение, и условие.

5. Свой план обучения. Честно посчитайте, сколько часов в неделю вы реально можете выделить, и в какие конкретно дни и часы. Запишите это как расписание, а не как намерение. Затем отметьте в карте курса выше, где по этому расписанию окажетесь через месяц. Подсказка: если получилось меньше 4 часов в неделю — это не повод бросать, но стоит заранее принять, что путь займёт больше года, и не разочароваться на третьем месяце.

Куда смотреть помимо курса

Ресурсы, которые действительно стоят времени новичка:

  • Официальный учебник Python — сухо, но точно; пригодится, когда захочется проверить, как «правильно».
  • Automate the Boring Stuff with Python — Эл Свейгарт, книга бесплатно доступна онлайн. Учит на бытовых задачах: переименовать сотню файлов, разобрать таблицу.
  • Think Python — Аллен Дауни, тоже бесплатно. Более академичный взгляд, хорошо ставит мышление.
  • CS50 — вводный курс Гарварда по информатике, бесплатный. Тяжелее, чем этот курс, но даёт отличную широкую картину.
  • Python Tutor — визуализатор: показывает пошагово, что происходит в памяти при выполнении вашего кода.

Не пытайтесь читать всё сразу. Один основной источник плюс один справочный — рабочая схема; пять параллельных курсов — верный способ бросить.

Мини-итог

  • Программа — это заранее записанный список действий; компьютер выполняет его буквально и ничего не додумывает.
  • Между вашим текстом и процессором стоит переводчик (для Python — интерпретатор), и его сообщения об ошибках — нормальная часть работы, а не сигнал вашей неспособности.
  • Почти всё в программировании собрано из пяти кирпичиков: данные, последовательность, условие, повторение, именованный кусок работы. Дальше программы становятся больше, а не принципиально сложнее.
  • Реалистичные сроки: база — месяцы, работа — скорее год-полтора регулярных занятий с собственными проектами. Регулярность важнее интенсивности.
  • Провал уверенности в середине пути проходят все. Это не диагноз, это этап.
  • Учиться лучше всего так: перепечатывать руками, предсказывать вывод до запуска, ломать примеры нарочно и держать цикл «написал — запустил» коротким.

Что дальше

Прежде чем писать код, полезно понять, на чём он выполняется: что такое биты, зачем нужна память, чем занят процессор и что физически представляет собой файл. Без этого многие вещи дальше приходится заучивать, а с этим — они становятся очевидными.

Как устроен компьютер: биты, память, процессор и файлы простыми словами

Нашли неточность? Выделите фрагмент текста — рядом появится жучок.

Нужен разбор именно вашей ситуации?

Статья описывает общий случай. Если у вас частный — можно разобрать его отдельно, платно. А если не хватает целого материала, предложите тему: её оплачивают вскладчину, и она выходит открытой для всех.

Доска запросов