7 распространенных ошибок в SQL-запросах, которые делал каждый (почти) / Хабр
Сегодня SQL используют уже буквально все на свете: и аналитики, и программисты, и тестировщики, и т.д. Отчасти это связано с тем, что базовые возможности этого языка легко освоить.
Однако работая с большим количеством junior-ов, мы раз от раза находим в их решениях одни и те же ошибки. Реально — иногда просто создается ощущение, что они копируют друг у друга код.
Кстати, иногда такая же участь постигает и специалистов более высокого полета.
Сегодня мы решили собрать 7 таких ошибок в одном месте, чтобы как можно меньше людей их совершали.
Примечание: Ошибки будут 2 видов — реальные ошибки и своего рода best practices, которым часто не следуют.
Но, обо всем по порядку 🙂
Кстати, будем рады видеть вас в своих социальных сетях — ВКонтакте Телеграм Инстаграм
1. Преобразование типов
Мы привыкли, что в математике мы всегда можем разделить одно число на другое и получить ответ. Если нацело не получается, то в виде дроби.
В SQL это не всегда так работает. Например, в PostgreSQL деление двух целых чисел друг на друга даст целочисленный ответ. Это можно проверить как для целочисленных столбцов, так и для чисел.
SELECT a/b FROM demo # столбец целых чисел SELECT 1 / 2 # 0
Аналогичные запросы, например, в MySQL дадут дробное число, как и положено.
Если Вы точно не уверены или хотите подстраховаться, то лучше всегда явно делать преобразование типов. Например:
SELECT a::NUMERIC/b FROM demo SELECT a*1.0/b FROM demo SELECT CAST(1 AS FLOAT)/2 FROM demo
Все перечисленные примеры дадут нужный ответ.
2. HAVING вместо WHERE
Часто встречается ошибка — оператор HAVING используется вместо WHERE в запросах с агрегацией. Это неверно!
WHERE производит фильтрацию строк в исходном наборе данных, отсеивая неподходящие. После этого GROUP BY формирует группы и оператор HAVING производит фильтрацию уже целых групп (будто группа — одно запись).
Например:
SELECT date, COUNT(*) FROM transactions t WHERE date >= '2019-01-01' GROUP BY date HAVING COUNT(*) = 2
Здесь мы сначала отсеиваем строки, в которых хранятся записи до 2019 года. После этого формируем группы и оставляем только те, в которых ровно две записи.
Некоторые же пишут так:
SELECT date, COUNT(*) FROM transactions t GROUP BY date HAVING COUNT(*) = 2 AND date >= '2019-01-01'
Так делать не нужно 🙂
Кстати, для закрепления этой темы мы специально делали задачку «Отфильтрованные продажи» у себя на платформе. Если интересно порешать и другие задачки по SQL — welcome 🙂
3. Алиасы и план запроса
Если «проговаривать SQL-запрос» словами, то получится что-то такое:
В таблице есть старая цена, а есть новая цена. Их разность я назову diff. Я хочу отобрать только те строки, где значение diff больше 100.
Звучит вполне логично. Но в SQL прям так реализовать не получится — и многие попадаются в эту ловушку.
Вот неправильный запрос:
SELECT old_price - new_price AS diff FROM goods WHERE diff > 100
Ошибка его заключается в том, что мы используем алиас столбца diff внутри оператора WHERE.
Да, это выглядит вполне логичным, но мы не можем так сделать из-за порядка выполнения операторов в SQL-запросе. Дело в том, что фильтр WHERE выполняется сильно раньше оператора SELECT (а значит и AS). Соответственно, в момент выполнения столбца diff просто не существует. Об этом, кстати, и говорит ошибка:
ERROR: column "diff" does not exist
Правильно будет использовать подзапрос или переписать запрос следующим образом:
SELECT old_price - new_price AS diff FROM goods WHERE old_price - new_price > 100
Важно: Внутри ORDER BY вы можете указывать алиас — этот оператор выполняется уже после SELECT.
Кстати, мы тут делали карточку, где наглядно показывается последовательность выполнения операторов. Возможно, это вам пригодится.
4. Не использовать COALESCE
Пришло время неочевидных пунктов. Но сейчас мы поясним свои чаяния.
COALESCE — это оператор, который принимает N значений и возвращает первое, которое не NULL. Если все NULL, то вернется NULL.
Нужен этот оператор для того, чтобы в расчеты случайно не попадали пропуски. Такие пропуски всегда сложно заметить, потому что при расчете среднего на основании ста тысяч строк вы вряд ли заметите подвох, даже если 1000 просто будет отсутствовать. Обычно такие численные пропуски заполняют средними значениями/минимальными/максимальными/медианными/средними или с помощью какой-то интерполяции — зависит от задачи.
Мы же рассмотрим нечисловой пример, а вполне себе бизнесовый. Например, есть таблица клиентов Clients. В поле name заносится имя пользователя.
Отдел маркетинга решил сделать email-рассылку, которая начинается с фразы:
Приветствуем, имя_пользователя!
Очевидно, что если name is NULL, то это превратится в тыкву:
Приветствуем, !
Вот в таких случаях и помогает COALESCE:
SELECT COALESCE(name, 'Дорогой друг') FROM Clients
Совет: Лучше всегда перестраховываться. Особенно это касается вычислений и агрегирований — там вы не найдете ошибку примерно никогда, так что лучше подложить соломку.
5. Игнорирование CASE
Если вы используете CASE, то иногда вы можете сократить свои запросы в несколько раз.
Вот, например, была задача — вывести поле sum со знаком «-», если type=1 и со знаком «+», если type=0.
Пользователь предложил такое решение:
SELECT id, sum FROM transactions t WHERE type = 0 UNION ALL SELECT id, -sum FROM transactions t WHERE type = 1
В целом, не так плохо. Но это всего лишь промежуточный запрос, задача была намного масштабней и таких конструкций в итоге было наворочено очень много.
А вот то же самое с CASE:
SELECT id, CASE WHEN type = 0 THEN sum ELSE -sum END FROM transactions t
Согласитесь, получше?
Так более того, CASE можно использовать еще много для чего. Например, чтобы сделать из «длинной» таблицы «широкую».
А еще, кстати, COALESCE, который мы обсуждали выше — это просто «синтаксический сахар» и обертка вокруг CASE. Если интересно — мы подробно это описали в статье.
6. Лишние подзапросы
Из-за того, что многие пишут SQL-запросы также, как это «звучит» в их голове, получается нагромождение подзапросов.
Это проходит с опытом — начинаешь буквально «мыслить на SQL» и все становится ок. Но первое время появляются такие штуки:
SELECT id, LAG(neg) OVER(ORDER BY id) AS lg FROM ( SELECT id, sm, -sm AS neg FROM ( SELECT id, sum AS sm FROM transactions t ) t ) t1
И это еще не все — можно и побольше накрутить. Но зачем так, если можно так:
SELECT id, LAG(-sum) OVER(ORDER BY id) FROM transactions t
Совет: Если пока сложно, не надо сразу бросаться писать оптимизированными конструкциями. Напишите сначала, как сможете, а потом пытайтесь сократить.
Как говорил дядюшка Кнут:
Преждевременная оптимизация — корень всех зол
7. Неправильное использование оконных функций
Вообще говоря, оконные функции — довольно продвинутый инструмент. Считается, что им владеют специалисты уровня Middle и выше. Но по факту, их нужно знать всем — сейчас без них уже сложно жить (это чистое имхо).
И если базовые вещи по оконным функциям можно освоить довольно быстро, то всякая экзотика и нестандартное поведение осваивается, как правило, только на собственных шишках.
Одна из таких вещей — поведение оконной функции LAST_VALUE и прочих.
Например, когда мы пишем запрос:
WITH cte AS ( SELECT 'Marketing' AS department, 50 AS employees, 2018 AS year UNION SELECT 'Marketing' AS department, 10 AS employees, 2019 AS year union SELECT 'Sales' AS department, 35 AS employees, 2018 AS year UNION SELECT 'Sales' AS department, 25 AS employees, 2019 AS year ) SELECT c.*, LAST_VALUE(employees) OVER (PARTITION BY department ORDER BY year) AS emp FROM cte c
Мы ожидаем увидеть 2 раза по 10 для департамента Маркетинг и 2 раза по 25 для Продаж. Однако такой запрос дает иную картину:
Получается, что запрос тупо продублировал значения из столбца employees. Как так?
Лезем в документацию PostgreSQL и видим:
Заметьте, что функции first_value, last_value и nth_value рассматривают только строки в «рамке окна», которая по умолчанию содержит строки от начала раздела до
последней родственной строки для текущей.
Ага, вот и ответ. То есть каждый раз у нас окно — это не весь набор строк, а только до текущей строки.
Получается, есть два способа вылечить такое поведение:
Вот, например, второй вариант:
WITH cte AS ( SELECT 'Marketing' AS department, 50 AS employees, 2018 AS year UNION SELECT 'Marketing' AS department, 10 AS employees, 2019 AS year union SELECT 'Sales' AS department, 35 AS employees, 2018 AS year UNION SELECT 'Sales' AS department, 25 AS employees, 2019 AS year ) SELECT c.*, LAST_VALUE(employees) OVER ( PARTITION BY department ORDER BY year ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) AS emp FROM cte c
Кстати, такую тему подняла наша подписчица в Телеграме под постом «7 самых важных оконных функций».
Спасибо ей!А вас рады будем видеть в числе подписчиков 🙂
Эпилог
Эти 7 ошибок — не единственные, которые часто встречаются среди новичков и даже профессионалов. У нас есть еще одна пачка тезисов по этому поводу — но это уже тема другой статьи.
Если вам есть что добавить — будем рады продолжить обсуждение в комментариях. Возможно, чей-то код станет лучше и чище в результате нашей беседы 🙂
Мой топ-10 типичных ошибок фрилансеров — Алексей на vc.ru
Я работаю программистом на фрилансе 20 лет, тут я собрал мой личный топ типичных ошибок, и решил опубликовать здесь.
2993 просмотров
Многие начинающие фрилансеры совершают эти ошибки. Даже многие из «продолжающих» — совершают те же ошибки.
Кстати, если лень читать — можете послушать и посмотреть более расслабленный вариант — в виде подкаста, который я тщательно наговорил на диктофон и выложил на все платформы, вот тут монолог:
Telegram
YouTube
Yandex Music
Apple podcast
VK podcast
топ-10
1. Занижение стоимости работы.
По неопытности фрилансер может занизить цену за свою работу и потом жестоко расплачиваться. Так как Вы только начинаете, то пока обладаете недостаточной квалификацией и неизменно будете совершать ошибки. В том числе это будут ошибки в коммуникации с заказчиком. Он может нервничать, проявлять недовольство и при этом терпеть, так как Ваши услуги обошлись ему дёшево.
Надо понимать, что небольшое снижение цены ниже средней по рынку — допустимо. Ведь начинающему нужно нарабатывать опыт, портфолио, понять, как устроена биржа, как искать заказы, как взаимодействовать с заказчиком, как работают бизнес-процессы на фрилансе. Я не имею ввиду жесткий демпинг, не нужно понижать цену в 2 раза. По моему мнению за непрофессионализм можно снизить цену на 20-30 процентов. Это будет дисконт за отсутствие предпринимательского опыта и отсутствие soft skills.
Скидка за то, что заказчику будет слегка некомфортно с Вами работать, как с неопытным.Но если Вы себя уж сильно не любите, давайте заказчику 50% скидки, кто же Вам запретит? Но я бы не стал так делать.
Начинающий, кстати, может дать такую скидку, именно по причине незнания рынка и непонимания настоящих цен.
2. Неумение составить коммерческое предложение для заказчика.
На биржах фриланса есть система «откликов». Т.е. заказчик размещает тендер, заказ, объявление. Ему нужно, чтобы кто-то выполнил заказ. А фрилансеры «откликаются». Это выражение «отклик» скорее сленговое. Оно возникло на биржах фриланса как синоним коммерческого предложения. Видимо, потому, что фрилансер «откликнулся«. Это неправильное название порождает непонимание фрилансерами всей серьезности мероприятия. Начинающий, видя фразу «оставьте отклик», думает будто это что-то несерьезное и ему надо просто написать что-то вроде «эй, я готов». После такого отклика фрилансеры еще удивляются, что к ним формируется несерьезное отношение и у них нет заказов.
Отклик должен быть достаточно полноценным коммерческим предложением, насколько это возможно. Не просто «я готов выполнить ваш заказ», как пишут многие. Некоторые еще и робота-секретаря подключают, который рассылает отклики по шаблону, что есть ужасная ошибка.
Заказчик хочет знать, что его проект понятен и важен, что Вы, по крайней мере, прочитали заказ и готовы предложить какое-то решение. Алгоритм ответа профессионального специалиста должен быть такой:
· бегло пробежаться по описанию проекта, понять о чем он
· написать, что Вы ознакомились с проектом (кратко рассказать что именно в нём поняли)
· написать про Ваш опыт в этой сфере (если он есть), упомянуть каким образом уже выполняли подобный заказ, сколько он занял времени, с какими сложностями Вы столкнулись
· описать как примерно предполагаете выполнить работу сейчас. Заказчик должен понять, что с Вами можно иметь дело. При этом, решение, конечно, предоставлять не нужно. Напишите 2-3 фразы, по которым заказчик поймет, что Вы специалист в этом вопросе.
Обычно сразу хотят знать цену. Если мне проект казался потенциально сложным и я не мог точно определить стоимость, писал всегда минимальную цену, чтобы было от чего отталкиваться.
Ведь отклик вообще без цены выглядит несерьезно. Также, надо написать, что если порядок цен устраивает, то Вы должны вникнуть в проект более подробно и скорее всего стоимость работы увеличится, но ниже точно не станет. Вилку цен лучше не называть — она зачастую производит гнетущее впечатление на заказчика. Лучше говорить что-то вроде «3 дня и от 10 тысяч». С опытом вы станете называть цены более точно.
Я считаю, что нет смысла называть вилку, если она небольшая. Вы же хотите работать по высшей цене, а заказчик мечтает о нижней. Это дает ему ложные надежды. А когда Вы назвали минимум и заказчик готов обсуждать, он уже вовлекся в процесс, начал узнавать и знакомиться с Вами. Когда один человек потратил свое время на другого — возникает взаимозависимость. Если заказчик уже вовлекся в обсуждение проекта — ему уже проще продолжить сотрудничество именно с Вами, так как с другими придется начинать всё заново.
Вы оба уже вовлечены в процесс, в диалог, уже хотите начать скорее делать дела совместно. Указывайте в отклике свои контактные данные, даже если они есть в профиле. Ведь если у заказчика будет два отклика — один с контактами, другой — без, ему конечно, проще будет обратиться к тому, у кого уже есть контактные данные и их не надо искать где-то там в профиле. А если у вас и в профиле нет контактных данных, или нужно сделать запрос, чтобы как-то получить их, или еще какие-то сложности с доступом к контактам — то всё пропало для Вас. Пишите несколько контактов в Вашем коммерческом предложении — пару адресов электронной почты, плюс пару телефонов, мессенджеров и т.п.
Потому что всякое бывает — телефон разрядился, потерялся, заблокировали и т.п., а заказчик хотел выбрать именно Вас, но не достучался и заказ уходит вашему конкуренту.
3. Несоблюдение сроков. Или слишком ранний старт выполнения задачи.
Например, заказ находится на стадии согласования, или еще не полностью готово техническое задание, а Вы заранее бросились что-то делать. Кажется, что Вы уже это проходили и где-то выполняли подобный проект, а потому необходимо быстрее начать! Но потом выясняется, что заказчик имел ввиду «что-то немного чуть-чуть другое». И вот это «немного другое» — оно весь проект переворачивает вверх дном и то, что уже начато, можно смело выбросить, как совершенно неподходящее.
Или еще хуже — начнете показывать свою заготовку и утверждать, будто это именно то, что нужно, при этом не разобравшись в заказе. На что Вам справедливо заметят: «Вот там была вот такая фраза, надо именно так в точности, а у вас не так». На что Вы приведете пример документации, где есть сноска, что так, как хочет заказчик, сделать нельзя.
А заказчик ответит, что раз это невозможно, то зачем тогда выдавался аванс и зачем Вы начали делать не то, что требуется?
4. Неумение планировать работу.
Каждый фрилансер работает сам по себе. Он и начальник. и исполнитель, и подчиненный. Заказчик обычно не хочет контролировать фрилансера, так как подразумевается, что фрилансер автономен и все сделает самостоятельно. Но при этом самая частая жалоба на бирже — фрилансер потерялся. И не просто сам не появляется, а не реагирует даже на попытки до него дозвониться. Это нарушение планов по заказу.
Да, возможно фрилансер когда-то и сделает проект, может даже и в оговоренные сроки, но создается нервозность в общении. Заказчик любит ответственных фрилансеров, которые доступны для контакта. Хотя бы не сразу, но в течение 2-3 часов чтобы откликался. И заказчик обычно просто так не беспокоит, если звонит, пишет – значит, это важно, может появилось какое-то дополнение к задаче. Что если специалист не вышел на связь и пусть даже всё доделал, но без учета этих новых дополнений? Результатом становится неправильно выполненная задача. И это последствие неверного планирования своих бизнес-процессов.
Важно правильно выстроить процесс: как Вы берете заказ, в какое время выполняете, когда находитесь на связи, как передаете выполненную работу, принимаете оплату, выставляете счета. Это может влиять на последующее количество заказов, на Ваш профессиональный имидж, на сарафанное радио и, как следствие, на формирование среднего чека.
5. Неумение распоряжаться авансами.
Начинающие фрилансеры часто считают аванс своими деньгами, и сразу начинают его тратить. Но на самом деле аванс — это не деньги фрилансера, а деньги заказчика до тех пор, пока заказчик не примет работу и не подпишет акт. Прием аванса — это хорошая практика, чтобы мотивировать заказчика и для того, чтобы заказчик не обманул фрилансера.
Я первое время брал 33% аванс до начала работ, потом еще 33% при выдаче в тестовую эксплуатацию и оставшиеся 34% по окончании тестирования. Но чаще всего берут 50% аванс до и 50% доплату после окончания работы.
Полученный аванс я никогда не считал своими деньгами и держал его в шкафу до момента подписания акта о выполненной работе. Трата полученного аванса до подписания акта приводит к большим проблемам, потому что иногда аванс приходится возвращать. Относитесь к выданному авансу как к страховому депозиту, но не к Вашим личным деньгам.
6. Привязываться только к одному заказчику.
Для фрилансера иметь только одного клиента — рискованное мероприятие. Кто такой фрилансер для заказчика? Это человек, который привлечен для выполнения какой-то задачи, или нескольких задач. Главное в этом — возможность прервать сотрудничество в любой момент без выплаты золотых парашютов или компенсаций.
Со штатным сотрудником так не получится — нужно выплачивать пособие, ждать 2 недели, и не всегда возможно увольнение по закону. А фрилансер — это предприниматель, с ним разорвать договор можно в любой момент. В этом и состоит риск — если фрилансер привязался к одному заказчику и надеется, что ему пожизненно обеспечены заказы от этого клиента и ничего страшного не случится — это уже большая ошибка.
Даже если с этим единственным заказчиком всё в порядке и сотрудничеству не видно конца, стоит подумать, чтобы найти еще одного. Поделить между ними рабочее время, например, 50 на 50. Или 60 на 40 — можно работать сверхурочно. Нужно себя страховать. В этом случае, даже если один из клиентов резко расторгнет договор, останется второй, и какая-то сумма будет поступать до тех пор, пока Вы снова не найдете еще одного или нескольких клиентов.
7. Фрилансер берет слишком много заказов или берет все заказы подряд.
Часто фрилансер совершает ошибку — называет нереальные сроки. Хватает новый проект, начинает его выполнять, чтобы показать клиенту, что работа началась. При этом на некоторое время бросает старый проект, срывает по нему сроки. Проблема налицо — слишком большое количество заказов и слишком жесткие сроки, что приводит к низкому качеству выполнения заказов. Это сильно нагружает организм и приведет к проблемам со здоровьем — инфаркты, инсульты и даже потеря трудоспособности. Если загрузка по проектам уже 100% — нужно уметь отказываться от лишних задач. Если Вам сложно отказать — сходите к психологу, поработайте над этим, научитесь говорить «нет».
8. Фрилансер обманывает заказчика.
Например, фрилансер берет проект, но не знает сможет ли его выполнить. Коммерческое предложение в этом случае начинается с обмана.
Также, бывают ситуации, когда в процессе работы возникают вопросы, трудности, неясности, которые требуют согласования, или фрилансер понимает, что эта задача ему не под силу и надо отменить ее, но не может прямо сказать об этом заказчику. Начинается обман, манипуляция, поиск причин, чтобы не возвращать аванс, обещания вернуть аванс позже в надежде не возвращать вообще и т.п. некрасивое поведение в сторону заказчика.
Бывают реальные проблемы, технические, личные и фрилансер понимает, что он когда-то их решит, например, через неделю, но не говорит об этом заказчику — пытается скрыться на время, чтобы не поняли, что сроки увеличиваются. Фрилансер думает, что вот сейчас я исчезну, но потом появлюсь со сделанной работой на месяц позже и всё будет ок. Но это плохая практика — заказчик далее не будет работать с ним и не будет рекомендовать другим или даже оставит негативный отзыв.
Если возникает проблема — лучше выйти на открытый разговор. Заказчик это человек и он понимает, что в жизни у каждого бывают проблемы. Честное обсуждение сложившейся ситуации является самым верным решением при сотрудничестве.
9. Отсутствие ведения бухгалтерского учета.
Во-первых, нужно иметь либо юридическое лицо, либо встать на учет в качестве индивидуального предпринимателя, либо стать самозанятым, чтобы иметь возможность принимать платежи законно.
Если совсем не хочется или не получается заниматься такой организацией, попробуйте заключать договоры с заказчиками как «штатный» сотрудник — по краткосрочному трудовому договору.
Не забывайте про налоги — они обычно платятся через некоторое время после получения дохода, а не сразу. Фрилансер, как правило, сам ведет бухгалтерский учет, иметь личного бухгалтера не всегда выгодно. Он может забыть отложить необходимую сумму для уплаты налогов и потратить все полученные доходы. А при подходе времени уплаты может оказаться, что имеющихся средств недостаточно.
Или Вы можете ждать, что заказчик вот-вот рассчитается, но что-то идет не так, оплата задерживается и Вам опять оказывается нечем платить, возникает риск блокировки счета и начисления пени.
Ставится под угрозу деловая репутация. Подушка безопасности должна быть у каждого человека, а у фрилансера тем более.
10. Отсутствие обучения.
Здесь всё просто — фрилансер должен учиться постоянно, постоянно повышать свою квалификацию. Не обязательно учиться основной профессии — надо осваивать смежные сферы. Например, полезно подтянуть бухучет, предпринимательские навыки, искусство ведения переговоров и т.п. Выделяйте себе специальное время, допустим 1 час в день, для учебы.
Следите за новостями в Вашей сфере и совершенствуйте навыки общения с людьми.
В моем телеграм-канале самое интересное:
Кинуть молодого фрилансера — это обряд посвящения или просто традиция?
И насчет тиражных решений для программистов
Как можно увеличивать стоимость своего среднего чека на фрилансе
Необоснованные запросы заслуживают необоснованных ставок
Как ответить: Расскажите мне о том, как вы допустили ошибку
От планирования и репетиции ваших ответов на общие вопросы интервью до пятикратной смены одежды и использования такого большого буфера для учета трафика, который вы приехали на час раньше и убили время, проведенное в кафе в квартале, вся ваша энергия уходит на то, чтобы ваш потенциальный работодатель думал, что вы идеальный профессионал. Вы никогда не застревали в зубах салата и не забывали прикрепить отчет к электронному письму. Кто-то, кто делает ошибки, распечатал бы три печатных копии своего резюме и поместили их в такое красивое кожаное портфолио?
Какая работа для тебя самая лучшая?
Используйте Muse, чтобы найти работу в компании с культурой, которую вы любите. Выберите карьерный путь, который вам подходит:
Маркетинг
Продажи
Данные
Управление персоналом
Обслуживание клиентов
Разработка программного обеспечения
Управление продуктами
90 002 ОбразованиеДизайн и UX
Администрация
Сколько у вас лет опыта?
0–1 год
1–5 лет
5–10+ лет
Какие преимущества компании для вас наиболее важны?
Медицинское страхование
Оплачиваемый отпуск
Возможности удаленной работы
Стоматологическая страховка
401k С соответствием
Страхование зрения
Продвижение изнутри 90 007
Гибкий график работы
Индивидуальные больничные
Премия за результат
Расчет вашей работы соответствует. ..
Так почему же интервьюер пытается выбить вас из колеи, спрашивая что-то вроде: «Расскажите мне о случае, когда вы допустили ошибку» ?
Почему интервьюеры спрашивают: «Расскажите мне о случае, когда вы допустили ошибку»?
Давайте уберем это с дороги. Совершенство невозможно. Ваш интервьюер знает об этом, поэтому тот факт, что вы допустили ошибку в прошлом, не лишает вас возможности претендовать на эту работу. Скорее, интервьюеры «хотят, чтобы вы взяли на себя ответственность за свою ошибку и рассказали о своих ключевых выводах, убедились, что у вас хорошее отношение», и продемонстрировали стремление к совершенствованию, говорит карьерный коуч Muse Дженнифер Смит, основатель Flourish Careers.
Легко выглядеть хорошо, когда вы говорите о своих достижениях, но ваш интервьюер хочет знать, как вы отреагируете, если что-то пойдет не по плану. Ваш ответ может научить их:
- Как вы справляетесь с трудностями
- Насколько вы самосознательны
- Насколько хорошо вы признаете и признаете свои ошибки
- Как вы учитесь на ошибках и смягчаете их в будущем
Как вы ответ «Расскажите мне о случае, когда вы допустили ошибку»?
Когда вы соберете все вместе, ваш ответ должен примерно соответствовать методу STAR — структура ответа на вопросы о поведении, подобные этому, которая включает изложение ситуации S , T ask, A действие и R является результатом прошлого опыта, но с некоторыми незначительными изменениями, чтобы гарантировать, что вы полностью отвечаете на этот конкретный вопрос. Вот как убедиться, что ваш интервьюер уходит, зная, что вы можете признать свои ошибки и извлечь из них уроки.
1. Выберите правильную ошибку для обсуждения.«Я рекомендую говорить о мелких ошибках, — говорит Смит. Хотя вы, возможно, захотите подготовить историю из своего предыдущего опыта работы, карьерный тренер Muse Барб Гирсон, генеральный директор Beyond Sales Tactics, говорит, что, поскольку работодатели уделяют все больше внимания эмоциональному интеллекту и гуманизации рабочего места, они предпочитают говорить о более поздняя ошибка также будет в порядке.
Не менее важным, чем сама история, является то, как вы на нее отреагировали. «Выберите ошибку, которая отражает вашу способность признавать свои ошибки, принимать отзывы, создавать план по улучшению, решать проблемы и делиться извлеченными уроками», — говорит Гирсон.
Вот некоторые виды ошибок, о которых вы могли бы рассказать:
- Недопонимание
- Непонимание
- Недостаточное внимание к деталям
- Ситуации, когда вы были реактивными, а не проактивными
- Ошибки в рабочих продуктах, которые вы представили
- Пропущенные сроки
- Проблемы с производительностью
- Конфликты, разногласия или проблемы координации при работе с другими
- Неуклюжие презентации
- Пробелы в знаниях или навыках
В то же время вам следует избегать говорить об ошибках, которые:
- Могут рассматриваться как постоянные недостатки характера (например, «Я всегда опаздываю») например, фундаментальная бухгалтерская ошибка, если вы претендуете на должность финансового аналитика)
- Являются юридическими, этическими или иными спорными вопросами (давайте будем честными, если ваша «ошибка» заключалась в том, чтобы замахнуться на коллегу или прикарманить какие-то запасы, ты не получишь работу)
- Обвиняются в чьей-то чужой вине (например, «Я допустил ошибку в своих суждениях, доверившись стратегии моего босса»)
- На самом деле не являются ошибками кол. )
И, конечно же, вам также следует избегать говорить, что вы никогда не совершали ошибок или не можете их вспомнить.
2. Четко изложите ситуацию.Прежде чем перейти к самой ошибке, предоставьте интервьюеру весь контекст, который ему понадобится, чтобы понять, в чем заключалась ваша ошибка и почему она на самом деле была ошибкой. Но не чувствуйте необходимости добавлять какие-либо дополнительные детали. Просто кратко изложите общую цель вашего проекта, команды или компании и расскажите о ваших индивидуальных задачах и обязанностях.
Например, Смит предлагает вам сказать что-то вроде:
«Я отвечал за координацию логистики живой виртуальной презентации для 100 наших летних стажеров по всей стране. Наш старший вице-президент по продажам присоединился к нам, чтобы рассказать о своей карьере и поделиться советами с нашими стажерами».
3. Расскажите интервьюеру, какую ошибку вы допустили.Говорите прямо о своей ошибке и о том, что к ней привело. Не занимайте оборонительную позицию, не обвиняйте других и не используйте пассивный язык — говорите: «Я записал неправильное время», а не «Записали неправильное время».
Продолжая пример Смита:
«Мы в последний момент изменили время для этого события из-за потребностей бизнеса; поэтому мне пришлось быстро обновить всю логистику, и я забыл обновить приглашение в календаре для старшего вице-президента».
4. Объясните, как вы устранили ошибку в данный момент.Ваш интервьюер может сформулировать этот вопрос так: «Расскажите мне о случае, когда вы допустили ошибку и что вы сделали, чтобы исправить ее», или он может просто сказать: «Расскажите мне о случае, когда вы допустили ошибку». В любом случае, они абсолютно точно хотят знать, что вы сделали, когда поняли, что облажались, и чем закончилась ситуация. Все ошибаются, но не все сразу признаются в этом или предпринимают шаги, чтобы это исправить.
Например:
«Когда мы готовились к эфиру, нашего спикера там не было. Как только я это понял, я связался с их администратором, мы быстро их нашли, и они смогли присоединиться всего через несколько минут после опоздания. В результате мероприятие продолжилось с задержкой начала всего на несколько минут».
5. Расскажите о том, чему вы научились и как вам удалось избежать повторения той же ошибки.«Очень важно указать, что вы узнали и что вы будете делать, чтобы предотвратить повторение той же ошибки в будущем», — говорит Гирсон. Помните, что интервьюер будет думать о вас как о будущем коллеге, слушая ваш ответ. «Они оценят, если у вас есть возможность корректировать курс и что вы не совершаете повторных ошибок».
Итак, скажите что-то вроде:
«Это научило меня тому, что я должен быть лучше подготовлен к изменениям в последнюю минуту. Я составил контрольный список для всех основных компонентов событий, которые я координировал в будущем, в том числе везде, где была передана или записана различная информация, поэтому в следующий раз, когда произойдет что-то подобное, у меня было что-то, к чему я мог легко обратиться. убедиться, что у меня все в порядке, и я не пропущу ни секунды».
«Расскажите мне о случае, когда вы допустили ошибку» пример ответа
Нужно больше вдохновения? Ознакомьтесь с этими примерами ответов.
Кандидат начального уровня может опираться на свой школьный опыт и сказать что-то вроде:
«Для моего класса нейробиологии наши окончательные лабораторные отчеты должны были быть написаны индивидуально, но на основе экспериментов, проводимых каждым членом нашей лабораторной группы. Мы быстро разделились, кто какие эксперименты проводит, и решили, что все закончат свои эксперименты к 15 апреля, чтобы у всех было время написать. Я не внимательно изучал свой раздел, пока буквально не вошел в лабораторию, и только тогда понял, что мне нужны результаты от других членов группы, прежде чем я смогу начать. Я быстро связался со своей группой, чтобы сообщить им, что я сделал неправильно, извиниться и узнать, есть ли у них результаты.
У одного человека в расписании не было и не было времени на проведение эксперимента до 14 апреля. К счастью, мы смогли поменяться разделами, и я смог завершить их первоначальную часть и скомпилировать все полученные результаты. необходимо, чтобы они могли завершить мою оригинальную часть. С тех пор я всегда старался изложить все шаги и требования для каждого шага проекта перед началом и предельно ясно понимал, за что я несу ответственность и как это вписывается в общую картину».
Кто-то, говорящий о случае, когда он сделал неверное предположение, мог бы ответить:
«На моем последнем месте работы мы всегда называли менеджеров проекта менеджерами проекта. Когда я впервые начал свою текущую работу, мне было поручено отправлять » некоторые бюджетные показатели премьер-министров к пятнице, чтобы они могли встретиться с ними в понедельник в полдень. Я был все еще очень новичком и не совсем понимал, для чего нужны числа, но я не хотел показаться невежественным, задавая слишком много вопросов. Поэтому я отправил номера менеджерам проекта. В понедельник утром я вошел и увидел, что кто-то за столом моего босса спрашивает, где были цифры бюджета, и этот человек был *продукт* менеджер. Моим непосредственным инстинктом было бежать и прятаться — или, по крайней мере, рассказать начальству о случившемся только после того, как этот человек ушел, — но вместо этого я вежливо представился и объяснил свою ошибку. Я тут же разослал номера нужным людям и предложил помочь настроить конференц-зал перед их презентацией, если им понадобится больше времени на подготовку из-за моей задержки. После этого я всегда задавал любые вопросы, которые у меня были, вместо того, чтобы делать предположения, и с тех пор у меня не было такой путаницы».
Менеджер, который действовал слишком быстро, когда имел дело с прямым подчиненным, мог бы сказать:
«Как женщина, работающая в области разработки программного обеспечения, я всегда чувствовала необходимость высказаться, чтобы убедиться, что мои коллеги уважают меня и коллеги. Обычно это работало хорошо, и я также помог другим инженерам-женщинам или небинарным инженерам чувствовать себя более комфортно, делая то же самое. Однако, когда меня впервые повысили до инженера-менеджера, я зашел слишком далеко. Когда один из членов моей команды не смог вовремя завершить свою часть спринта, я вызвал его на групповое собрание в Zoom.
«Позже он ослабил меня и объяснил, что имел дело с несколькими случаями COVID в своей семье. Я извинился перед ним за то, как поднял эту тему, и спросил о его ситуации. Когда он был готов, мы обсудили, почему он не поговорил со мной заранее и как важно знать, когда кто-то отстает, чтобы мы достигли наших общих целей. С тех пор он стал более откровенным, и во время нашей следующей встречи я сказал команде, что не должен был так вызывать инженера, сохраняя при этом его конфиденциальность. С тех пор я разработал политику всегда сначала проверять один на один. Я также узнал, что, хотя иногда необходимо быть настойчивым, никогда не нужно переходить черту, чтобы поставить кого-то в такое положение. В результате я получил одни из самых высоких управленческих баллов в компании, и теперь этот инженер — один из наших лучших сотрудников».
Кто-то, кто ошибся с покупателем, мог сказать:
«На моей последней работе в розничной торговле мы проводили ежедневные собрания перед началом каждой смены, чтобы просто услышать объявления или узнать о проводимых в магазине акциях. Я всегда присутствовал и слушал, но не делал заметок. Однажды начальник смены сказал нам, что все товары для празднования дня рождения находятся в резерве, поэтому во вторник, как обычно, их не пополнят. Позже кто-то делал покупки для вечеринки по случаю дня рождения своего ребенка и спросил, будет ли у нас больше украшений Roblox к среде. Я автоматически сказал им вернуться во вторник и понял свою ошибку только на следующее утро, когда менеджер снова сделал то же самое объявление. С того дня я начал делать записи на собраниях смены и с тех пор ничего не забыл. А во вторник я случайно заметил того же покупателя и извинился, но сказал им, что я проверил, и в другом месте в пяти милях от него были украшения, которые они искали, в наличии. Я даже позвонил в другой магазин, чтобы отложить их, пока покупатель не подъедет. С тех пор я видел одного и того же клиента несколько раз, и мы всегда говорим «Привет»».
Регина Борселлино — редактор The Muse из Нью-Йорка. Она занимается вопросами поиска работы и карьерными советами, в частности, советами по резюме, собеседованиями, удаленной работой, личным и профессиональным развитием. До прихода в The Muse Регина была редактором InvestorPlace, где она также писала на такие темы, как инвестиции и биотехнологические компании. Она имеет степень бакалавра английского языка и литературы Мэрилендского университета и степень магистра искусств Американского университета в области писательского мастерства. Найдите ее в LinkedIn и Twitter.
Еще от Реджины БорселлиноВаша реакция на ошибки определяет вас
Философия|Время чтения: 2 минуты
Иногда мы сбиваемся с пути.
Мы все делаем ошибки. Мы фокусируемся на неправильных вещах. Мы преследуем цели любой ценой. Мы балансируем на этических и моральных обрывах. Мы зашли слишком далеко по скользкому склону. Мы воруем. Мы обманываем. Мы лжем. Мы обманываем других. Мы обманываем себя. Мы не открываемся перед друзьями. Мы видим преступление или мошенничество и не высказываемся.
Вы можете быть хорошим человеком и при этом проявлять недальновидность.
То, что вы потерпели неудачу, не означает, что вы не сможете добиться успеха. Мы все терпят неудачу. Психически устойчивые люди понимают, что не неудачи определяют вашу личность, а то, как вы на них реагируете.
— Шейн Пэрриш (@ShaneAParrish) 11 мая 2019 г.
В такие моменты мы не тот друг, которого заслуживают другие, партнер, которого выбирают другие, ребенок, которого вырастили наши родители, образец, которым мы хотим быть, и не тот человек, которым мы способны быть.
Это может случиться даже с лучшими из нас. Мы люди. Мы все делаем ошибки.
[quote]То, что мы заблудились, не означает, что мы заблудились навсегда. В конце концов, нас определяют не столько неудачи, сколько то, как мы на них реагируем.[/quote]
То, что мы сбились с пути, не означает, что мы заблудились навсегда. В конце концов, нас определяют не столько неудачи, сколько то, как мы на них реагируем. Все мы в какой-то момент жизни сбиваемся с курса. Что действительно имеет значение, так это не то, что мы делаем ошибки, а выбор, который следует за этими ошибками.
Подросток, у которого проблемы с законом, например, может принять на себя ответственность за свои действия, изменить свое поведение и продолжать руководить нацией, или он может увидеть только неудачу и попасть в порочный круг совершения вечно- более крупные преступления.
Ты не спотыкаешься, а встаешь. Дело не в том, что вы сделали что-то не так, а в том, что вы понимаете, что происходит, и меняетесь. Дело не в том, что вы облажались как друг или любовник, а в том, что вы видите, как можно стать лучше. Иметь неправильные приоритеты уже достаточно плохо, но осознавать это и отказываться измениться еще хуже. Дело не в том, что вы никогда не находили время, чтобы понюхать розы и полюбоваться закатом; дело в том, что как только вы это осознаете, вы находите время, чтобы это заметить.
«Успех никогда не бывает окончательным. Неудача никогда не бывает фатальной. Главное мужество».
— Джон Вуден
Ошибки, без сомнения, плохо, но не учиться на них еще хуже. Ключ к обучению на ошибках заключается в том, чтобы признать их без оправданий или защиты, немного ткнуться в них носом и внести изменения, необходимые для дальнейшего роста. Если вы не можете признать свои ошибки, вы не будете расти.
«Мне нравятся люди, признающие, что они полные тупые лошадиные задницы.
Я знаю, что буду работать лучше, если буду тыкать носом в свои ошибки.
Это замечательный трюк, которому можно научиться.
— Чарли Мангер
«Забывать свои ошибки — ужасная ошибка, если вы пытаетесь улучшить свое познание…
Почему бы не прославлять глупости!»
— Чарли Мангер
«Если кто-нибудь может опровергнуть меня — показать мне, что я делаю ошибку или смотрю на вещи с
неправильной точки зрения — я с радостью изменюсь.