Livecoding… Это действо напоминает один из самых жестких видов экзаменов. Из тех, где нужно сходу решить задачу у доски. Да еще и перед незнакомой аудиторией. Или как выступление на сцене с импровизацией. Становится страшно от одной мысли об этом!.. Впрочем, есть люди, которые ловят от этого кайф. Ну а тех, кто не ловят, можно просто научить держать удар. Как и все в этом мире, навык прохождения Livecoding’ов развивается посредством упорных тренировок. Кратко подытожим и немного расширим то, что говорил в видеолекции Андрей Латышев.
Алгоритм прохождения Livecoding’а
Livecoding может быть удаленным (нужно расшарить свой экран) или очным.
Итак, ситуация: вам дают условие задачи, включают компьютер, становятся за спиной (или подключаются к вашему экрану) и смотрят, как вы дрожащими пальцами начинаете набирать код… Постойте, не спешите его набирать, а поначалу..
1. Остановитесь и осознайте условие
Сначала просто вдумайтесь в условие задачи и попробуйте понять, чего в принципе от вас хотят. Обязательно задайте уточняющие вопросы, чтобы точно выяснить, правильно ли вы его поняли.
2. Подумайте, какое решение будет оптимальным?
Попробуйте придумать разные решения, а не только одно. Оцените временную и пространственную сложность каждого решения (Big O) и выберите наиболее оптимальное. При этом озвучивайте ход своих мыслей. Если вдруг что-то пойдет не так от волнения, по крайней мере будет понятно, что вы взяли правильное направление.
3. Начинайте программировать!
Когда пишете код, старайтесь, чтобы он соответствовал принципам SOLID\KISS\DRY. Обязательно объясняйте каждую строчку кода по причине, упомянутой выше. Кстати, иногда вам могут и подсказать, обычно — с помощью наводящих вопросов.
В Python читаемость кода имеет первостепенное значение. Следите за именованием переменных (snake_case) и отступами. Ваш код должен выглядеть так, будто он написан по PEP 8, даже если вы пишете его в блокноте.
Статья для повторения о лучших практиках Python-программирования: PEP 8 — Style Guide for Python Code
4. Создайте Unit-тест для проверки решения.
Это гораздо солиднее, чем использовать print(). Впрочем, вы уже в курсе.
О чем нельзя забывать во время Livecoding’а
- Говорите вслух! Озвучивайте свои мысли, сам процесс мышления.
- Если вы не можете придумать классу или переменным адекватные имена и сильно затупили на этом этапе, лучше скажите об этом.
- Но все-таки старайтесь писать код в соответствии с промышленными стандартами.
- Всегда думайте о пограничных случаях, проверках, производительности.
- Не проверяйте свой код с помощью работающего приложения. По возможности используйте модульные тесты (assert или unittest).
Примеры задач на Livecoding’е
На самом деле их может быть очень много. Тем не менее, по приведенным ниже примерам можно понять общее направление. Обычно это учебные задачи, с которыми вы неоднократно сталкивались во время учебы.
- Простые задачи.
Такие задачи часто просят написать в док-файле, а то и вовсе на листе бумаги.
Примеры:
Развернуть список (ввод: [1,4,3,9,0], на выходе: [0,9,3,4,1]) Написать генератор чисел Фибоначчи Проверить, являются ли две строки анаграммами ввод: слово1 = «abc» слово2 = «acb» вывод: True ввод: слово1 = «abc» слово2 = «art» вывод: False - Задачи на онлайн-платформе вроде Codility. Например, задачи на алгоритмы или работу со словарями и множествами.
- Сложные задачи во время вашего присутствия в офисе. Пожалуй, самый стрессовый вариант. Тут может быть что угодно, вплоть до проектирования схемы БД для небольшого сервиса.
Советы
- Подготовьте окружение (Poetry или venv) заранее, если вам разрешают использовать свой ноутбук.
- Пользуйтесь горячими клавишами PyCharm или VS Code.
- Подумайте, как вы будете тестировать код, если вам нужны случайные значения.
- Подумайте о случае, когда вам нужно сделать запрос к стороннему сервису, а этот сервис недоступен (обработка исключений).
Платформы для подготовки к Livecoding’у
План подготовки
Чтобы привыкнуть и не бояться Livecoding’а, нужно создавать мини-стрессовую ситуацию во время подготовки к такому типу собеседований.
- Решайте одну задачу раз в пару дней.
- Проговаривайте ход мыслей во время решения задачи вслух.
- Одну из десяти решенных задач решайте со включенной видеокамерой и проговаривайте решение. Затем посмотрите на ошибки.
- Всегда делайте дорешивание задачи.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