Объяснение и анализ стратегии решения проблем REACTO

Когда дело доходит до решения проблемы, существует множество индивидуальных и комбинаций способов найти решение. Некоторые примеры различных подходов включают, но не ограничиваются ими: экспериментирование методом грубой силы, запоминание и припоминание, дедуктивное рассуждение сверху вниз и индуктивное рассуждение снизу вверх. Хотя эти подходы действительны и эффективны сами по себе, в Fullstack Academy уделяется особое внимание одному конкретному шаблону решения проблем, и не зря, поскольку с течением времени он становится все более и более надежным. Этот метод известен как REACTO.
REACTO - это аббревиатура, обозначающая:
- R повторить
- E примеров
- A pподходит
- C ода
- T est
- O оптимизировать
Давайте подробнее остановимся на каждом этапе.
R: в первую очередь абсолютно необходимо повторить подсказку вслух. Это даст вам возможность укрепить свое понимание проблемы и замедлить время. С помощью этого монолога вы плавно погружаетесь в подсказку, поскольку можете сосредоточиться на определенных концепциях и различать их словесно - две вещи, которые обычно не так выражены при молчаливом мышлении. Чтобы узнать больше об этом, ознакомьтесь с психологическим феноменом, известным как производственный эффект. Кроме того, повторение подсказки открывает диалог между вами и интервьюером, позволяя вам установить, что вы оба находитесь на одной странице с самого начала.
E. Повторив проблему столько раз, сколько необходимо, важно перейти к следующему шагу и предоставить несколько примеров. Примеры - еще один случай, когда ясность принимает форму рабочей модели и где можно продолжить открытый диалог между вами и интервьюером. Предлагая конкретные входы и ожидаемые результаты, абстрактное решение начинает приобретать более узнаваемый силуэт. Что касается широты, то три примера, как правило, позволяют понять суть, как три утверждения в эссе на английском языке из пяти абзацев. Что касается глубины, то использование относительно простейшего примера для решения проблемы, как правило, является отличной отправной точкой, которую мы можем в конечном итоге построить сверху вниз, если это необходимо. На этом этапе в REACTO чрезвычайно полезно спросить об ограничениях и крайних случаях, прежде чем продолжить.
A: когда мы лучше понимаем, что от нас просят, а также примеры, которые соответствуют этому пониманию, мы можем действительно начать формулировать и сформулировать, как мы собираемся решать проблему. Чтобы сдвинуть дело с мертвой точки, рекомендуется использовать подход в первую очередь. Другими словами, чтобы продемонстрировать ход наших мыслей, мы можем обсудить подход, который может быть не самым эффективным с точки зрения временной и пространственной сложности, чтобы обеспечить доказательство концепции. Это приводит к тому, что оптимизацию приносят в жертву немедленному, но полному результату, что приемлемо, поскольку улучшения можно будет обсудить позже. Как только этот подход будет представлен, мы дадим себе немного больше возможностей для работы с точки зрения мозгового штурма, поскольку мы продемонстрировали, что у нас есть здравый ответ в глубине души. В любом случае, говоря о вещах громко и ясно, мы можем направлять и ориентироваться сами, не возвращаясь к середине кода.
C. Наконец, когда план составлен, мы можем привести его в действие, кодируя его. На этом этапе мы можем столкнуться с ошибками и ошибками (отдельные, переполнение стека и т. Д.), Но их, как правило, можно исправить, если мы будем следовать логике, изложенной на этапе планирования. Однако по-прежнему важно оставаться открытым для изменений, если что-то значительно отклоняется от первоначального плана.
T: мы написали код. Мы вложили много времени и энергии в эту попытку. А теперь пора посмотреть, как он справится с тестом. Как и на последнем этапе научного метода, мы проводим тесты, чтобы определить, проходит ли наш код или нет. Мы должны быть оптимистичны, учитывая работу, которую мы проделали до сих пор, но мы также должны знать, что могут существовать ложные срабатывания. Гордость предшествует падению, поэтому было бы целесообразно быть готовым к провалу тестов на этом этапе и соответственно восстанавливаться… возвращаясь на столько шагов назад, сколько необходимо.
O: необязательный этап, буква «O» означает тщательное и критическое рассмотрение определенных оптимизаций, которые могут быть включены. Обязательно ли нам нужны эти вложенные циклы? Можем ли мы выйти из цикла на раннем этапе? Могу ли я хранить некоторую информацию в другой структуре данных? Оптимизация помогает доказать, что вы учитываете масштабируемость и эффективность, которые очень востребованы.
По этому поводу в статье DonaldKnuth StructuredProgrammingWithGoToStatements он написал:
«Программисты тратят огромное количество времени на размышления или беспокойство о скорости некритичных частей своих программ, и эти попытки повышения эффективности на самом деле имеют сильное негативное влияние, когда рассматриваются отладка и обслуживание. Мы должны забыть о небольшой эффективности, скажем, примерно в 97% случаев: преждевременная оптимизация - корень всех зол . Тем не менее, мы не должны упускать наши возможности в этих критических 3% ».
Кажется, что чрезвычайно важно помнить об оптимизации, когда это наиболее важно, но мы не должны терять сон, если не реализованы определенные оптимизации. Об этом следует помнить при создании архитектуры проблемы или проекта.
Основная идея REACTO строится вокруг концепции: «Если бы у меня было восемь часов, чтобы срубить дерево, я бы потратил шесть часов на то, чтобы точить свой топор». Если детали, касающиеся реализации, подготовлены и поставлены в очередь, мы можем быть готовы закодировать их пошаговым и последовательным образом. Есть место для фристайла, особенно если интервьюер изменяет вопрос из ниоткуда, но образец имеет тенденцию разворачиваться лучше всего, если мы играем его рядом с жилетом.
Самое прекрасное в REACTO - это то, что его также можно применить к вопросам, которые вообще не относятся к программной инженерии! Всякий раз, когда кто-то задает вопрос, мы можем достичь ясности вместе: переформулируя вопрос, задавая вопросы о примерах, обсуждая возможные подходы, выписывая окончательный план, экспериментируя с планом через реализацию и анализируя ход событий, чтобы увидеть, что происходит. узкие места и другие жизнеспособные альтернативы. В основе всего этого - поддержание постоянного общения с человеком, задающим вопрос, самим вопросом и респондентом - вот основное качество REACTO.
Благодаря интервальному повторению и сосредоточенному вниманию, REACTO может постепенно стать второй натурой, если вы решите вплести это в свой инструментарий.
Ничего не поделаешь.