Умеете ли вы работать в команде: что это значит на самом деле? Нужно ли говорить, что вы умеете работать в режиме аврала Что делать тем, у кого нет опыта работы в команде.

Заголовок вышел броским, но накипело. Сразу скажу, что речь пойдет об 1С. Дорогие 1С-ники, вы не умеете работать с транзакциями и не понимаете что такое исключения. К такому выводу я пришел, просматривая большое количество кода на 1С, рождаемого в дебрях отечественного энтерпрайза. В типовых конфигурациях с этим все достаточно хорошо, но ужасающее количество заказного кода написано некомпетентно с точки зрения работы с базой данных. Вы когда-нибудь видели у себя ошибку "В данной транзакции уже происходили ошибки"? Если да - то заголовок статьи относится и к вам. Давайте под катом разберемся, наконец, что такое транзакции и как правильно с ними обращаться, работая с 1С.

Почему надо бить тревогу

Для начала, давайте разберемся, что же такое представляет собой ошибка "В данной транзакции уже происходили ошибки". Это, на самом деле, предельно простая штука: вы пытаетесь работать с базой данных внутри уже откаченной (отмененной) транзакции. Например, где-то был вызван метод ОтменитьТранзакцию, а вы пытаетесь ее зафиксировать.

Почему это плохо? Потому что данная ошибка ничего не говорит вам о том, где на самом деле случилась проблема. Когда в саппорт от пользователя приходит скриншот с таким текстом, а в особенности для серверного кода, с которым интерактивно не работает человек - это… Хотел написать "критичная ошибка", но подумал, что это buzzword, на который уже никто не обращает внимания…. Это задница. Это ошибка программирования. Это не случайный сбой. Это косяк, который надо немедленно переделывать. Потому что, когда у вас фоновые процессы сервера встанут ночью и компания начнет стремительно терять деньги, то "В данной транзакции уже происходили ошибки" это последнее, что вы захотите увидеть в диагностических логах.

Есть, конечно, вероятность, что технологический журнал сервера (он ведь у вас включен в продакшене, да?) как-то поможет диагностировать проблему, но я сейчас навскидку не могу придумать вариант - как именно в нем найти реальную причину указанной ошибки. А реальная причина одна - программист Вася получил исключение внутри транзакции и решил, что один раз - не карабас "подумаешь, ошибка, пойдем дальше".

Что такое транзакции в 1С

Неловко писать про азбучные истины, но, видимо, немножго придется. Транзакции в 1С - это то же самое, что транзакции в СУБД. Это не какие-то особенные "1С-ные" транзакции, это и есть транзакции в СУБД. Согласно общей идее транзакций, они могут либо выполниться целиком, либо не выполниться совсем. Все изменения в таблицах базы данных, выполненные внутри транзакции, могут быть разом отменены, как будто ничего не было.

Далее, нужно понимать, что в 1С не поддерживаются вложенные транзакции. Собственно говоря, они не поддерживаются не "в 1С", а вообще не поддерживаются. По-крайней мере, теми СУБД, с которыми умеет работать 1С. Вложенных транзакций, например, нет в MS SQL и Postgres. Каждый "вложенный" вызов НачатьТранзакцию просто увеличивает счетчик транзакций, а каждый вызов "ЗафиксироватьТранзакцию" - уменьшает этот счетчик. Данное поведение описано в множестве книжек и статей, но выводы из этого поведения, видимо, разобраны недостаточно. Строго говоря, в SQL есть т.н. SAVEPOINT, но 1С их не использует, да и вещь это достаточно специфичная.

Процедура ОченьПолезныйИВажныйКод(СписокСсылокСправочника) НачатьТранзакцию(); Для Каждого Ссылка Из СписокСсылокСправочника Цикл ОбъектСправочника = Ссылка.ПолучитьОбъект(); ОбъектСправочника.КакоеТоПоле = "Я изменен из программного кода"; ОбъектСправочника.Записать(); КонецЦикла; ЗафиксироватьТранзакцию(); КонецПроцедуры

Код на английском

На самом деле, нет. Мне совершенно не хочется дублировать примеры на английском только ради того, чтобы потешить любителей холиваров и священных войн.

