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

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

-30C — -15C: Вы думали о переезде в Канаду?
-14C — -5C: Это тоже пройдет.
-4C — 5C: Надеюсь, вы купили приличную ветровку и колпак.
6C — 12C: Какой у нас прекрасный весенний день!
13C — 17C: Это действительно может быть началом прекрасного сезона.
18C — 22C: Прощайте, толстовки, привет, футболки!
23C — 28C: Для среднего канадца это может быть многовато…
›29C: Кто-нибудь хочет на минутку отправиться на морозный север?

Это идея, на самом деле.

Для любопытных мы программировали на C#. Создавать новые объекты или классы не требовалось (пока!), и пока выходные данные соответствовали тестовым значениям, которые дал нам преподаватель, мы получали полные оценки. Наконец, нам разрешили обратиться к нашим заметкам и настоятельно призвали консультироваться с людьми вокруг нас.

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

Это было идеальное время для одного из моих самых больших страхов.

«Ваш код работает?» — спросил студент рядом со мной.

— Да, — ответил я. — Твоя хороша?

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

"Ой. Эм. Э... хочешь, я посмотрю на это вместе с тобой?

В ответ она пододвинула ко мне свой ноутбук и ввела в свою программу данные второго теста.

Я думаю, что если я не потел, когда она начала со мной разговаривать, значит, тогда я потел.

Вы знаете этот старый набросок Джерри Сайнфелда о людях, которые боятся публичных выступлений из-за смерти, о том, что они скорее будут в гробу, чем тому, кто произносит надгробную речь?

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

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

Когда кто-то просит о помощи, я немедленно отвечаю: «Вот как я это сделал. Это правильный способ сделать это. Сделай это по-моему». Но люди, которые мне помогали, поступили иначе. Они всегда садили меня и говорили: «Хорошо. Что делаешь? Расскажите мне, чего вы пытаетесь достичь. Почему ты поступил именно так?»

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

— Можете ли вы объяснить мне, что вы пытаетесь сделать?

Мы начали говорить о проблеме, которую она решала. По мере того, как мы говорили больше, я просматривал ее код, и мы начали комментировать и добавлять строки здесь и там, основываясь на нашей логике. Другой студент остановился рядом с нами после того, как он закончил свою оценку и присоединился к тестированию.

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

Кто знал?

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

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

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