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