Вы же наверняка пишете такой код, да? Приведенный пример кода содержит ошибки. Как минимум, три. Знаете какие? Про первую я скажу сразу, она связана с объектными блокировками и не имеет отношения непосредственно к транзакциям. Про вторую - чуть позже. Третья ошибка - это deadlock, который возникнет при параллельном исполнении этого кода, но это тема для отдельной статьи, ее рассматривать сейчас не будем, дабы не усложнять код. Ключевое слово для гугления: deadlock управляемые блокировки .

Обратите внимание, простой ведь код. Такого в ваших 1С-системах просто вагон. И он содержит сразу, как минимум, 3 ошибки. Задумайтесь на досуге, сколько ошибок есть в более сложных сценариях работы с транзакциями, написанных вашими программистами 1С:)

Объектные блокировки

Итак, первая ошибка. В 1С существуют объектные блокировки, так называемые "оптимистические" и "пессимистические". Кто придумал термин, не знаю, убил бы:). Совершенно невозможно запомнить, какая из них за что отвечает. Подробно про них написано и , а также в прочей IT-литературе общего назначения.

Суть проблемы в том, что в указанном примере кода изменяется объект базы данных, но в другом сеансе может сидеть интерактивный пользователь (или соседний фоновый поток), который тоже будет менять этот объект. Здесь один из вас может получить ошибку "запись была изменена или удалена". Если это произойдет в интерактивном сеансе, то пользователь почешет репу, ругнется и попробует переоткрыть форму. Если это произойдет в фоновом потоке, то вам придется искать это в логах. А журнал регистрации, как вы знаете, медленный, а ELK-стек для журналов 1С у нас в отрасли настраивают единицы… (мы, к слову, входим в число тех, кто настраивает и другим помогает настраивать:))

Короче говоря, это досадная ошибка и лучше, чтобы ее не было. Поэтому, в стандартах разработки четко написано, что перед изменением объектов необходимо ставить на них объектную блокировку методом "ОбъектСправочника.Заблокировать() ". Тогда параллельный сеанс (который тоже должен так поступить) не сможет начать операцию изменения и получит ожидаемый, управляемый отказ.

А теперь про транзакции

С первой ошибкой разобрались, давайте перейдем ко второй.

Если не предусмотреть проверку исключения в этом методе, то исключение (например, весьма вероятное на методе "Записать()") выбросит вас из данного метода без завершения транзакции . Исключение из метода "Записать" может быть выброшено по самым разным причинам, например, сработают какие-то прикладные проверки в бизнес-логике, или возникнет упомянутая выше объектная блокировка. Так или иначе, вторая ошибка гласит: код, начавший транзакцию, не несет ответственность за ее завершение.


Именно так я бы назвал эту проблему. В нашем статическом анализаторе кода 1С на базе SonarQube мы даже отдельно встроили такую диагностику. Сейчас я работаю над ее развитием, и фантазия программистов 1С, чей код попадает ко мне на анализ, порой приводит меня в шок и трепет…

Почему? Потому что выброшенное наверх исключение внутри транзакции в 90% случаев не даст эту транзакцию зафиксировать и приведет к ошибке. Следует понимать, что 1С автоматически откатывает незавершенную транзакцию только после возвращения из скриптового кода на уровень кода платформы. До тех пор, пока вы находитесь на уровне кода 1С, транзакция остается активной.

Поднимемся на уровень выше по стеку вызовов:

Процедура ВажныйКод() СписокСсылок = ПолучитьГдеТоСписокСсылок(); ОченьПолезныйИВажныйКод(СписокСсылок); КонецПроцедуры

Смотрите, что получается. Наш проблемный метод вызывается откуда-то извне, выше по стеку. На уровне этого метода разработчик понятия не имеет - будут ли какие-то транзакции внутри метода ОченьПолезныйИВажныйКод или их не будет. А если будут - то будут ли они все завершены… Мы же все тут за мир и инкапсуляцию, верно? Автор метода "ВажныйКод" не должен думать про то, что именно происходит внутри вызываемого им метода. Того самого, в котором некорректно обрабатывается транзакция. В итоге, попытка поработать с базой данных после выброса исключения изнутри транзакции, с высокой вероятностью приведет к тому, что "В данной транзакции бла-бла…"

Размазывание транзакций по методам

