Собеседование 1с программиста

Собеседования – неотъемлемая часть жизни любого соискателя работы. Много раз был на них – где-то успешно, где-то нет. В одном месте я понимал что работать здесь мне будет неинтересно. В другом просто-напросто не “удовлетворял” (ну вы поняли меня) требованиям работодателя и т.д. Но я никогда не был по другую сторону стола, где сидят люди, которым ты пытаешься понравиться (как в профессиональном плане так и в психологическом, ну и еще в каких то там других….). И вот спустя время я оказался там…
Скажу вам так – подобрать достойного программиста 1с – то еще себе занятие. Конечно это будет не ГУРУ 1с, со всевозможными сертификатами специалиста, который выдает тонну качественного кода в день или решает проблемы оптимально быстро, прекрасно ладит с пользователями или бизнес аналитиком и т.д. Такие обычно не часто ходят по собеседованиям, а сидят в стабильно работающих компаниях и получают за это соответствующие деньги.
Зачастую нужен просто обычный, хороший программист, который понимает принципы программирования на 1с, который может разобраться в коде, придумать реализацию той или иной задачи, сможет изучить что-то новое и т.д. В общем так сказать хорошист, а не программист с золотой медалью.
Так вот, подобрать даже такого программиста сейчас совсем непросто.
Перед самым первым своим кандидатом (это было собеседование не в организацию “рога и копыта”, а в крупную и известную фирму, на зарплату выше средней (смотри 125 000 тыс. рублей) по рынку Москвы), я решил хорошо подготовиться: накидал простенькие вопросы по теории, так же очень простые практические задачки, ну и серию стандартных вопросов: “с чем работали”, “какие проекты делали” – ну и тому подобную чушь. Я думал что с такими вопросами меня сейчас засмеют и уйдут раньше окончания собеседования, но тут начинается самое интересно.
Рассмотрим основные на мой взгляд типы людей, которых я видел на собеседовании.
Реально тупые. 60%.
Эти люди просто-напросто вообще не понимают как они оказались в мире программирования 1с и что они там делают. Большую часть здесь преобладает молодое поколение, но и люди 30, 40 летного возраста так же показывают здесь абсолютно уникальные знания. Скорее всего эти индивидуумы работали на какой-то совсем слабой поддержки, и кроме как добавлением текста на форму справочника или документа больше вообще ничем не занимались и не хотели ничего изучать. Хоть они и имеют стаж работы 4-5 лет (и резюме у них более или менее нормально), но за эти годы они явно так и не поняли – что такое разработка в 1с. Да возможно они и могут написать код, который будет более или менее рабочим, но это скорее всего будет навозная куча с воткнутыми в неё палками. Ниже приведены примеры вопросов, на которые они начинают нести такую чушь, что я хочу просто встать и выйти в окно из 9 этажа офиса прям при них:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Функция ВопросыТеория() //Чем отличается справочник от документа? //Может ли справочник быть регистратором в регистрах? //Какие модули конфигурации вы знаете? //Чем "модуль объекта" отличается от "модуля менеджера"? //Какие директивы компиляции в модулях знаете? //Что такое мутабельные значения? Примеры. КонецФункции |
Обычно дальше этих вопросов дело не заходит – тактично сворачивается собеседование и все идут по своим делам. Некоторым я все же давал элементарные практические задачи, на чтение кода – но видимо смотря в листок, они видели в нем черную дыру, которая полностью засасывала их сознание. Причем “обследующийся” скорее всего даже и не догадывался что он нес полную чушь на все вопросы и уходя с собеседования думал, что покорил компанию своими космическими знаниями и ему перезвонят через 1 минуту, как он выйдет из офиса (чего как вы сами понимаете не происходило).
Если вы не можете хоть как-то ответить уверенно на эти вопросы, то стоит задуматься: а в той ли сфере вы работаете?
Эволюционирующие. 15%.
Этих кандидатов жизнь уже хоть чему то, да научила. И они способны выживать в замечательно мире программирования 1с. У них не такой уже пустой взгляд в глазах, как у предыдущих кандидатов – и только благодаря им, можно утверждать – в мире программирования 1с не все так плохо. Они более-менее уверенно отвечают на следующие теоретические вопросы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Функция ВопросыТеория() //... к предыдущим вопросам //Дирректива по умолчанию (если не указать)? //Для чего используют диррективу "НаКлиентеНаСервереБезКонтекста" какие у нее особенности? //Чем структура отличается от соответствия? //Каими горячими клавишами пользуетесь при разработке? //В какой момент отрабатывают подписки на события? //Имеет ли значение порядок измерений в регистрах? //Каким способом можно отсортировать структуру? //Что означает флаг "Вызов сервера" у общего модуля? //... и тому подобные вопросы... КонецФункции |
Даже если они на что-то затрудняются ответить, то с помощью подсказок или наводок они все таки выдают из себя похожие на правду ответы.
В вопросах, связанные непосредственно уже с понимаем кода (смотри практические задания), они показывают уверенные знания. Они могут найти почти все ошибки (смотри тупой бред) в коде:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
ТекстЗапроса = "ВЫБРАТЬ | Контрагенты.Ссылка КАК Ссылка, |ИЗ | Справочник.Контрагенты КАК Контрагенты"; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("Организация", Справочники.Организации.ПустаяСсылка()); Выборка = Запрос.Выполнить().Выбрать(); Сообщить(Запрос.Количество); Пока Выборка.Следующий() Цикл Объект = Выборка.Ссылка; Объект.Префикс = "КД"; Объект.Записать(РежимЗаписиДокумента.Запись); КонецЦикла; |
И даже оптимизировать код и текст запроса:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить(«Контрагент»); ТЗ.Колонки.Добавить(«ДоговорКонтрагента»); ТекстЗапроса = «ВЫБРАТЬ | бит_ОборотыПоБюджетамОбороты.Контрагент КАК Контрагент, | бит_ОборотыПоБюджетамОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента |ИЗ | РегистрНакопления.бит_ОборотыПоБюджетам.Обороты КАК бит_ОборотыПоБюджетамОбороты |ГДЕ | бит_ОборотыПоБюджетамОбороты.Сценарий = &Сценарий | И бит_ОборотыПоБюджетамОбороты.Аналитика_1 = &Аналитика_1»; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр(«Сценарий» , Справочники.СценарииПланирования.ФАКТ); Запрос.УстановитьПараметр(«Аналитика_1» , Справочники.Подразделения.ПустаяСсылка()); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если НЕ Выборка.ДоговорКонтрагента.ПометкаУдаления Тогда НС = ТЗ.Добавить(); НС.Контрагент = Выборка.Контрагент; НС.ДоговорКонтрагента = Выборка.ДоговорКонтрагента; КонецЕсли; КонецЦикла; |
С ними в принципе можно поговорить уже и по проектах и о задачах, даже проверить логику их мышления, предоставив какую нибудь теоретическую задачку из серии: а как бы организовали бы отлов той или иной ошибки, с помощью чего написали бы обмен и т.д.
Профессионалы своего дела. 10%.
Это в основном уже сложившиеся хорошие специалисты в области разработки 1с. Для них все предыдущие вопросы не составляют в основном никакого труда. Большинство из них легко могут вступить со мной в спор и доказать что я не прав в том или ином моменте. Они в принципе уже могут рассуждать на задания следующего типа:
1 2 3 4 5 6 7 8 9 10 11 |
//Пример. Пусть поле «Регистратор» регистра накопления ссылается на два документа: «РасходнаяНакладная» и «ПриходнаяНакладная», //и в предложении «ГДЕ» выборка ограничивается только значениями регистратора, ссылающимися на «РасходнуюНакладную» ТекстЗапроса = "ВЫБРАТЬ | УчетНоменклатуры.Регистратор.Номер, | УчетНоменклатуры.Количество |ИЗ | РегистрНакопления.УчетНоменклатуры КАК УчетНоменклатуры |ГДЕ | УчетНоменклатуры.Регистратор ССЫЛКА Документ.РасходнаяНакладная"; //чем не оптимален данный запрос и как его можно было бы улучшить? |
Они понимают что такое индексы, блокировки, SQL и тому подобные механизмы.
С такими реальными кандидатами есть только несколько проблем:
- Они сами выбирают себе работодателя и уровень зарплаты, поэтому если человек нам походит полностью, то это не значит что мы подходим ему;
- У него может быть завышенный уровень зарплаты;
- У него могут быть проблемы иного характера: он слишком замкнут в себе, от него может нести перегаром, он совсем может быть не опрятно одет и т.д. в той же сфере.
В общем даже в этих 10% процентах, не всегда удается поймать то что нужно.
Представительницы прекрасной половины человечества. 10%.
Девушек стоить выделить в отдельный тип программистов 1с, которых я собеседовал. Тут ничего плохого сказать не могу – в принципе это “программистки” не выдающегося уровня, но способные выполнять обычные рутинные задачи 1с-ника и даже придумывать и реализовывать что-то новое и полезное.
Ни рыба ни мясо. 5%.
Это отдельный тип людей, которых я совсем не понимаю. Они с легкостью отвечают на сложные вопросы, но не могут ответить на самые элементарные. Они видят одни ошибки, но не видят других более простых и т.д. Такое ощущение что в голове у них есть все таки знания, но черные дыры перекрывают их в некоторых местах. За таких людей порой становится страшно – не понятно что он может сделать в следующую минуту.
В общем как оказалось не такое это уж и веселое занятие – собеседовать программистов. Нет никакой гарантии что показав достойные знания на встрече, человек не забудет их в первый же свой рабочий день. Он может оказаться не обучаемым, туго соображающим, медленным, необщительным и т.д.
Может это только мне попадались такие экземпляры и на самом деле все не так уж и плохо. Надеюсь что так и есть. Никого не хотел здесь оскорбить или унизить – это просто реальные факты из проводимых мною собеседований. Но если все же вы узнали себя в одном из низко- рейтинговом типе то вот вам мои советы:
- Меняйтесь в лучшую сторону;
- Больше программируйте;
- Не пишите “
гавно-код”; - Смотрите как те или иные решения реализованы в типовых конфигурациях;
- Отходите от шаблонов: Всегда писали запросы через конструктор? Самое время написать парочку простых без него;
- Изучайте новое: sql, powershell, веб-сервисы;
- Общайтесь с людьми, которые на порядок выше вас в профессиональном плане;
- и т.д.
Всем удачи и хороших собеседований!
P.S. Мнение автора может не совпадать с мнением большинства – да и фиг с ним.
хорошая статья! спасибо, автор.
Что такое мутабельные значения? Примеры.
задумался, вспомнилась ошибка попытки передачи с клиента на сервер мутабельного значения) точнее наверно мутабельный тип надо спрашивать.
есть спорные вопросы типа как отсортировать структуру? я бы переспросил зачем?
но статья по делу, все так.
Да можно кучу вопросов придумать любых, даже в корне неправильны 🙂 – все равно видно будет что соискатель знает и как мыслит. Но в реальности действительно страшно за ситуацию на рынке программистов 1с 🙂