В современном бизнесе роль хорошего разработчика программного обеспечения нельзя недооценивать. Сегодня старший инженер-программист «Яндекса» Сергей Бевзенко делится опытом, как эффективно выстроить взаимодействие компании с разработчиком.
Фото: предоставлено Сергеем Бевзенко
— Сергей, у вас большой опыт работы в крупных компаниях: «Озон», «Авито», Delivery Club, Pegas Touristik, «Яндекс»... В чем вы видите специфику работы в таких организациях?
— В больших компаниях больше разграничена ответственность. Там одни команды занимаются серверами, другие — базами данных... С каждой технологией тоже работает отдельная команда, члены которой имеют высокую экспертность в своем узком направлении. В небольших организациях часто надо совмещать много должностей и нести ответственность за все. То есть, можно сказать, что в маленьких компаниях требуется обладать широкой экспертностью, а в больших — глубокой.
Еще есть разница в этическом и юридическом аспектах. О крупной компании знают многие, даже те люди, которые не пользуются ее продуктами и услугами. К ней приковано внимание общества, журналистов... Неосторожное высказывание работника может повлиять на имидж такой компании. Поэтому корпорация обычно разрабатывает серьезные политики и процедуры, регламентирующие, что сотрудники могут заявлять от ее имени. В маленьких компаниях не думают пока про то, как могут отразиться на их имидже высказывания работников.
— Когда вы работали в Delivery Club, при вашем участии была ускорена загрузка главной страницы. Можете дать совет: как нанимателю оценить потенциал соискателя? Как угадать, что именно этот человек принесет компании выгоду?
— На мой взгляд, прежде всего, важно оценивать технические компетенции. Чем лучше разработчик, тем у него больше знаний и навыков, значит, он может эффективнее решать задачи, быстро и без ошибок. Чем выше квалификация разработчика, тем более высокоуровневые задачи он решает. Рано или поздно эти задачи выходят на уровень инфраструктуры, и разработчик решает задачу эффективного использования серверного железа, что является большой статьей расхода компании. Таким образом он напрямую приносит выгоду компании на экономии ресурсов.
— Тогда следующий вопрос: что должен знать хороший разработчик ПО? Какими компетенциями он должен обладать, чтобы добиться успеха?
— Компетенции можно разделить на 2 категории: технические и социальные. О первых я говорил, отвечая на предыдущий вопрос. К социальным компетенциям (soft skills) относится, например, умение не бояться вовремя сообщать команде и руководству о своих ошибках. Еще разработчику важно обладать коммуникативными навыками. Я считаю, прошло время «одиноких воинов», когда человек мог создать операционную систему или всемирно известное приложение. Сейчас все работают командами, а, значит, нужно уметь эффективно взаимодействовать с коллективом, так как при работе в команде 1+1 не всегда равно 2. Может быть 1+1=1.5 или 1+1=3
Ну и, конечно, важна гибкость. Гибкость в своих знаниях и их получении. То, что программист знает сейчас, может быть неактуальным завтра, поэтому надо быть готовым быстро осваивать новое, учиться и переучиваться. Иными словами, проявлять гибкость в знаниях.
— На ваш взгляд, всегда ли имеет смысл компаниям тщательно подходить к выявлению дефектов в ПО?
— Я при общении с некоторыми работниками IT-отрасли встречал мнение, что, когда работа ведется не над аппаратами жизнеобеспечения и не над космическими ракетами, а, допустим, над компьютерной игрой или офисной программой, то можно проводить тестирование менее тщательно: «Если в первой версии будут проблемы, ничего страшного, устраним в следующих». Я с этим не согласен. Если от ошибки в программе никто не умрет, это не значит, что разработчикам надо халатно относиться к своим обязанностям.
Приведу пример: у человека в офисе постоянно виснет программа, он тратит больше времени на работу с ней. Ему приходится задерживаться в офисе, так как из-за зависаний ПО он не успевает в дневные часы завершить дела. Соответственно, ухудшается качество его жизни. Упускает важную сделку, потому что у его конкурентов ПО функционирует лучше, и они отвечают клиентам быстрее. В итоге не получает премию, а у его работодателя снижается выручка. Мы видим, что в такой ситуации — да, никто не умер — но клиент (компания, купившая ПО) и пользователь (ее сотрудник) пострадали из-за того, что разработчики поленились провести нормально тестирование.
— А как вы обеспечиваете качество тестирования?
— Я сейчас работаю над инструментом тестирования, добавляю в него новые возможности. Последнее большое обновление — реализация сложных сценариев в нагрузочном тестировании с помощью простых конфигураций. Это расширяет область применения инструмента: теперь его сможет применять более широкий круг нагрузочных тестировщиков.
— Вы ранее объяснили, как компании выбрать перспективного программиста. Можете теперь дать совет разработчикам: как трудоустроиться в хорошую компанию, особенно начинающему специалисту?
— Развиваться профессионально, повышать квалификацию. Советую начать с практики. В сети сейчас много курсов, как платных, так и бесплатных. Важно читать книги по теме и, конечно, на работе учиться у более опытных коллег и браться за сложные задачи.
* Деливери Клаб, Пегас Туристик