Второе правило "транзакционно-безопасного" кода: счетчик ссылок транзакций в начале метода и в его конце должен иметь одно и то же значение . Нельзя начинать транзакцию в одном методе и завершать ее в другом. Из этого правила, наверное, можно найти исключения, но это будет какой-то низкоуровневый код, который пишут более компетентные люди. В общем случае так писать нельзя.

Например:

Процедура ВажныйКод() СписокСсылок = ПолучитьГдеТоСписокСсылок(); ОченьПолезныйИВажныйКод(СписокСсылок); ЗафиксироватьТранзакцию(); // Путевка в ад, серьезный разговор с автором о наших сложных трудовых отношениях. КонецПроцедуры

Выше - неприемлемый говнокод. Нельзя писать методы так, чтобы вызывающая сторона помнила и следила за возможными (или вероятными - как знать) транзакциями внутри других методов, которые она вызывает. Это нарушение инкапсуляции и разрастание спагетти-кода, который невозможно трассировать, сохраняя рассудок.

Особенно весело вспомнить, что реальный код намного больше синтетических примеров из 3-х строчек. Выискивать начинающиеся и завершающиеся транзакции по шести уровням вложенности - это прям мотивирует на задушевные беседы с авторами.

Пытаемся исправить код

Вернемся к исходному методу и попытаемся его починить. Сразу скажу, что объектную блокировку мы чинить пока не будем, просто, чтобы не усложнять код примера.

Первый подход типичного 1С-ника

Обычно программисты 1С знают, что при записи может быть выдано исключение. А еще они боятся исключений, поэтому стараются их все перехватывать. Например, вот так:

Процедура ОченьПолезныйИВажныйКод(СписокСсылокСправочника) НачатьТранзакцию(); Для Каждого Ссылка Из СписокСсылокСправочника Цикл ОбъектСправочника = Ссылка.ПолучитьОбъект(); ОбъектСправочника.КакоеТоПоле = "Я изменен из программного кода"; Попытка ОбъектСправочника.Записать(); Исключение Лог.Ошибка("Не удалось записать элемент %1", Ссылка); Продолжить; КонецПопытки; КонецЦикла; ЗафиксироватьТранзакцию(); КонецПроцедуры

Ну как, стало лучше, да? Ведь теперь, возможные ошибки записи обрабатываются и даже логируются. Исключения больше не возникнут при записи объекта. И в логе даже видно - на каком объекте, не поленился, вывел в сообщение ссылку вместо лаконичного "Ошибка записи справочника", как это часто любят писать вечно торопящиеся разработчики. Иными словами, налицо забота о пользователе и рост компетенций.

Однако, опытный 1С-ник здесь скажет, что нет, лучше не стало. По сути ничего не поменялось, а может даже стало и хуже. В методе "Записать()" платформа 1С сама начнет транзакцию записи, и эта транзакция будет уже вложенной по отношению к нашей. И если в момент работы с базой данных 1С свою транзакцию откатит (например, будет выдано исключение бизнес-логики), то наша транзакция верхнего уровня все равно будет помечена как "испорченная" и ее нельзя будет зафиксировать. В итоге этот код так и останется проблемным, и при попытке фиксации выдаст "уже происходили ошибки".

А теперь представьте, что речь идет не о маленьком методе, а о глубоком стеке вызовов, где в самом низу кто-то взял и "выпустил" начатую транзакцию из своего метода. Верхнеуровневые процедуры могут и понятия не иметь, что кто-то там внизу начинал транзакции. В итоге, весь код валится с невнятной ошибкой, которую расследовать невозможно в принципе.

Код, который начинает транзакцию, обязан завершить или откатить ее. Не взирая ни на какие исключения. Каждая ветка кода должна быть исследована на предмет выхода из метода без фиксации или отмены транзакции.

Методы работы с транзакциями в 1С

Не будет лишним напомнить, что вообще 1С предоставляет нам для работы с транзакциями. Это всем известные методы:

  • НачатьТранзакцию()
  • ЗафиксироватьТранзакцию()
  • ОтменитьТранзакцию()
  • ТранзакцияАктивна()

Первые 3 метода очевидны и делают то, что написано в их названии. Последний метод - возвращает Истину, если счетчик транзакций больше нуля.

И есть интересная особенность. Методы выхода из транзакции (Зафиксировать и Отменить) выбрасывают исключения, если счетчик транзакций равен нулю. То есть, если вызвать один из них вне транзакции, то возникнет ошибка.

