Найти в Дзене

«Тупость» новичка в программировании

Итак, человек попробовал начать изучать программирование. И встрял сразу, или позже. Значит ли это, что он тупой, неспособный и программирование не его? Нет. Есть две вещи: 1. Темы, на которых типично застревание при обучении. При том, что как только человек понимает тему, в голове что-то щёлкает — всё, быстро перестаёт понимать, в чём была сложность. Об этом была предыдущая статья. 2. Неподготовленность человека. Да, это можно называть тупостью, так как в эту неподготовленность входит неподготовленность мышления — не поставлены базовые навыки и умение мыслить. Но это не конструктивно, так как эти вещи можно развить, как и многие другие. И эти вещи помогут быстрее справиться и с первым пунктом. Нарабатывайте по ходу изучения программирования. Да, вам потребуется гораздо больше времени на каждую тему, но в конечном итоге это может оказаться преимуществом. Те, кто долгое время изучают программирование легко, нахватывают пробелов и не готовы к застреванию на более поздних этапах. А вам к
Оглавление

Итак, человек попробовал начать изучать программирование. И встрял сразу, или позже. Значит ли это, что он тупой, неспособный и программирование не его?

Нет. Есть две вещи:

1. Темы, на которых типично застревание при обучении. При том, что как только человек понимает тему, в голове что-то щёлкает — всё, быстро перестаёт понимать, в чём была сложность. Об этом была предыдущая статья.

2. Неподготовленность человека. Да, это можно называть тупостью, так как в эту неподготовленность входит неподготовленность мышления — не поставлены базовые навыки и умение мыслить. Но это не конструктивно, так как эти вещи можно развить, как и многие другие. И эти вещи помогут быстрее справиться и с первым пунктом.

Что с этим делать?

Нарабатывайте навыки мышления по ходу изучения программирования. Да, вам потребуется гораздо больше времени на каждую тему, но в конечном итоге это может оказаться преимуществом. Те, кто долгое время изучают программирование легко, нахватывают пробелов и не готовы к застреванию на более поздних этапах. А вам к тому времени может быть уже привычно, и за счёт этого «черепаха» может обогнать «зайца», как в старой истории. Системность вам поможет.

А делать вам нужно следующее:

1. Ментальная модель кода в голове

О она очень упрощает понимание и выстраивание системы. Посмотрите на код — там есть только три вида элементов. Данные, операции над ними и «организаторы»(знаки препинания, ключевые слова, отступы, если Python).

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

Подробнее об этом и других вещах будет материал в телеграм-канале.

2. Алгоритмическое мышление

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

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

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

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

3. Абстрактное мышление

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

Иногда так можно отбросить 80%, 90% и больше информации, задач и т.д. и не делать ненужную работу. Оставшуюся часть можно ещё и разбить с помощью декомпозиции и всё, красота!

Чтобы развивать абстрактное мышление, вам потребуется задумываться о сути каждой программы, формулировать одним-двумя предложениями, что она делает. И заниматься псевдокодом или блок-схемами, переписывать код написанной или будущей программы на русском языке или в виде схемы.

4. Системное мышление

Только с помощью этой штуки вы можете по-настоящему понять любую тему в программировании. Потому что новички часто запоминают большинство вещей как шаблоны — вот так нужно писать. Почему? Зачем? А благодаря системному видению шаблона вы сможете использовать его для реальных задач, да и вообще для похожих, но немножко других.

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

Только если вы будете видеть какой-то шаблон как такую систему из связанных частей, вы сможете использовать этот шаблон под свои задачи. Потому что его всегда надо будет адаптировать под каждую реальную задачу, немножко перестраивая. Заменяя элементы, добавляя, убирая.

Поэтому каждый новый шаблон разбирайте, пытайтесь увидеть отдельные части и понять, зачем они нужны и как связаны. И экспериментируйте! Это очень поможет вам понять, что к чему

5. Трассировка и отладка

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

Отладка же это умение искать ошибки и исправлять их. Они неразрывно связаны с трассировкой, так как при отслеживании каждой строки кода многие ошибки становятся видны, это один из важных инструментов, но не единственный.

Изучите эти два инструмента, и с каждым новым уровнем владения тупить вы будете всё меньше. А ещё многие вещи по-настоящему становятся понятны только когда вы начинаете видеть, как код работает по шагам. Особенно циклы и массивы(в Python это списки)

6. Опыт работы с большими и реальными проектами(или прототипами)

Многие штуки в программировании непонятны новичкам потому, что непонятно, зачем вообще они нужны. Так как не упрощают, а усложняют процесс программирования.

Но поработав с реальным проектом или прототипом, где кода достаточно много, новичок столкнётся с неожиданными для него проблемами. И обнаружит, что все эти «усложняющие» жизнь вещи усложняют её только на небольших проектах. А на больших очень даже упрощают. И поэтому понять их будет легче. Это и подпрограммы, и объекты с классами и многие другие вещи.

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

Подытожим

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

Вячеслав Романьков — преподаватель программирования

И да, у меня есть закрытый платный телеграм-чат, где я в формате видео показываю, как я делаю вещи, которые рекомендую делать вам. Стоит это 1000 р или 10 евро в месяц, первый месяц — скидка 50%:

А ещё есть бесплатный, но огороженный чат нетоксичной поддержки новичкам в программировании. Перед вступлением я задаю несколько вопросов на всякий случай. Участие бесплатно и будет бесплатно для всех, кто вступит, даже если я решу монетизировать блог https://t.me/+O8VU7wV9AJdmZDky