Думай как кодер


Что это вообще такое?!

Много слов приходит на ум, когда я думаю о первой фазе буткампа Flatiron School по программной инженерии — «полезный», «изнурительный», «стремительный» — но ни одно из них не сравнится с «чрезвычайно сложный». Я предвидел, что 15-недельная программа потребует больших усилий, и был готов… в моем распоряжении были флэш-карты, пневматические устройства и очень тщательные навыки ведения записей.

Во время второй недели наш технический тренер, Сэм Уотерс, сделал замечание, которое запомнилось мне надолго.

«Смысл этого буткемпа не в том, чтобы вы запомнили все термины, методы и синтаксис — это можно найти в Google», — сказал он. Главное, чтобы вы мыслили по-другому и понимали логику, необходимую для общения с компьютером». 

И он был прав — мои флэш-карты не могли помочь мне концептуализировать логический поток через функцию обратного вызова (а тем более воспроизвести его).

Это стало ясно из моей ранней борьбы с параметрами, особенно после использования метода цикла или итерации. Рассмотрим приведенную ниже иллюстрацию из Фазы 1 Code Challenge: 

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

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

Стратегия

В ответ на это я выработал подход, когда сталкиваюсь с хаотичным кодом или непонятным вопросом.

1) Сделайте паузу и отдышитесь

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

2) Опирайтесь на то, что вы знаете лучше всего

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

3) Сформулируйте план и приступайте к его выполнению.

Для этого я концентрируюсь на двух вопросах: «Какова моя конечная цель?» и «Какова общая дорожная карта для достижения этой цели?». Как самый сложный и наименее конкретный шаг, я сначала полагаюсь на псевдокодирование (неформальное описание процесса без конкретного синтаксиса), чтобы концептуализировать решение. Затем, двигаясь от наименее конкретного к наиболее конкретному, я определяю функции, переменные и методы для встраивания в дорожную карту — и начинаю кодить!

Проиллюстрирую на примере…

В приведенном ниже коде меня попросили создать объект, содержащий большой объем данных о спортивных игроках, а затем вернуть список номеров джерси. Для начала я определил свою конечную цель: создать массив номеров джерси. С помощью псевдокодирования я решил, что мой план действий будет заключаться в создании пустого массива, выделении номеров джерси игроков с помощью цикла ‘for’, а затем использовании метода .push( ) для сброса всех номеров в пустой массив. С учетом этого я начал сужать круг своих точных переменных и функций и начал писать код!

4) Изучите то, чего вы не знаете

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

В приведенном выше примере, если бы я не помнил синтаксис метода .push( ) или специфику обозначений скобок и точек, я бы поискал именно здесь.

5) Журнал, журнал, журнал

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

Движение вперед

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

В целом, я очень рад увидеть, куда это приведет меня на следующих четырех этапах обучения в Flatiron School и в моей дальнейшей карьере!

Оцените статью
devanswers.ru
Добавить комментарий