Как правильно пользоваться этими методами? Очень просто: надо прочитать сформулированное выше правило:

Как же соблюсти это правило? Давайте попробуем:

Выше мы уже поняли, что метод ДелаемЧтоТо - потенциально опасен. Он может выдать какое-то исключение, и транзакция "вылезет" наружу из нашего метода. Окей, добавим обработчик возможного исключения:

НачатьТранзакцию(); Попытка ДелаемЧтоТо(); Исключение // а что же написать тут? КонецПопытки; ЗафиксироватьТранзакцию();

Отлично, мы поймали возникающую ошибку, но что с ней делать? Записать сообщение в лог? Ну, может быть, если код логирования ошибок должен быть именно на этом уровне и ошибку мы тут ждем. А если нет? Если мы не ожидали тут никаких ошибок? Тогда мы должны просто передать это исключение выше, пусть с ними разбирается другой слой архитектуры. Делается это оператором "ВызватьИсключение" без аргументов. В этих ваших джава-сиплюсплюсах это делается точно так же оператором throw.

НачатьТранзакцию(); Попытка ДелаемЧтоТо(); Исключение ВызватьИсключение; КонецПопытки; ЗафиксироватьТранзакцию();

Так, стоп… Если мы просто прокидываем исключение дальше, то зачем тут вообще нужна Попытка? А вот зачем: правило заставляет нас обеспечить завершение начатой нами транзакции.

НачатьТранзакцию(); Попытка ДелаемЧтоТо(); Исключение ОтменитьТранзакцию(); ВызватьИсключение; КонецПопытки; ЗафиксироватьТранзакцию();

Теперь, вроде бы, красиво. Однако, мы ведь помним, что не доверяем коду ДелаемЧтоТо(). Вдруг там внутри его автор не читал этой статьи, и не умеет работать с транзакциями? Вдруг он там взял, да и вызвал метод ОтменитьТранзакцию или наоборот, зафиксировал ее? Нам очень важно, чтобы обработчик исключения не породил нового исключения , иначе исходная ошибка будет потеряна и расследование проблем станет невозможным. А мы помним, что методы Зафиксировать и Отменить могут выдать исключение, если транзакция не существует. Здесь-то и пригождается метод ТранзакцияАктивна.

Финальный вариант

Наконец, мы можем написать правильный, "транзакционно-безопасный" вариант кода. Вот он:

НачатьТранзакцию(); Попытка ДелаемЧтоТо(); Исключение Если ТранзакцияАктивна() Тогда ОтменитьТранзакцию(); КонецЕсли; ВызватьИсключение; КонецПопытки; ЗафиксироватьТранзакцию();

Постойте, но ведь не только "ОтменитьТранзакцию" может выдавать ошибки. Почему же тогда "ЗафиксироватьТранзакцию" не обернут в такое же условие с "ТранзакцияАктивна"? Опять же, по тому же самому правилу: код, начавший транзакцию, должен нести ответственность за ее завершение. Наша транзакция необязательно самая первая, она может быть вложенной. На нашем уровне абстракции мы обязаны заботиться только о нашей транзакции. Все прочие должны быть нам неинтересны. Они чужие, мы не должны нести за них ответственность. Именно НЕ ДОЛЖНЫ. Нельзя предпринимать попыток выяснения реального уровня счетчика транзакций. Это опять нарушит инкапсуляцию и приведет к "размазыванию" логики управления транзакциями. Мы проверили активность только в обработчике исключения и только для того, чтобы убедиться, что наш обработчик не породит нового исключения, "прячущего" старое .

Чек-лист рефакторинга

Давайте рассмотрим несколько наиболее распространенных ситуаций, требующих вмешательства в код.

Паттерн:

НачатьТранзакцию(); ДелаемЧтоТо(); ЗафиксироватьТранзакцию();

Обернуть в "безопасную" конструкцию с Попыткой, Проверкой активности и пробросом исключения.

Паттерн:

Если Не ТранзакцияАктивна() Тогда НачатьТранзакцию() КонецЕсли

Анализ и Рефакторинг. Автор не понимал, что делает. Начинать вложенные транзакции можно безопасно. Не нужно проверять условие, нужно просто начать вложенную транзакцию. Ниже по модулю он наверняка еще там извращается с их фиксацией. Это гарантированный геморрой.

