Когда вливаешься в новую сферу, ошибки неминуемы. Не всегда это что-то драматичное: достаточно неверно расставить приоритеты в обучении, не совсем понять суть автоматизации или слишком горячо полюбить помощь от нейросетей. Но чем это грозит и как учиться с умом?
Привет! Я Дима Синицын, лид команды тестирования и наставник на курсе «Автоматизатор тестирования на Java». Я заметил, что студенты часто совершают одинаковые ошибки, которые легко избежать. Рассказываю об этом в статье.
Упущенные основы
На старте учёбы студенты проходят через самые важные спринты — спринты по основам языка Java. Их основное предназначение — заложить фундамент последующего обучения. Но многие студенты не придают этим спринтам большого значения и решают глубоко в материале не разбираться.
К чему это приводит? Например, можно дойти до середины (или даже до финала) обучения и не до конца понимать, как вообще пишется код, что такое методы и классы, что такое переменные.
Это, в свою очередь, приводит к неуверенности, хаотичному поиску готового решения (без понимания, как оно работает) в сети и у коллег-студентов. А также к большому количеству затраченного времени и потери мотивации к обучению.
От таких студентов часто можно услышать: «Мне просто не дано, это не моё». Хотя на самом деле нужно лишь уделить максимум времени основам. Важно научиться не только писать код, но и читать и понимать базовые конструкции языка.
Несколько советов:
Ведите конспекты уроков. После каждого урока записывайте своими словами ваше понимание этого урока. О чём был урок? Зачем это нужно? Записывайте примеры использования. Это поможет вам лучше усвоить материал.
-
Разбирайте код из урока до полного понимания. Вот пример разбора кода для вывода суммы чисел:
```java int firstNumber = 1; // Объявляется переменная firstNumber типа int (целое число) и ей сразу присваивается значние 1 int secondNumber = 2; // Объявляется переменная secondNumber типа int (целое число) и ей сразу присваивается значние 2 int result = firstNumber + secondNumber; // Объявляется переменная result типа int (целое число) и ей присваиватся результат сложения значений переменных firstNumber и secondNumber (1 + 2) System.out.println(result); // Выводим в консоль значение переменной result, напечатается число 3 ```
Тренируйтесь не только в тренажёре. Например, в сервисе CodeWars можно тренироваться на очень простых примерах написанию метода, объявлению переменных и так далее.
Конечно же, задавайте вопросы в чате с наставником! Наставники дают развёрнутые ответы и объясняют, как решение может быть составлено.
Не просто автоматизация, а автоматизация тестирования
Многие студенты в процессе обучения упускают из вида очень важный момент, а именно, что мы не просто пишем код (просто чтобы он был), а решаем важную задачу — помогаем автоматизировать ручное прохождение тестовых сценариев. Но если этих тестовых сценариев нет, то работа идёт вслепую.
Всегда нужно в первую очередь перед началом написания кода посмотреть на проект со стороны тестировщика: «Как я проверю эту систему? Какие у меня будут тест-кейсы? Где я возьму тестовые данные? Мои сценарии точно протестируют систему?»
Как только вы оценили проект как тестировщик, обязательно пишите тест-кейсы. Да, это заберёт какое-то время, но вы получите чёткое понимание, что конкретно вам нужно сделать. После того, как тест-кейсы составлены, пройдите по каждому шагу и подумайте, как выполнить его в коде и что для этого нужно.
Тест-кейсы + план действий по переносу их в код = качественный проект
Пример рассуждений: «Первый шаг — отправить POST запрос с данными авторизации. Чтобы его выполнить мне нужны: а) Данные пользователя, б) Код для отправки запроса.
Данные пользователя я сгенерирую до начала теста, значит, мне в тесте нужен метод с предусловиями и метод для генерации логина и пароля. Этот метод не относится напрямую к тесту, значит, мне надо вынести его в отдельный класс, назову его Utils.
Код для отправки запроса я сделаю с помощью фреймворка RestAssured. Поскольку он тоже не имеет прямого отношения к тесту, я также вынесу его в отдельный класс».
ChatGPT, помоги
ChatGPT с момента своего релиза завоевал любовь IT-специалистов. Он помогает увеличить продуктивность, сократить время поиска ошибки и многое другое. Многие студенты также используют в работе ChatGPT для поиска информации. Но есть и тёмная сторона, а именно запросы на написание готовых решений для учебных проектов и задач. Что тут плохого?
1. Вы упускаете возможность научиться составлять решения самостоятельно. Выработка любого навыка — это практика. Чтобы сделать одно хорошее решение, может потребоваться сто решений худшего качества.
Когда вы самостоятельно идёте через этот процесс, вы тренируетесь, учитесь на собственных ошибках. Именно это и даст вам прогрессию в навыках. Готовое решение от нейросети не даст вам ничего, кроме самого решения.
2. Решение от ChatGPT может быть излишне сложным и запутанным. Для решения простой задачи бот может нагородить сложное и неоптимальное решение, которое запутает вас при его разборе. А если вы ещё и не уверены в своих знаниях, то хаос обеспечен.
3. Бот может выдать заранее некорректное и неработающее решение. Лично наблюдал такую ситуацию, когда на запрос студента ChatGPT выдал некомпилируемый код под Java. При наличии опыта и знаний можно легко исправить такое решение, но что будет, если опыта и знаний нет или их мало? Ответ: хаос и паника.
В самом использовании нейросетей для работы или обучения нет ничего плохого, но важно правильно использовать такие инструменты. Краткосрочная польза и результат от нейросети перекрывается долгосрочным отсутствием собственных навыков. К тому же составление запросов к боту может быть столь же трудоёмким как и ручное написание кода.
Если суммировать всё вышесказанное, то правильный подход к обучению на курсах не сильно отличается от правильного подхода к обучению в школе или университете.
Старайтесь полагаться в первую очередь на собственные силы. Да, это может занять больше времени и сил. Да, вы можете пройти курс не с первой попытки, но по итогу те знания, что вы получите, будут усвоены на 100%.
kompilainenn2
Всё было хорошо, пока не началась хвалебная ода ГПТ
fgenich
Ну почему же? Он действительно помогает, если им правильно пользоваться, а не тупо отправлять запросики типа «Разложи мой код на структуру с использованием классов и методов»
kompilainenn2
давайте скажем так "если вы в состоянии валидировать зачастую бред от ГПТ и применить его ответ у себя - можете использовать ГПТ"