Найти тему
Репетитор IT mentor

Что делать, если программирование кажется сложным, но очень хочется разобраться в нем? #1

Оглавление

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

Цикл статей :
Что делать, если программирование кажется сложным Часть 1 <--
Что делать, если программирование кажется сложным Часть 2
Что делать, если программирование кажется сложным Часть 3

Что делать: хочется кодить, но абсолютно не получается ?

В школьные годы у меня было именно так. Я хотел научиться, но не понимал, а когда спрашивал у учительницы информатики, ее ответ был что-то вроде "ну это же просто и я уже объясняла". В то время я ещë не знал о способе "сжечь мосты", но я начал его использовать: записался на сдачу ЕГЭ по информатике, на дополнительные занятия, дома пытался писать программы на Pascal. Всё это было очень тяжело, ведь даже простые синтаксические ошибки я мог искать часами, а простейшие задачи превращались в невыполнимые проблемы. Из-за такого состояния дел иногда приходила депрессия и ощущение себя полным тупицей.

На тот начальный период мне помогала дисциплина, я просто силой заставлял себя заниматься информатикой. Хотя в голове был полный хаос вместо структурированного представления о Computer Science.

Даже учительница информатики отговаривала меня от сдачи ЕГЭ, чтобы я ее не опозорил. В целом мне было плевать на её мнение. И вам должно быть плевать на мнение людей, которые в вас не верят! Вы живёте ради себя и своих достижений, это важнее чужих оценочных мнений. Всю жизнь вас будут осуждать и критиковать. Но это не повод опустить руки и ничего не делать. К тому же, это так приятно - идти против всех преград, побеждать свою лень, свой мозг, свою усталость, свою безграмотность, что стоит попробовать каждому. Это как в спорте: цель достигается через боль.

Информатику я сдал неплохо, если судить по среднему, мой результат был около 66. Но я был расстроен. Осталось много непонятных вопросов, и я не знал где искать ответы, я был полностью потерян.

В чем была моя основная проблема на тот момент? Возможно, это была слепая вера в единственный источник информации в виде лекций учительницы по информатике и её методички. На тот момент я думал, что единственное по чему я могу научиться, это та самая школьная методичка. Каждый вечер пытался её читать и делать аналогичные задачи, но ничего не работало. Снова накатывали мысли: "какой же я тупой, видимо, мне не дано".

Немного забегая вперед скажу, что да, на тот период были проблемы у меня, но и методичка была д̶е̶р̶ь̶м̶о̶м̶ ... переводом бумаги. Почему ? Программы были написаны без комментариев, названия функций транслитом или бессмысленными буквами, как и все переменные, отсутствие табуляции и ужасный стиль кода. Приведу доказательство, чтобы вы сами убедились.

-2

Думаю, что даже комментировать не нужно. Как начинающий может научиться по такому чтиву ? НИКАК.

Ладно, вы можете сейчас сказать "хороший код не нуждается в комментариях". Согласен, да! Но тут даже код не хороший. А что, если так будут писать все в реальных коммерческих проектах? Как думаете, долго ли удастся поддерживать такой код?

Вот таким вот знаниям учат физ-мат лицеи и технические ВУЗы. Зачем тратить на это время, я даже не понимаю. Всё равно придется переучиваться. Как только вам надоест это непонимание, вы начнете искать качественную литературу и – о, чудо! – всё оказывается совершенно иным! Оказывается, что можно потихоньку понимать информатику и программирование, оказывается, что можно разбираться по качественным примерам.

Какая книга тогда подойдет для начала?

И я с чистой совестью посоветую вам «Совершенный код» Стива Макконнелла. Несмотря на то что первые 50 страниц книги наполнены информацией, которая может показаться очевидной любому мыслящему человеку, книгу стоит прочесть до конца. Наполненная множеством интересных примеров, книга действительно способна навести на путь мудрого программирования. Примеры в данной книге более приближены к реальному коммерческому коду, чем игрушечные примеры из книг и методичек преподавателей информатики в школах и вузах.

-3

Скачать книгу

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

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

Самыми полезными с практической точки зрения мне показались главы о рефакторинге, стратегиях оптимизации кода и о методиках оптимизации кода. А последняя часть книги под названием "Мастерство программирования" помогает понять, как именно развиваться в этой области.

И, конечно, хочется привести парочку самых ярких мотивационных моментов данной книги.

В 1972 году, на лекции, посвященной получению премии Тьюринга, Эдсгер Дейкстра заявил, что большинство аспектов программирования являет собой попытки компенсации строго ограниченных способностей разума. Самые лучшие программисты — те, кто понимают, насколько ограничены их возможности. Они скромны. Худшие программисты отказываются признать, что их способности не соответствуют задаче. Характер не позволяет им стать отличными программистами. Чем усерднее вы работаете над компенсацией ограниченных возможностей своего разума, тем лучше будете программировать. Быстрота вашего развития напрямую зависит от вашей скромности.

По моему субъективному мнению, данная книга должна быть первой. В некоторых моментах книга может показаться сложной, если у вас нет достаточного опыта. Особенно это связано с примерами на C++ и Assembler. Но всё равно эта книга должна быть первой, потому что лучше вырабатывать хорошие привычки с самого начала своего самообразования, чем переучивать себя через боль и страдания.

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

Бывает очень сложно достичь поставленной цели и не потерять мотивацию. История может рассказать нам случаи, когда радикальные меры могут оказаться самыми верными. Когда Юлий Цезарь переправился из Галлии через Ла-Манш и высадился со своими легионами в стране, которая теперь называется Англией, он приказал сжечь корабли, на которых приплыли римские войска. Цезарь остановил свои войска на меловых утесах Дувра и приказал им оглянуться на море с высоты двухсот футов. Там они увидели красные языки пламени, пожиравшие корабли, которые доставили их сюда. При высадке в Британии римское войско было поставлено перед фактом выбора победы, или смерти. Они находились во враждебной стране, последняя связь с континентом была потеряна, последнее средство отступления сожжено. Им оставалось только одно: идти вперед и побеждать. Так они и сделали. И они победили, хотя противник был гораздо более многочислен. В этом заключалась мудрость великого Цезаря.

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

Если вы хотите научиться программировать, вам нужна дисциплина. Если вас сильно отвлекает интернет, то возьмите ноутбук, книгу по программированию, и отправьтесь туда, где нет интернета. Пообещайте себе посветить честные 2-3 часа в день программированию. Это немного! А результаты и знания у вас появятся: после нескольких дней практики вы начнете замечать как меняется ваше мышление, вы быстрее выстраиваете логические цепочки, быстрее разбиваете большую задачу на маленькие подзадачи, быстрее ищите ошибки, быстрее находите ответы на ваши вопросы.

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

Прочитать дальше по теме:
Что делать, если программирование кажется сложным Часть 2

Продолжение следует...

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

Еще много полезного и интересного вы сможете найти на ресурсах:

Репетитор IT mentor в VK

Репетитор IT mentor в Instagram

Physics.Math.Code в контакте (VK)

Physics.Math.Code в telegram

Physics.Math.Code в YouTube