Примерно похожий вариант:

Если ТранзакцияАктивна() Тогда ЗафиксироватьТранзакцию() КонецЕсли

аналогично: фиксация транзакции по условию - это странно. Почему тут условие? Что, кто-то иной мог уже зафиксировать эту транзакцию? Повод для разбирательства.

Паттерн:

НачатьТранзакцию() Пока Выборка.Следующий() Цикл // чтение объекта по ссылке // запись объекта КонецЦикла; ЗафиксироватьТранзакцию();

  1. ввести управляемую блокировку во избежание deadlock
  2. ввести вызов метода Заблокировать
  3. обернуть в "попытку", как показано выше

Паттерн:

НачатьТранзакцию() Пока Выборка.Следующий() Цикл Попытка Объект.Записать(); Исключение Сообщить("Не получилось записать"); КонецПопытки; КонецЦикла; ЗафиксироватьТранзакцию();

Данная транзакция уже не завершится в случае исключения. Нет смысла продолжать цикл. Код требуется переписать, сверяясь с исходной задачей. Дополнительно обеспечить более информативное сообщение об ошибке.

В заключение

Я, как вы уже, наверное, догадались, отношусь к людям, любящим платформу 1С и разработку на ней. К платформе, разумеется, есть претензии, особенно в среде Highload, но в общем и целом, она позволяет недорого и быстро разрабатывать очень качественные корпоративные приложения. Давая из коробки и ORM, и GUI, и веб-интерфейс, и Reporting, и много чего еще. В комментариях на Хабре обычно пишут всякое высокомерное, так вот, ребята - основная проблема 1С, как экосистемы - это не платформа и не вендор. Это слишком низкий порог вхождения, который позволяет попадать в отрасль людям, не понимающим, что такое компьютер, база данных, клиент-сервер, сеть и всякое такое. 1С сделала разработку корпоративных приложений слишком легкой. Я за 20 минут могу написать на ней учетную систему для закупок/продаж с гибкими отчетами и веб-клиентом. После этого, мне несложно подумать о себе, что и на больших масштабах можно писать примерно так же. Как-то там 1С сама все внутри сделает, не знаю как, но наверное сделает. Напишу-ка я "НачатьТранзакцию()"....

И знаете - самое главное, что это прекрасно. Простота разработки в 1С позволяет моментально реализовывать бизнес-идеи и встраивать их в процессы компании. Потом всегда можно отрефакторить, главное понимать как. И если вдруг вам нужна помощь в аудите вашей "медленной 1С" - обращайтесь к специалистам по оптимизации. Она совсем не медленная.

Работодатели любят спрашивать о стрессоустойчивости, а вы так хотите получить новую работу, что тут же готовы подтвердить готовность вкалывать в ситуации аврала. Но не спешите сразу говорить «да» - это может навредить вашей карьере и здоровью.

Не стоит говорить на собеседовании, что лучше всего вы действуете в экстренных ситуациях. Такое заявление, особенно в однозначно жесткой форме, может насторожить работодателя. Он подумает, что в иных условиях вы чувствуете себя дискомфортно. Обычно не следует затрагивать эту тему без соответствующего вопроса со стороны рекрутера или потенциального начальника. Но если в ходе собеседования вам становится ясно, что в компании авралы являются обычным делом, то упомянуть свой успешный опыт работы в экстренных ситуациях можно и нужно.

Когда работодатель подбирает себе сотрудника, он часто выясняет, сможет ли претендент работать в условиях пиковых нагрузок, есть ли у него опыт подобной деятельности и может ли его это испугать. В некоторых сферах (строительство, туризм, сбыт некоторых продуктов питания и другие) есть сезонные пики. Авралы могут быть связаны с временем суток или определенными днями (ресторанный бизнес, розничная торговля). Или, например, у бухгалтеров - с периодом подготовки сдачи отчетности.

Соискателю всегда проще, если работодатель напрямую спрашивает, как человек чувствует себя в условиях высокой загруженности. Тогда стоит сказать, что у вас есть такой опыт и вы спокойно относитесь к подобным ситуациям. Но нельзя говорить, что в этих условиях вы работаете лучше всего. Ваш интервьюер может подумать, что размеренная офисная деятельность по плану очень быстро может вам наскучить. Лучше представлять себя универсалом с этой точки зрения. Поэтому ответьте, например, так: «Конечно, мне нравится работать, когда все четко и по плану, но если аврал случается, то ничего страшного, без этого в бизнесе нельзя».

