Почему после курсов программирования сложно писать собственные проекты и как научиться сначала понимать логику задачи, на примере работы библиотеки.
Key Takeaways
- Перед написанием кода нужно понять, что именно должна делать программа, разбив процесс на действия и шаги
- Реальный процесс (например, работа библиотеки) — хороший источник логики для проектов
- Умение писать код и умение проектировать решение — разные навыки, и второе часто не тренируется на курсах
- Трудности новичков часто связаны не с языком, а с отсутствием навыка анализа задачи
What the video covers
- Курсы обычно показывают готовую задачу, и ученик повторяет за автором, но при собственном проекте не знает, с чего начать
- Знание синтаксиса и конструкций не означает умения писать проекты, как знание грамматики не даёт умения составить предложение
- Автор сам долго сталкивался с этой проблемой и даже бросал программирование, работая менеджером
- Ключевой пропущенный этап — разбор самой задачи и понимание, как она должна работать, до написания кода
- Для наглядности разбирается работа библиотеки: каталог, тетрадь записи, формуляры и тетрадь долгов
- Выдача книги включает проверку читателя (нет просрочек, меньше пяти книг на руках, нет долга), затем проверку книги
- Продление возможно один раз, при возврате считается опоздание и штраф 50 руб. за каждый день
- Редкие книги выдаются только в читальный зал, повреждённые книги отправляются на реставрацию
- Бумажная система неудобна: формуляры легко потерять или перепутать, поиск требует перебора всех записей
- Логика, выписанная из реального процесса, переносится в программу: записи хранятся в базе, а действия становятся шагами алгоритма
Chapters
- 00:00Проблема курсов: готовые задачи и ступор на своём проекте
- 00:49Почему знание языка не даёт умения писать проекты
- 01:45Личный опыт автора и главная причина проблемы
- 02:43Разбор работы библиотеки на бумажных документах
- 04:40Правила выдачи, продления и возврата книг
- 07:35Недостатки бумажной системы и выделение логики
- 10:50Переход от процесса к программе и итоги
Full Transcript — Download SRT & Markdown
Speaker A
В курсах и уроках мы обычно видим уже готовую задачу, где автор уже сам знает, что должна делать программа и показывает нам, как это написать. Мы за ним повторяем и получаем рабочую программу.
Speaker A
Но когда садимся за собственный проект, никто нам уже не говорит, с чего начать. Нам самим нужно понять, что должна делать программа, и поэтому мы ловим ступор.
Speaker A
Вот получается, я что-то учу, есть какая-то конструкция, но как эту конструкцию применять конкретно, как конкретной задаче какой-то, я не понимаю. Я не пойму, куда применять и как применять этот код.
Speaker A
[музыка] Человек может полгода изучать язык и всё-равно не умеет писать проекты. [музыка] Он может заниматься по 5-6 часов в день и при этом сам создать ничего не может. Он может учиться на курсе с наставником, репетитором.
Speaker A
Он может понимать язык, но проблема остаётся той же самой. Это как будто знать всю грамматику английского, но не мочь самому составить даже простое предложение. И, конечно, [музыка] в такие моменты кажется, что у других есть мозги, у них всё получается,
Speaker A
проекты пишутся, на работу устраиваются, а ты один какой-то не такой. И опускаются руки, начинаешь уже в себе сомневаться.
Speaker A
Я сам долго сталкивался с этой проблемой. В какой-то момент даже бросал программирование, работал просто обычным менеджером [музыка] потому что думал, что я тупой и это просто не моё.
Speaker A
[музыка] Но со временем я всё-таки разобрался, чего мне не хватало. А когда начал обучать новичков, то увидел, что многие сталкиваются с той же проблемой.
Speaker A
А дело вот в чём, ребята. Мы учимся писать код, но часто пропускаем этап, на котором нужно сесть и разобраться в самой задаче понять [музыка] как она должна работать. А ведь именно из этого этапа и берётся логика проекта, [музыка] которую нам обычно в
Speaker A
видеокурсах не показывают. В этом видео я покажу, как понять, что должна делать программа ещё до написания кода. Для этого мы возьмём как пример библиотеку.
Speaker A
Посмотрим, какую работу выполняет библиотекарь. Что он делает, по каким правилам. [музыка] Затем разберём этот процесс отдельно.
Speaker A
Выделим действия, разобьём их на шаги и получим [музыка] логику будущей программы. В этой библиотеке нет программы. Все записи ведутся от руки на бумаге.
Speaker A
Давайте посмотрим, что тут у нас. Книги стоят на стеллаже. Читатели к стеллажу не подходят, они ждут у стойки, а книгу им приносит библиотекарь.
Speaker A
Порванные книги кладут на полку реставрации. Их оттуда потом забирают в ремонт. А редкие книги домой не выдают. Их читают [музыка] здесь, прямо в читальном зале.
Speaker A
На столе у библиотекаря четыре документа: каталог, тетрадь записи, формуляры и тетрадь долгов. Каталог - это ящик с карточками для книг. На каждую книгу в библиотеке заведена одна карточка.
Speaker A
На карточке написаны автор, название и год издания. Инвентарный номер у каждой книги свой, и такой же номер написан на самой книге. Место - это на какой полке стеллажа стоит сейчас книга. По нему библиотекарь её и находит. А сами книги
Speaker A
стоят на стеллаже. В каталоге лежат только записи о них. Редкие книги отмечены красной наклейкой и на карточке, и на самой книге. Домой их не выдают, только в читальный зал.
Speaker A
Тетрадь записи. Сюда вписывают каждого нового читателя. Номер читательского билета. По этому номеру библиотекарь находит все остальные записи о читателе, имя и телефон, чтобы знать, у кого книги и позвонить, если их не вернули, а то мало ли.
Speaker A
Формуляры. Это карточки, на каждого читателя своя. Они лежат в ящике по номерам билетов. Когда человек берёт книгу, в формуляр пишут её номер, название, дату выдачи и дату, до которой её вернуть. Когда книгу сдают, ставят дату сдачи. Если даты
Speaker A
сдачи нет, книга сейчас у читателя на руках. Тетрадь долгов. Сюда записывают штрафы, когда читатель не заплатил сразу.
Speaker A
Номер билета, имя, за что штраф и сколько. Когда читатель платит, долг зачёркивают и ставят дату оплаты.
Speaker A
Вот пришёл человек и называет книгу. Библиотекарь просит читательский билет. А человек оказывается здесь впервые.
Speaker A
Тогда сначала его надо записать. Библиотекарь вписывает в тетрадь записи новый номер билета, имя и телефон. Потом заводит на читателя формуляр. Он пока пустой.
Speaker A
Читатель получает свой билет. И библиотекарь сразу идёт искать его книгу. По каталогу он узнаёт номер книги и на какой полке она сейчас стоит. Книга на месте.
Speaker A
Библиотекарь берёт её. В формуляр он записывает номер и название книги, дату выдачи и дату возврата. Книгу выдают на 14 дней.
Speaker A
Приходит постоянный читатель. Он называет книгу и показывает билет. Библиотекарь не помнит читателя в лицо, поэтому каждый раз проверяет всё по порядку, по алгоритму. Сначала все проверки читателя, потом уже по книгам.
Speaker A
То есть, по номеру билета он находит формуляр. Так, просроченных книг нет, на руках меньше пяти книг, о'кей. В тетради долгов этого читателя нет, отлично.
Speaker A
Теперь книга. По каталогу библиотекарь узнаёт, где она стоит. Книга на месте. Но на ней красная наклейка.
Speaker A
Книга редкая, поэтому домой её не выдают. Библиотекарь отдаёт книгу и читатель садится с ней в читальный зал.
Speaker A
Следующий читатель просит книгу. Проверка та же. Просрочек нет. На руках меньше пяти книг, долгов тоже нет.
Speaker A
Библиотекарь смотрит в каталоге, где стоит книга, но на полке её нет. Книгу уже взял другой читатель. Пока книгу не вернут, выдать её нельзя.
Speaker A
Следующий читатель хочет взять ещё одну книгу. Библиотекарь находит его формуляр. Одна книга просрочена. Срок вышел, а читатель её ещё не вернул. Поэтому пока он не вернёт эту книгу, новую ему не выдадут.
Speaker A
А остальное уже дальше не проверяют. Другой читатель тоже просит книгу. Просроченных книг в его формуляре нет.
Speaker A
Но на руках уже пять. А больше пяти книг одному читателю не выдают, чтоб книг всем хватило. Поэтому и отказывают.
Speaker A
У одного срок подходит к концу. Первый читатель не успел дочитать свою книжку и просит продлить. Библиотекарь смотрит формуляр. Срок ещё не прошёл и книгу раньше не продлевали. Он зачёркивает старую дату возврата и пишет новую, ещё на 14 дней. Продлить книгу можно только
Speaker A
один раз. Первый читатель возвращает книгу. Он опоздал на неделю. Библиотекарь записывает формуляр дату сдачи.
Speaker A
По календарю он считает, на сколько дней читатель опоздал. За каждый день опоздания штраф 50 руб. Читатель платит и книга возвращается на стеллаж.
Speaker A
Другой читатель сдаёт книгу с оторванной обложкой. Ремонт оплачивает читатель. Цена ремонта есть в прайсе. Книгу кладут на полку реставрации. Пока её не починят, её никому не выдают.
Speaker A
В тот же день книгу забирают в ремонт. Следующий читатель просит книгу. Формуляр в порядке, просрочек нет, книг на руках нет, но в тетради долгов за ним штраф. Прошлую книгу он сдал с опозданием. Пока долг не оплачен, книги не выдают. Читатель платит сразу,
Speaker A
библиотекарь зачёркивает долг и ставит дату оплаты. Дальше всё как обычно. По каталогу библиотекарь узнаёт, где стоит книга. Книга на месте.
Speaker A
Библиотекарь её берёт, записывает её в формуляр и выдаёт. Книгу вернули из ремонта. Библиотекарь ставит её на стеллаж.
Speaker A
Теперь её снова можно выдавать. Вся эта работа держится на бумагах и на памяти библиотекаря. Смотрите, формуляров сотни, их достают и кладут обратно и потом вот этот весь бардак на столе. Если формуляр положили не туда, его не найти уже.
Speaker A
В итоге книги у читателя есть, а записи может о них нет. Похожие формуляры легко перепутать и записать книгу вообще не тому читателю.
Speaker A
Чтобы проверить один долг, библиотекарь листает тетрадь долгов страницу за страницей. А чтобы узнать, у кого сейчас конкретная определённая книга, он перебирает все формуляры, потому что они лежат у него по читателям, а не по книгам. Книгу просроченную ищут также.
Speaker A
Берут каждый формуляр и сверяют даты с календарём. Это очень долго и легко ошибиться. Пока библиотекарь вот этим всем занимается и ищет, там считает, у стойки собираются уже в очередь. Люди подолгу ждут.
Speaker A
Вот это вся работа библиотеки, ну, в таком урезанном формате, чтобы вам было понятно. Всё, что нужно сейчас для программы у нас есть из этого рассказа. Сейчас давайте соберём из него некий алгоритм, программу, чтобы было понятно, как это всё у нас работает.
Speaker A
Давайте выпишем всю эту работу уже как программу. Не кодом, просто логикой. Библиотекарь у нас делает шесть разных дел. Он записывает читателей, выдаёт книги, продлевает срок, принимает книги, принимает оплату и возвращает книги из ремонта. Вот это каждое дело это отдельная функция. У неё
Speaker A
есть имя и то, что ей нужно знать об этом деле. Каждое дело делится на шаги.
Speaker A
Вот выдача это проверить читателя, проверить книгу и оформить выдачу. Проверить читателя это значит убедиться, что у него нет просрочки, на руках меньше пяти книг и нет долга.
Speaker A
Проверить книгу, найти её в каталоге и убедиться, что она на месте и она не редкая. Оформить выдачу, записать её в формуляр и поставить срок.
Speaker A
Приём книги. Записать дату сдачи, посчитать штраф, отправить её на ремонт и записать долг. Вот вся программа библиотеки.
Speaker A
Это та же работа библиотекаря, только записанная по шагам. В конце остаются простые шаги обычными словами. Достать из базы, посчитать, сравнить. Если что-то не так, книгу не выдают. Например, нет просрочки. Это достать не сданные книги и сравнить срок с сегодняшней датой.
Speaker A
Если срок прошёл, новую книгу не выдают. А вот так это выглядит в коде. Идёт запрос в базу, потом цикл и какое-то условие. Каждый шаг из карточки несколько строк кода. Сейчас наш фокус не на коде, а на том, откуда он
Speaker A
появляется. Также до код раскладывается и оформление выдачи. Собрать запись, сохранить её в базу. Поставить срок сегодня плюс 14 дней.
Speaker A
Вот чего не хватает новичку. Он открывает редактор и не знает, что писать. Потому что не разобрал логику. А когда логика выписана, уже становится понятно, что писать.
Speaker A
Теперь представим, что мы написали наш код по этой логике и теперь видим ту же библиотеку. Теперь у нашего библиотекаря есть программа. Тетради на столе больше нет.
Speaker A
Все записи хранятся в программе. На экране те самые шесть действий из карты, которые мы рисовали до этого.
Speaker A
Каждое стало кнопкой. Вот приходит читатель, просит книгу. Библиотекарь вводит номер билета, номер книги и нажимает выдать. Программа сама проходит те же проверки, что библиотекарь делал вручную.
Speaker A
И на это уже уходит секунда. Бац, у читателя долг. Программа отказывает и показывает сумму.
Speaker A
Библиотекарь принимает оплату, долг программа отмечает сама. Снова нажимает выдать. Теперь все проверки пройдены и программа подсказывает полку. И всё, библиотекарь только ходит к стеллажу.
Speaker A
Следующий читатель сдаёт книгу с опозданием. Библиотекарь вводит номер книги, программа сама находит выдачу и считает дни опоздания и штраф.
Speaker A
Календарь больше не нужен. Читатель платит и книга возвращается на стеллаж. Другой читатель сдаёт порванную книгу.
Speaker A
Библиотекарь отмечает повреждение. Программа сама берёт цену из прайса и ставит книге отметку на реставрации.
Speaker A
Читатель платит за ремонт, книга на полку реставрации. Записи, проверки, расчёты теперь делает сама программа. Библиотекарь ходит только к стеллажу и к полке реставрации.
Speaker A
Очереди у стойки больше нет. Давайте подведём итог. Сначала мы посмотрели, как работает библиотека на бумаге. Потом выписали её логику, какие там действия, какие шаги выполняются, что проверяют, что считают. И только в конце мы записали эту логику кодом.
Speaker A
Программа наша делает ровно то, что делал библиотекарь. Мы ничего не придумывали. [музыка] Всё взяли из его работы.
Speaker A
Вот так придумывается любая программа. Сначала разбираешься, как устроено дело, потом пишешь код. И помните сообщение, которое мы читали в начале? "Синтаксис знаю, написать проект не могу". Вот теперь понятно, откуда брался этот ступор.
Speaker A
Вот вся программа библиотеки. Справа наш код, условия, циклы, запросы в базу, технологии, языки. А всё, что слева, вся эта логика. Мы просто описали работу библиотеки. Ступор был из-за того, что мы думали, что логика должна появляться сама, потому что мы хорошо учим язык. Но
Speaker A
оказывается, это не так. Ребята, сам язык не подскажет, какую программу писать. Задача, что писать, решается за рамками [музыка] языка программирования.
Speaker A
Поэтому, когда не знаете, с чего начать программу, начинайте с вопроса: как эта работа устроена без программы?
Speaker A
Вот что сказал мой ученик, когда впервые так сделал. И уже когда начал писать код, я вижу, что я пишу, а у меня есть готовая картина, что должно быть, как оно должно работать.
Speaker A
Ну, то есть, это классно. Это очень круто. Очень круто. Поэтому спасибо тебе, Рахим. Хорошо, что я тогда на этот шаг решился.
Speaker A
Решился и выбрал хорошего наставника. Очень хорошая прокачка мозгов. [музыка] [музыка] [музыка] [музыка] [музыка]
Topics:программированиекурсы программированияначинающие программистыалгоритмылогика программыпроектированиеPythonобучение программированиюанализ задачибиблиотека











