Стыдно признаться, что я и сам занимался подобными вещами. Но я был молод и глуп, а у вас сейчас есть шанс не наступить на те же грабли. Сегодня ожидается, что практически каждый профессиональный разработчик знает, как использовать систему управления версиями для загрузки и скачивания кода из репозитория, а также слияния изменений из нескольких источников. Управление версиями на самом базовом уровне позволяет вам вести историю изменений различных файлов в общем проекте создаваемого ПО. Это также позволяет нескольким разработчикам одновременно работать над одним и тем же кодом, не мешая друг другу.
Я не буду вдаваться в подробности, лишь подчеркну, что вы должны уметь пользоваться хотя бы одной системой управления версиями. А лучше всего будет, если вы разберетесь в принципах работы большинства основных концепций управления версиями. Я очень сомневаюсь, что в мире существуют профессиональные группы разработчиков, не использующие системы управления версиями.
Сборка и развертывание
Сегодня большинство проектов по разработке ПО используют ту или иную систему сборки[8]. Конечно, существуют команды, которые до сих пор занимаются задачами тестирования и развертывания программы вручную, но это скорее исключение. Давайте сначала разберемся, что такое «система сборки». Позвольте задать вопрос.
Представьте, что вы написали код и даже поместили его в систему управления версиями. Как понять, что он вообще работает? А то вдруг у вас получилось что-то абсолютно неработающее, способное парализовать работу не только команды, но и всего отдела.
Именно здесь в игру вступает система сборки. Как минимум она скомпилирует весь ваш код и убедится, что он не содержит ошибок. Как максимум она еще может запустить модульные или пользовательские тесты, проверить качество кода и предоставить отчет о текущем состоянии кодовой базы.
Система развертывания отвечает за развертывание кода либо в производственной среде, либо в какой-либо тестовой.
Вы не обязаны быть экспертом в этих технологиях, но стоит понимать хотя бы основы их функционирования. Часто фактические обязанности по созданию и поддержке систем сборки и развертывания ложатся на плечи сотрудников из быстрорастущей области под названием DevOps («девопсы»). Однако наличие девопсов не освобождает вас от необходимости понимания основных принципов этой области знания.
Тестирование
Раньше разработчикам не нужно было заморачиваться тестированием разрабатываемого ими ПО. Программисты просто писали код, а затем отправляли его тестировщикам. Тестировщики искали баги, а программисты потом устраняли найденные ошибки. Именно так раньше выглядел процесс тестирования.