Для иллюстрации приведу пример, взятый из интервью с претендентом на должность менеджера направления в туристическое агентство.

  • В нашем бизнесе бывают разные периоды и ситуации. В какой обстановке вам работается лучше?
  • В период отпусков, перед новогодними и майскими праздниками, перед детскими каникулами нагрузки бывают пиковые. В это время работать интереснее всего. Важно не упустить ни одного клиента - четкое планирование всех контактов, повышение интенсивности, переработки.
  • А если затишье?
  • Всегда есть такая работа, которую можно и нужно делать в такие периоды. Важно поддерживать контакты со старыми клиентами, собирать и готовить информацию для очередного горячего сезона, разрабатывать новые предложения. Если человек знает и любит свое дело, ему всегда есть чем заняться.

У нанимателя должно сложиться впечатление, что вы всегда готовы работать в режиме, которого требует ситуация.

Вы были на интервью и не назвали себя «командным игроком»? На вопрос рекрутера: «Какие ваши сильные стороны?», вы не ответили, что умеете работать в команде? Если с такого собеседования вы ушли с пустыми руками, то причина отказа лежит на поверхности.

Срочно работайте над исправлением этой досадной ошибки. Во-первых, не забывайте указать в резюме, что вы умеете работать в команде. Во-вторых, напишите в своем сопроводительном письме к резюме, что вы командный игрок. В-третьих, вы должны в обязательном порядке продемонстрировать вашу способность к сотрудничеству и взаимодействию с другими членами команды на всех этапах собеседований.

Навык «Работа в команде» занял второе месте в рейтинге ТОП-10 навыков, . Поэтому необходимо уделить этому навыку особое внимание и приложить все усилия, чтобы получить высокую оценку на собеседовании. В статье « я рассказала, как поработать над навыком №1 из этого рейтинга. Сегодня вы узнаете, как показать свое умение ладить со всеми членами команды и добиваться результата совместными усилиями.

Список вопросов, при ответе на которые вы сможете продемонстрировать свой навык работы в команде.
Расскажите о себе.
Какие ваши сильные стороны?
Ваши главные достижения?
Почему мы должны взять вас на работу?
Расскажите мне об успешном проекте, когда вы работали в составе команды.
Расскажите мне о ситуации, когда вам пришлось работать с трудным клиентом.
Приведите примеры, когда вы достигли результата, благодаря работе в команде.
Что делает вас хорошим сотрудником/ менеджером?
Как бы вы определили продуктивную атмосферу для своих сотрудников?
Чему, по вашему мнению, вы обязаны своим успехам?
Вы когда-нибудь имели конфликт с сотрудником?
Расскажите мне о последней конструктивной обратной связи, которую вы получили от своего руководителя.

Что делает вас хорошим игроком в команде?

Вот несколько качеств, которые характеризуют вас, как сотрудника, умеющего работать в команде:

Стремление достичь общих результатов
Умение слушать
Уважение всех членов коллектива
Высокая оценка работы коллег
Коммуникативные навыки
Способность принимать конструктивную обратную связь
Высокий уровень эмоционального интеллекта
Эмпатия
Этичное поведение

Определите для себя является ли «работа в команде» одной из ваших сильных сторон. Ниже приведены главные критерии оценки этого навыка:

  • Сотрудники постоянно просят вашей помощи.
  • Люди хотят, чтобы вы присоединились к работе в их проектные группы.
  • Вас часто приглашают на обед.
  • К вам обращаются за помощью, чтобы узнать ваше мнение в трудной ситуации.
  • Вы часто являетесь посредником в улаживании разногласий между коллегами.
  • Вы можете найти способ установить контакт с трудным клиентом.

Командный игрок умеет продуктивно работать с разными типами личности и может улаживать конфликты и разногласия. Сплоченной команды можно добиться только, если достижение общих целей и задач стоит намного выше личных предпочтений и индивидуальных задач каждого члена команды.

