Небольшое изменение, которое может иметь огромное значение

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

«Что бы вы ни делали, - предупреждает она, наклоняясь вперед в кресле, - перестаньте сравнивать себя с другими».

Она говорит эти слова с таким авторитетом, что я перестаю их слушать и начинаю думать о них.

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

Есть альтернатива. Вместо того чтобы сравнивать себя с другими, сравнивайте себя с собой. Это то, что я намеревался сделать. Это небольшое изменение может иметь огромное значение.

Сосредоточение на себе

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

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

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

Например, на прошлой неделе я потратил часы на решение проблемы. Хотя я был счастлив, что программа заработала, она была долгой и сложной. Когда я поделился этой информацией с более опытным программистом, он порекомендовал мне использовать модуль CSV (значения, разделенные запятыми), о котором я ничего не знал.

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

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

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

Как мне противостоять самому себе?

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

Однажды на прошлой неделе моей ежедневной целью было понять, как использовать модуль CSV. Микро-цель состояла в том, чтобы прочитать об этом модуле в книге Наоми Седер The Quick Python Book и выполнить упражнения из ее книги.

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

Найдите время

Вы можете подумать: «У меня нет на это времени». Я понял. Мое время тоже ограничено: я работаю полный рабочий день и учусь программировать в нерабочее время. Мне требуется всего несколько минут каждый день, чтобы спланировать предстоящий день, хотя мои еженедельные оценки по воскресеньям занимают больше времени.

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

Я писатель (amymhaddad.com) и начинающий программист.