Здравствуйте, прекрасные люди!
В этом посте я поделюсь некоторыми советами по решению задач кодирования с помощью псевдокода*. Также в статье есть видео, на котором я решаю задачу по кодингу для новичков на Codewars!
Как человек, который работал с более чем 100 начинающими инженерами-программистами, я заметил, что одним из распространенных препятствий является то, что люди оказываются парализованными, когда перед ними ставится задача или проект по кодированию. Они считают, что не знают, как решить проблему, или задача кажется им слишком большой. Я напоминаю им, что им не нужно взбираться на всю гору, просто попробуйте сделать следующий шаг.
Мой подход к укреплению этого навыка сосредоточен на общении. Язык – это не только способ выразить то, что мы думаем или чувствуем, но также может быть инструментом для формирования нашего отношения к тому, что мы делаем, и для выработки моделей нашего обучения. Задавая себе чрезмерное количество вопросов, вы можете научиться задавать правильные вопросы, которые приведут вас к правильным ответам.
Я настоятельно рекомендую говорить об этом процессе вслух – себе, резиновой утке или другому разработчику. Программирование очень похоже на изучение нового языка. Одно дело изучать его, но свободное владение языком приходит во время разговоров, обмена идеями и выяснения того, как лучше донести наши идеи.
Псевдокод – это простое описание шагов в задаче или алгоритме кодирования.
Использование P.R.E.P для разбора проблем кодирования
Цели псевдокода: заставить вас думать о проблеме в простых терминах, заложить основу для построения кода и преодолеть первоначальный страх перед началом работы. Я задаю себе вопросы и записываю каждую мысль или идею, связанную с проблемой – чтобы начать с того, что я знаю. Возьмите то, что вызывает отклик. 😃
Примечание: Примеры будут на Javascript
📍 Один из методов, который мы представляем нашим студентам в Resilient Coders, это: P.R.E.P, что расшифровывается как Parameters, Return, Examples, and Pseudocode.
Ниже приведен набор вопросов, с которых я начинаю решать задачи по кодированию:
Параметры: Каковы параметры функции?
- К какому типу (типам) данных они относятся?
- Каковы ограничения?
- Как я буду работать с этими параметрами / что мне нужно с ними делать?
- если числа: скорее всего, придется выполнить какую-то операцию.
- если массивы: перебирать их
- если объекты: работа с парами ключ:значение или их свойствами.
- Иногда я буду думать и о крайних случаях, таких как пустые параметры, специальные символы и т.д.
Возврат: Что будет возвращать функция?
- Буду ли я изменять параметр и возвращать его или верну что-то новое?
- 💡 используйте подсказки из задачи, например, “вернуть новый массив четных чисел”.
- может быть полезно хранить возврат в новой переменной.
Примеры: Понимание ожидаемого дохода
- В задачах по кодированию часто приводится пример, но будет полезно создать 2-3 собственных примера, чтобы продумать параметры и возвраты.
Псевдокод: Шаги к коду
- Здесь я попытаюсь создать пошаговое руководство по решению задачи, начиная с того, что я знаю.
- Напишите функцию
- Объявите переменную
- Пройдитесь по массиву
- Если элемент… (напишите условные операторы)
- Вернуть переменную x
- Ищите слова действия в задаче, чтобы разбить предложения и использовать их в качестве руководства. Например, “взять массив”, “если это так”, “тогда сделайте это” = 3 небольших шага, а не ОДИН большой шаг.
- Ищите ключевые слова в задаче, которые подскажут вам, какие методы использовать, например, “filter” или “new array” для меня означают, что я могу использовать Array.filter() или Array.map(), соответственно.
загляните в мою шпаргалку по методам работы с массивами!
Далее, это процесс задавания вопроса “что дальше?” снова и снова. Что вы хотите, чтобы произошло после этого шага? Неважно, сколько шагов осталось или если шаги не линейны. Мы пытаемся создать план и сделать его как можно более конкретным. Чем более четко вы сможете сформулировать свою проблему или блокировку, тем, надеюсь, вам будет проще погуглить или попросить помощи, когда вы застрянете!
Псевдокод в действии
📍 Вот видео о том, как я использую P.R.E.P для решения этой кодовой войны: Составьте функцию, которая принимает список чисел (nums), как единственный аргумент функции. Возьмите каждое число в списке и возведите его в квадрат, если оно четное, или в квадратный корень, если оно нечетное. Возьмите этот новый список и верните его сумму, округленную до двух знаков после запятой.
.

Псевдокодирование задачи по кодированию с помощью P.R.E.P – ellidelaluna.wist.

Закрытие
Хотя я не считаю, что задачи по кодированию во время технических собеседований отражают то, что человек может предложить в роли SWE, я думаю, что они полезны при обучении кодированию и реализации больших концепций.
Иногда следующие шаги не будут иметь смысла или приходить к вам в голову, пока вы не начнете писать код – и это просто часть процесса! Я надеюсь, что по мере того, как вы будете продолжать практиковать разбиение проблем на части, вы найдете вопросы и системы, которые работают лучше всего для вас.
Настройтесь на следующий раз, чтобы узнать советы по архитектуре отдельных проектов и приложений!
Счастливого кодинга 👾
Элли