Как показать навык «работа в команде» в ответе на вопрос: Какими достижениями вы больше всего гордитесь?
Для ответа на этот вопрос необходимо приводить примеры своих достижений, а также подробно рассказать, как вы их добились. Говорите о тех достижениях, которые непосредственно связаны с вашей работой. Возможно, вы взяли на себя подготовку мероприятия, от которого остальные отказывались и успешно с этим справились или вы были частью команды, работающей над крупным проектом. Не преувеличивайте свой вклад в какие-либо события — разделите этот успех со своими коллегами и в глазах интервьюера вы будете выглядеть отличным командным игроком. Например, вы можете ответить так:

«Хотя я думаю, что мои главные достижения еще впереди, тем не менее я очень горжусь, что был причастен к созданию новой программы для менеджеров. Я вложил много сил и энергии, являясь одним из участников этой группы и многому научился в процессе работы у своих более опытных коллег».

Что делать тем, у кого нет опыта работы в команде?

Для студентов и выпускников или кандидатов с небольшим опытом работы, очень важно показать менеджеру по персоналу, что вы сможете работать в коллективе. Если вы еще не имели возможности поработать в команде, то вы, должны быть готовы говорить об участии в групповых проектах, в семинарах, тренингах, общественной работе.
Если Вы имеете ограниченный опыт совместной работы или чувствуете, что это ваше слабое место, то есть простые способы улучшить этот навык.

Рассмотрите следующие варианты развития навыка «работа в команде».
1) Станьте волонтером. Заявите о своем желании работать в нескольких командных проектах. Используйте возможности участия в совместной деятельности и за пределами работы.
2) Найдите себе наставника. Посмотрите вокруг и найдите человека, который является «душой коллектива». Вы можете многому научиться, просто наблюдая и подражая ему. Если вы начнете наблюдать более внимательно, вы заметите, что люди в команде играют различные, роли — например, один человек является мотиватором и вдохновляет остальных, а другой — активным деятелем, способным найти способ выполнить любую задачу. Пройдите тест онлайн Р. М. Белбина «Командные роли» и определите свою роль в команде. Также вы можете использовать формулировки ответов этого теста при подготовке собственных ответов на вопросы собеседования.
3) Оцените себя и коллег. Попробуйте исследовать себя и своих коллег, используя известные типологии личности, такие как профиль DISC или . Эти оценки личности могут быть полезны для понимания ваших собственных предпочтений и особенностей других. Например, если ваш босс является рассказчиком, а вы — мыслителем, результаты теста помогут узнать, как взаимодействовать с таким типом личности и разговаривать с ним на его языке коммуникации.
4) Советы экспертов. Узнайте, как устранить проблемы, работая в команде. Прочитайте одну из трех книг и узнайте стратегии для успешной работы с конфликтными сотрудниками.
1. Джон Максвелл «17 неопровержимых законов работы в команде»
2. Джеймс Фергюсон «Практическое пособие по развитию компетенций»
3. Харви Роббинс, Майкл Финли «Почему не работают команды? Что идет не так, и как это исправить?»

Следующие две вкладки изменить содержание ниже.

Команда объединяет специалистов общими целями, от которых зависит успех организации в целом и каждого участника команды в отдельности. Когда команда работает как единый организм, она может достигать большего, чем все ее члены по отдельности. Умение работать в команде ценно для многих работодателей, но что означает обладать навыками командного взаимодействия?

Вы умеете работать в команде, еcли

…вы можете совмещать свои задачи и общие

Важно не только выполнять свои обязанности, но и уметь объединять личные амбиции и интересы компании. Работая в команде, иногда приходится отказываться от личного в пользу общего. Достижение общего результата во многом зависит от того, насколько хорошо каждый член группы выполняет свою работу и поддерживает усилия своих коллег.

помощь для вас не пустой звук

Для достижения результата, стоящего перед командой, важно быть готовым не только оказать помощь коллегам, но и не стесняться принять помощь от них.

…вы ответственно относитесь к соблюдению требований

В командной работе важна устойчивая планомерная работа, соответствующая целям и срокам, а не периодические достижения кого-либо из членов команды. При выполнении совместного проекта все участники команды должны быть уверены, что каждый справится со своей частью задачи в срок.

…умеете правильно взаимодействовать в конфликтных ситуациях

