IT-рекрутмент. Как найти лучших специалистов, когда все вокруг горит - Егор Яценко
Шрифт:
Интервал:
Закладка:
● Системное тестирование — сквозное тестирование всех модулей программы на корректную взаимную работу.
● Нагрузочное тестирование — позволяет определить предельно допустимую нагрузку, например, на сайт.
● Регрессионное тестирование — проверка того, как новые модули влияют на уже существующие элементы системы.
● Тестирование безопасности — проверка защищенности системы от вирусов, атак хакеров и любого другого несанкционированного доступа.
Если вы планируете заниматься наймом тестировщиков, вам также надо знать, какие есть способы тестирования, и свободно оперировать следующими терминами:
● Белый ящик — тестирование, при котором специалист, проверяющий ту или иную систему, знает ее устройство и может догадаться о природе проблемы, которую находит.
● Черный ящик — тестировщик не знает, что происходит внутри программы. То есть, например, при ручном тестировании человек нажимает кнопку, получает положительный или отрицательный результат — и просто фиксирует его.
● Серый ящик — в таком случае специалист знает общее устройство программы, но не знает деталей. Поэтому может объяснить только наличие особо грубых ошибок. Все остальные он регистрирует, описывает и передает на расшифровку другим специалистам.
Общаясь с тестировщиком, мы всегда спрашиваем, занимался он ручным или автоматизированным тестированием, какие виды тестирования осуществлял, с помощью чего делал автотесты, писал ли скрипты самостоятельно. Если да, то на каком языке программирования.
Глава 12
DevOps и системное администрирование
О том, кто такие системные администраторы, мы уже говорили. Если кратко, то системный администратор берет на себя функции, связанные с поддержкой и эксплуатацией IT-инфраструктуры в компании. Набор обязанностей системного администратора, как правило, зависит от того, какое оснащение есть в компании: пара компьютеров с принтером или сервера и сложные коммуникационные системы.
В современных условиях активно развивается новая философия сервисной деятельности в IT, и называется она DevOps. Что это значит?
Еще в начале 2000-х было принято четко разграничивать специальности, связанные с разработкой и эксплуатацией ПО. То есть были программисты, создававшие софт, и системные администраторы, которые отвечали за то, чтобы этот софт корректно работал на серверах.
По мере того как начали внедряться гибкие технологии разработки (Agile), от системных администраторов стала требоваться более активная обратная связь. Таким образом, стало развиваться более тесное сотрудничество Developer (разработчиков) и Operation (службы эксплуатации).
В 2005 году компания Yahoo! приобрела интернет-сообщество фотографов Flickr, и им понадобилось переместить данные и сервисы из Канады в США. Для этого нужно было разработать новое ПО.
По результатам этой операции был подготовлен доклад «10+ deploy per days: Dev and Ops cooperation at Flickr». В нем было описано, каким образом команде удалось выполнить поставленные задачи максимально быстро и качественно. Основой успеха стали совместные согласованные действия разработки и эксплуатации.
Этот доклад стал фундаментом новой философии — DevOps, которая быстро нашла много сторонников и последователей. Обоснование идеи раскрыто в книге «Философия DevOps» Дженнифер Дэвис и Кэтрин Дэниелс[16]. В ней говорится, что разработчики, зацикленные на пользователях, должны уделять больше внимания поддержке. Ведь кто лучше сисадминов может рассказать о проблемах продукта? В результате появилась отдельная профессия на стыке разработки и эксплуатации, которая носит название DevOps.
DevOps-специалист — это профессионал широкого профиля, который разбирается в принципах разработки и тестирования ПО и понимает, как конкретный код будет работать на «железе», виртуальных серверах или в облаке. Он может выступать в роли консультанта как в момент проектирования ПО, так и после внедрения. DevOps-специалисты «вырастают» либо из системных администраторов, либо из разработчиков (случается значительно реже).
В командах, где практикуется DevOps как подход, также есть так называемый релиз-инженер. Он не только работает с софтом, но и организует общение как внутри команды, так и между командами разработчиков, тестировщиков и сисадминов.
Возвращаясь же к системным администраторам, важно понимать, что они часто делятся на администраторов Linux и администраторов Windows. Первые, соответственно, работают с Linux-подобными операционными системами, а вторые — с виндой.
Глобальная разница между ними в том, что Linux исповедует концепцию открытого программного обеспечения. То есть исходный код этой операционной системы открыт и доступен для доработок. В то время как код винды — закрыт. У Linux есть отдельные дистрибутивы (условно можно назвать их версиями), которые также могут дорабатываться. Вот пара примеров: Debian, Ubuntu.
Кроме того, у сисадминов стоит спрашивать, с физическими или с виртуальными серверами они работали. Если они занимались поддержкой парка компьютеров, то можно спросить, насколько большим был этот парк.
И наконец, администраторы вообще могут больше заниматься сетями. Например, различным сетевым оборудованием: роутерами, маршрутизаторами, коммутаторами. Тогда нужно обращать внимание на то, с какими технологиями и устройствами работал человек.
Глава 13
Разработчики и администраторы баз данных
В рамках трехзвенной архитектуры ПО одно из звеньев — базы данных. С ними имеют дело разработчики и администраторы. Важно понимать, что сами базы данных делятся на реляционные и нереляционные (NoSQL). Реляционные — это те, в которых фигурирует SQL. Примеры нереляционных — MongoDB, Cassandra.
Нереляционные базы данных обычно используются на более сложных и высоконагруженных проектах. Для управления базами данных существуют СУБД (системы управления базами данных). Так, например, одной из самых популярных СУБД является MS SQL Server. Это продукт Microsoft, а значит, он подходит для Windows. Из менее популярных СУБД можно также выделить MySQL, SQLite.
Сами базы данных могут разрабатываться на нескольких языках программирования, но вот основные:
● SQL;
● T-SQL (Transact-SQL) — это расширение самого SQL;
● PL/SQL (ПиЭльЭсКюЭль).
Если вы видите PL/SQL, значит, в качестве СУБД используется Oracle. И наоборот.
Важно понимать, что запросы к базам данных могут быть следующие:
● селекты — от SELECT, то есть выбрать какие-то данные;
● джоины — от JOIN, то есть объединить данные;
● хранимые процедуры («хранимки»), то есть сохраненные и как-то названные процедуры, которые мы можем не писать заново, а просто указать их название — и они автоматом сработают;
● триггеры — это частные случаи хранимых процедур. Они точно так же сохранены, но срабатывают самостоятельно. Всё как в психологии: какие-то алгоритмы нашего поведения заложены в нашей памяти и всплывают автоматически при возникновении каких-либо ситуаций.
Есть два типа специалистов, которые разрабатывают базы данных и управляют ими: соответственно разработчики и администраторы. В современных реалиях эти две позиции часто смешиваются. В идеале разработчики отвечают за создание, отладку и оптимизацию баз данных, а администраторы обеспечивают ее жизнедеятельность, внедряют обновления, отвечают за безопасность. По факту же, особенно в небольших компаниях, разработчики зачастую берут на себя функцию сопровождения базы данных или администраторы делают всё, вплоть до разработки