Командному игроку важно уметь эффективно взаимодействовать с другими в конфликтных ситуациях: слушать, убеждать, оставаясь конструктивным, находить аргументы и стремиться к компромиссам, не переходить на личности. Основное правило в работе в команде – это сотрудничество.

Навыки командного взаимодействия особенно важны для тех, кто работает над сложными, многоплановыми задачами, решение которых не под силу отдельному специалисту. Понять, какую роль вы играете в команде, поможет продукт от LifeWriter. С его помощью вы также сможете выяснить, как можно стать еще более эффективным в командном взаимодействии.

В разделе профессиональных навыков или дополнительной информации многие указывают знание компьютера. Но далеко не все могут составить список компьютерных программ для резюме. Конечно, указывать лучше всего лишь то ПО, с которым вы действительно умеете работать. Ведь рекрутер может попросить вам прямо на собеседовании показать свои умения.

Правила написания

Писать о навыках работы с компьютером кадровики советуют даже тем людям, которые претендуют на должность не связанную с работой за ПК. Описывая уровень владения этой техникой, можно указать список программ, которыми вы умеете пользоваться. Также надо написать, на каком уровне вы знаете компьютер. Указать это можно следующим образом:

  • уверенный пользователь ПК;
  • средний уровень;
  • начальный уровень владения компьютером.

А вот детально расписывать о знаниях тех или иных программ не стоит. Каждый соискатель может воспользоваться таким образцом написания этой графы:

Опытный пользователь. Умение работать с базовыми программами MS Office (Access, Excel, Power Point, Word, WordPad), графическими редакторами (Picture Manager, CorelDRAW), программами для отправки-получения электронной корреспонденции (Outlook Express). Умею быстро искать необходимую информацию в интернете, могу работать с различными браузерами (Opera, Firefox, Chrome, Amigo, Internet Explorer). Неплохое знание особенностей операционной системы Windows.

Универсальный вариант этого раздела может выглядеть и несколько иначе:

Владение ПК на среднем уровне. Умение работать с программами MS Office (опыт работы с Excel, Word), искать и скачивать необходимую информацию через интернет (работал с браузерами Opera, Firefox), могу оправлять электронные письма.

Специфика профессий

Существует ряд специальностей, для которых необходимо перечислить знание программ, помогающих работать. Конечно, начать описание лучше с общих сведений об уровне владения компьютером и умении работать с основными программами. Например, в резюме бухгалтера эта графа может выглядеть следующим образом:

Уверенный компьютерный пользователь. Знание основных программ Microsoft Office, таких как MS Access, Word, PowerPoint, Excel, умение работать с электронной почтой (в том числе и в программах Outlook Express, Mirramail, EmailOpenViewPro). Отменные навыки работы в интернете в различных браузерах (работал в Opera, Google Chrome, Mozilla Firefox и прочих). Знание специализированных компьютерных программ: 1С:Бухгалтерия 7.7 и 8, Парус, системы Клиент-Банк.

Слишком большой список с перечислением всевозможного ПО может дать обратный эффект: работодатель решит, что ваши знания очень поверхностны.

Неплохо будет, если претендент на должность менеджера по продажам помимо списка основных программ ПК укажет также знание специализированных. В его резюме указанный раздел графы «профессиональные навыки» может выглядеть так:

Уровень грамотного пользователя. Навыки поиска специализированной информации в интернете, опыт работы с различными браузерами (в том числе Explorer, Opera, Chrome и прочие). Знание основ работы с операционными системами Linux и Windows, основных офисных программ, текстовых и графических редакторов (Word, WordPad, PowerPoint, Access, Paint, Excel, Photoshop). Навыки работы со специализированными системами «БЭСТ», 1С:Предприятие (спецификация «Торговля и склад»), опыт работы с системой CRM, регулирующей взаимоотношения с клиентами.

Если должность требует более глубоких знаний определенных программ, то их необходимо указать. Так, на должность PHP-программиста можно помимо умения работать с ПК, могут понадобиться следующее: знание PHP, API соц.сетей, WordPress API, CSS, HTML, JS, CSS.

В последнем случае ориентироваться необходимо на свои знания и на требования работодателя.

Если освоение новых программ не вызывает у вас трудностей, это стоит отметить в окончании раздела.

Похожие статьи

© 2024 liveps.ru. Домашние задания и готовые задачи по химии и биологии.