Czytaj książkę: «Профессиональные компетенции разработки программного обеспечения»

Czcionka:

Введение

Программисты учатся на ошибках других программистов, а потом обучают новых программистов тем же ошибкам.

Я фанат разработки программного обеспечения…

У меня интересная работа технического лидера в компании, разрабатывающей программное обеспечение на заказ для зарубежных и отечественных клиентов.

За долгие годы путем обучения, проб, ошибок, дошел до уровня, когда мне доверяют начинать разработку проекта и доводить его с командой до продакшена.

Я поделюсь своими мыслями, знаниями и опытом в разработке программного обеспечения.

Почему…?

Я задумался, почему несмотря на множество людей с горящими глазами, изучающими или знающими какой-либо язык программирования, остается острая нехватка программистов (например, в нашей и других компаниях дают бонус за успешную рекомендацию кандидата)?

Почему, несмотря на большой объем информации в интернете, сложно понять, что требуется для того, чтобы тебя приняли на работу в компанию, разрабатывающую программное обеспечение?

Почему сейчас, когда компании лояльно относятся к сотрудникам (в нашей компании десяток человек работают удаленно), которые находятся за сотни километров в маленьких городках и успешно работают на ключевых позициях, остается кадровый голод?

Злосчастный круг

К сожалению, проблема студентов и молодых специалистов известна – компании не хотят рисковать и брать на работу людей без опыта, без нужных компетенций.

А без работы невозможно (а точнее очень трудно) получить необходимый опыт.

Злосчастный круг замыкается и его сложно разорвать.

Тебя интересуют информационные технологии?

Ты изучаешь язык программирования и уже пишешь (пусть и простые) программы?

Ты хочешь связать свою профессиональную жизнь с ИТ?

А может ты уже работаешь в ИТ, но тебе нужно значительно повысить свою квалификацию?

Ты сможешь получить концентрат знаний и опыта, тебе не придется блуждать в дебрях интернета и собирать все по крупицам. Ты сможешь за год усвоить и понять основное, что в ином случае достигается годами. Но не обещаю, что это будет легко.

Стремись к профессиональной цели!

Если тебя интересует программирование, информационные технологии и ты находишься в начале профессионального пути – стремись к своей цели!

Получи Чек лист по профессиональным компетенциям, требуемыми для разработки программного обеспечения.

Чек лист поможет оценить навыки, наметить векторы по развитию профессиональных компетенций разработчика программного обеспечения, которые значительно повысят ИТ квалификацию и помогут открыть дверь в компанию твоей мечты или получить повышение на текущей должности.

Определив свой текущий уровень, сформируй карьерный план и определи ближайшие и долгосрочные цели. Не трать на планирование много времени! План – это список намерений, но не более того.

Профессиональные компетенции разработки программного обеспечения помогут достичь поставленные цели при любой текущем уровне – для уровня курсанта, юниора или разработчика с опытом. Наибольший эффект получите на начальных уровнях, но разработчики среднего уровня, специализируясь на определенных технологиях и уделяя внимание отстающим компетенциям, могут достичь экспертного уровня.

Путь до юниора может занять много времени – от полугода до 2 лет, в зависимости от начального уровня и интенсивности подготовки. Нужно много изучать и практиковать, не менее 10 часов и нескольких дней в неделю (например, 2-3 дня в неделю по 2 часа вечером в будни и 4-6 часов в выходной теории и практики). Такой график сложно, но можно соблюдать по совместительству для учащегося, студента или занятого на основной работе. Естественно, у каждого человека своя скорость усвоения материала и получения практических навыков, кто-то достигнет цели ранее, а кому-то потребуется больше времени.

Звезд с неба не хватал

Может у тебя возникают сомнения, сможешь ли ты достичь своей профессиональной цели – начать работу в ИТ или повысить свою квалификацию?

Может ты думаешь, что многим все дается легко и просто? Вероятно, такие люди есть, но я не из их числа…

Знания мне даются непросто, свой опыт я набирал долго с "кровью и потом" – на работе, вечерами дома, а если меня посетит вдохновение, то иногда и ночью :)

Многие задают вопрос – есть ли польза в книгах, курсах и наставниках? Курсы, книги и учебные материалы, менторы – это ускорители, мотиваторы и тотализаторы, но все зависит от вас самих – вы должны изучать и практиковать!

Первый опыт я получил в школе, кодируя алгоритмы на микрокалькуляторе “Электроника МК-52”, программируя простые игры на микрокомпьютерах “БК-0010” и “ZX Spectrum” на языке Basic. Помимо этого, я провел много времени за компьютерными играми. В университете работал с системой управления базой данных dBase, создавая программу расчета полезных веществ в продуктах питания.

Моя первая работа на должности программист-инженер была в маленьком закрытом городке Казахстана в Курчатове в Институте Атомной Энергии в Национальном Ядерном центре. Курчатов расположен недалеко от ядерного полигона, на полигоне я видел огромные скрюченные, погнутые железобетонные столбы и “атомное” озеро – последствия наземных термоядерных испытаний. Первая реализованная мною база данных, ушедшая в продакшен – “Система учета радиоактивных материалов” для Международного агентства по атомной энергии. Ценным источником знаний по языку программирования С в 1996 году, являлась бумажная распечатка руководства “Язык программирования С” Брайана Кернигана и Денниса Ритчи, по ней я обучался с моим другом и коллегой Цай Евгением. Нашими наставниками по разработке были Инков Александр, Петренко Андрей (передаю им персональный привет!). Позже по документации и книгам изучали C++ и Delphi. В дальнейшем мы работали на С, C++ и Delphi в основном над созданием информационно-управляющих систем для эксперементальных стендов Ангара и EAGLE.

В 2006 году выиграл грант и в Омске в компании Luxoft прошел 4 месячный интенсивный курс по методикам разработки Rational Unified Process, языку программирования Java, Java EE технологиям и базе данных Oracle. После этого сменил специализацию с С++, Delphi на Java стек. Большинство ребят после курса также стали работать Java разработчиками. Переехал в кремневую долину Сибири – в Новосибирск. (Передаю всем знакомым и друзьям из Курчатова, Омска и Новосибирска пламенный привет!).

Начало карьеры может быть сложным, но вам должно нравиться программировать, чтобы получать удовольствие от ИТ учебы в настоящее время и в будущем от работы в ИТ! Чертовски приятно иметь работу, которая интересна и захватывает словно хобби! Иначе, возможно имеет смысл вам найти другое занятие по душе…

Естественно, каждый человек рано или поздно имеет тенденцию терять мотивацию. Практически каждый из нас нуждается периодически в “волшебном пенделе” ;) Рекомендую найти сообщество единомышленников среди изучающих ИТ и ментора из числа опытных разработчиков, которые могут оказать как моральную поддержку, так и дать практические подсказки, советы и помощь в освоении информационных технологий. Разработчики с опытом в свою очередь, оказывая помощь курсантам, могут избежать “выгорания” и прокачать свои навыки по управлению командой и проектом и вырасти до Лидера команды.

Через много лет я достиг своей цели – разработка программного обеспечения в классной ИТ компании в профессиональной команде!

А какова твоя цель?

Я знаю, что ничего не знаю

Оглядываясь назад, я начал обобщать и фиксировать свой опыт.

Теперь я понимаю, что могу указать более короткую дорогу к твоей профессиональной цели, передать свои знания и опыт – это моя новая цель!

Почему я точно знаю, какие знания и опыт требуется в ИТ?

Почему я смог выделить самое важное для юниоров из огромного количества информации?

Потому что я писал программы (Delphi, C, C++) и кодирую сейчас (Java, JavaScript, SQL) на нескольких языках программирования.

Потому что проектировал, программировал, тестировал, внедрял и поддерживал системы с различными технологиями:

REST Services, Web Services, Micro services, JSON, XML…

Для хранения данных использовал различные базы данных:

Oracle, MySQL, MariaDB, PostgreSQL, MongoDB, Cassandra, Redis…

Потому что мы используем самые современные средства разработки:

Jira, Redmine, GitLab, Git, Jenkins, TeamCity, IDEA, Eclipse и пр.

Потому что участвовал в десятке ИТ проектов для стартапов, электронной коммерции, банков, бизнеса в одиночку и в командах от 2 до 10 человек, продолжительностью от 3 месяцев до 3 лет, на роли рядового разработчика, ведущего разработчика или технического лидера.

Потому что у меня есть некоторый опыт фриланса и "домашние" ИТ проекты, на которых я изучаю незнакомые мне технологии.

Потому что я знаю и применяю современные методики разработки:

паттерны, рефакторинг, код ревью, юнит и интеграционное тестирование, основные методологии разработки: XP, Scrum.

Потому что помимо успешных проектов были и провалы, а на ошибках учатся.

Потому что имею несколько сертификатов по ИТ, значимые их них Sun Сertified Programmer for the Java 2 Platform (SCP) и Oracle PL/SQL Developer Certified Associate (OCA) – интересен факт, что Oracle проглотил солнце в 2009 году.

Потому что прочитал десятки книг и сотни статей по ИТ, часто буду ссылаться на внешние источники знаний, готов сам учиться у других и перенимать опыт.

Нужно бежать со всех ног, чтобы только оставаться на месте

Есть 2 "новости" для новичков в ИТ. Одна – хорошая, вторая – плохая:

• "Плохая новость" – уровень входа в ИТ за последнее десятилетие значительно вырос. Ранее в большинстве случаев требовалось знание одного языка программирования и навык кодирования. Сейчас ИТ компании даже к юниорам выдвигают ряд обязательных требований.

• "Хорошая новость" – некоторые ИТ специалисты по инерции игнорируют важные ИТ навыки. Вы же можете, начав с чистого листа, взять все самое лучшее в свой профессиональный арсенал.

Информационные технологии меняются с поразительной быстротой – чтобы оставаться профессионалом, нужно постоянно изучать, экспериментировать, использовать на практике.

Одного знания языка программирования недостаточно, чтобы вести командную разработку программного обеспечения. Нужны еще ряд профессиональных компетенций – знаний, методик, навыков владения инструментами, которые позволят сделать значимые огромные шаги в профессии разработчика ПО.

У меня эти шаги заняли годы, ты пройдешь их за год – но придется приложить большие усилия.

Не существует "золотой пилюли" для успеха. С 2016 года я прежде всего для себя фиксировал в Wiki конспект ИТ технологий, методологий, инструментов и ссылок на полезные ресурсы. С 2017 года на основе этих материалов, с добавлением практических заданий, постепенно формирую курс, который повысит ИТ квалификацию и поможет открыть дверь в компанию твоей мечты или получить повышение на текущей должности, повысить рейт. Неоднократно материалы курса обновлялись и дополняются в настоящее время. На основе содержания курса сформирована книга, которая указывает ключевые направления профессионального роста для информационно-технологических специальностей и показывает всю современную "кухню" процесса разработки. Материалы курса и книги прежде всего ориентированы на разработчиков ПО, но будут несомненно полезны для тестеров, менеджеров, ИТ администраторов, дизайнеров, владельцев ИТ продуктов – всех участников разработки программного обеспечения.

Готов ли ты приложить усилия, вместе с нами изучать информационные технологии, набор инструментов, методик и применять их на практике, чтобы технически "вырасти" и профессионально выделиться среди тысяч молодых ИТ специалистов?

Мне показалось, или кто-то ответил – "НЕТ"? Вы можете не верить мне, ведь я могу ошибаться. Но главное, чтобы вы поверили в себя…

Если твой ответ "ДА", то ты на верном пути.

Добро пожаловать в ИТ сообщество профессионалов!

Благодарности

Книга посвящается моим родителям.

Это страница адресована моим близким и родным, друзьям и коллегам, преподавателям и наставникам. Я хочу выразить слова благодарности многим людям.

Благодарю своих родителей: Черемнова Николая Георгиевича и Валентину Федоровну, которые воспитали и поддерживали меня.

С уважением и любовью к старшим: дяде Боре Марченко и тете Саше в Актобе, теще Григорьевой Татьяне Дмитриевне, тете Люде в Семее, дяде Саше Бондарчук и тете Тане в Тюмене, дяде Андрею Альберт и тете Нелли в Германии, дяде Виктору и тете Оле в Канаде, и многим другим. Вы далеки, но я часто о вас вспоминаю.

С горячим приветом к сестре Ирине и ее мужу Олегу Пенкиным, троюродным братьям и сестрам (и их половинкам): Танк Вовчику в Германии, Султанову Тофику, Лейле в Семее, Бондарчук Денису, Наташе и Ирине в Тюмене, Залесову Евгению в Москве, сестре жены Лене и ее брату Григорьеву Денису, и всем другим. Спасибо, что принимаете меня таким, какой я есть.

С юношеским приветом к племянницам Шенделевой Саше и ее мужу Никите, Деревянко Вике и ее мужу Артему, и всей молодежи и детворе. С вами я чувствую себя молодым :)

Благодарю своих школьных и университетских учителей и товарищей. Не забыть школьные события с друзьями: Жуковым Игорем, Лисовцовым Александром, Шацким Аркадием и Ябсом Владимиром.

Спасибо моим друзьям, товарищам и преподавателям со времен университета. Персональная благодарность Цай Евгению, за 15 незабываемых лет юности в универе, множеству приключений и совместной работе в Курчатове. Благодарю Сайдашева Тахира за практичный драйв и за попытку воплощения амбициозного проекта. Я до сих пор с ними на связи.

Большое спасибо моим наставникам и руководителям по работе в Курчатове в Национальном Ядерном центре: Инкову Александру, Петренко Андрею, Дзалбо Виктору за опыт и поддержку. Передаю привет бывшим коллегам: Кривцову Павлу, Щербаку Игорю, Кошненко Игорю, Коровикову Александру, Ольховику Дмитрию и другим.

Моя благодарность всем коллегам в компании Азофт – я приобрел бесценный опыт, многому научился у вас и надеюсь, чему-то научил вас. Особая благодарность: Ожиганову Ивану за поддержку и воплощение моих идей, Лихачеву Олегу – за доверие сотрудникам и делегирование полномочий.

Благодарен своим друзьям в Бердске, со времен проживания и работы в Курчатове: Клименко Алексею за аналитический взгляд, но принятие моих безумных идей, Ястребкову Дмитрию – за здоровую критику идей, но поддержку, Пасько Александру – за критичный и осмысленный взгляд на жизнь. Отдельный привет их лучшим половинкам: Тане, Наташе и Гуле.

Отдельная благодарность Шенделевой Александре за дизайн, который она готовит по моим просьбам, в частности за обложку ИТ книги.

Прошу не огорчаться тем, кто не встретил на странице упоминания о себе – я о вас не забыл и благодарен вам…

Особая благодарность моей семье, любимым: жене Олесе и сыну Ивану, которые рядом со мной и которые помогали мне в подготовке книги.

Профессиональные компетенции разработки программного обеспечения

Лучше научите людей, рискуя, что они уйдут, чем не делайте ничего, рискуя, что они останутся.

Факты

• Каждая профессиональная компетенция разработки программного обеспечения повышает квалификацию ИТ специалиста.

• Даже одна компетенция может повысить эффективность разработки ПО.

• Комплексное применение компетенций многократно усиливает продуктивность работы и качество ПО.

• Без ряда компетенций командная, удаленная разработка невозможна.

• Компетентная команда ИТ специалистов – залог успешного проекта.

Цель

• Познакомиться с профессиональными компетенциями разработки программного обеспечения.

• Получить рекомендации по формированию компетенций.

• Изучить дополнительные материалы и документацию для повышения квалификации.

• Ознакомиться с инструментами, используемыми в разработке программного обеспечения и получить базовые навыки по работе с ними.

• Подготовить резюме, пройти собеседование и получить работу в ИТ компании или получить повышение по должности на текущей работе.

Проект и задачи

Цель и содержание проекта

Самая большая проблема с программистами в том, что ты никогда не сможешь понять, чем он занимается, пока не будет слишком поздно.

Описание

Каждый проект имеет набор документации. Есть документы, которые формируются иногда задолго до начала реализации, ряд других формируют по мере работы над проектом. Некоторые документы модифицируются со временем, иные становятся неактуальными. Одними из первых документов являются Цель и содержание проекта (часто они включаются в техническое задание в качестве раздела).

Цель и содержание проекта – это краткое описание, которое дает общее представление о назначении проекта и конечного планируемого результата разработки.

Цель проекта описывает какие задачи должны быть решены в результате проекта, а содержание проекта – что именно является результатом проекта.

Описание цели и содержания проекта (Project Scope) на примере проекта "Универсальная модульная платформа", в реализации которого принимают участие некоторые "выпускники" курса.

Проект "Универсальная модульная платформа"

Цель проекта

Много проектов имеют схожую многомодульную структуру, до 25% общего функционала.

Если выделить часто используемый общий функционал в модули, подключаемые по необходимости в разные проекты, то можно решить следующие задачи:

• быстрый старт разработки проекта на базе платформы;

• получение востребованного опыта и навыков разработки участниками;

• легкое вхождение участников команды разработки в однотипный проект;

• эффективное участие юниоров в разработке однотипных проектов;

• упрощение разработки и поддержки однотипных проектов;

• улучшение качества за счет многократного тестирования общего кода на разных проектах;

• уменьшение периода разработки за счет подключаемых модулей;

• финансовая экономия.

Описание проекта – Project Scope

Описание проекта – многомодульной платформы, предоставляющей базовый функционал наиболее часто востребованных нефункциональных и функциональных требований. Модули данной платформы могут быть подключены по необходимости для реализации систем различных назначений, реализующих конкретные бизнес требования:

• система заказов услуг или продуктов;

• система бронирования и продажи билетов;

• система логистики;

• e-commerce система;

• информационная система и прочие.

Можно выделить основные компоненты систем:

• SQL база данных;

• Backend с бизнес логикой;

• приложение администратора;

• REST (JSON) API сервер;

• Frontend с веб интерфейсом;

• мобильные приложения.

Список наиболее востребованных нефункциональных и функциональных требований:

• аутентификация и авторизация;

• логирование;

• уровень доступа к SQL базе данных;

• планировщики для запуска периодических процессов;

• инфраструктура и настройка REST контроллеров;

• создание, редактирование и просмотр администраторов и пользователей системы;

• загрузка в систему и скачивание из системы файлов (фото, документов и т.п.).

Нужно отметить, что платформа предъявляет более строгие требования к проектированию, реализации, тестированию системы. Важно соблюдать баланс между минимальностью и достаточностью платформы, с учетом использования в разных приложениях.

Открытыми для обсуждения с участниками проекта остаются аспекты:

• масштабируемость платформы – должна ли система, построенная на платформе легко масштабироваться при необходимости;

• мультиарендность платформы (multitenancy) – должна ли архитектура поддерживать множество арендаторов-владельцев.

Данные аспекты являются интересными, но повышают сложность и увеличивают время разработки. Для MVP (minimum viable product – минимально жизнеспособный продукт) данными аспектами можно пренебречь. Но часто заказчики программного обеспечения планируют маштабируемость системы. Мультиарендная платформа используется обычно в программном обеспечении как услуге (software as a service – SaaS).

Техническое задание или Спецификация

Specification

Ходить по воде и разрабатывать ПО из спецификации легко. Просто нужно заморозить и то, и другое.

Описание

До разработки требуется определить требования и набор функциональности, которое необходимо реализовать в программном обеспечении, для этого предварительно проводится анализ бизнеса, идей и "хотелок" заказчика.

Аналитики изучают бизнес требования и формируют Техническое задание (ТЗ) или Спецификацию, с участием дизайнеров, которое включает:

• функциональные требования – описание основной и дополнительной функциональности, которое требуется реализовать в программном обеспечении;

• не функциональные требования – требования к среде исполнения, производительности, защищенности, наличия мониторинга, логирования и т.п.

• мокапы – схематическое изображение экранов или страниц с графическими элементами представления (надписи, таблицы и т.п.), ввода (поля и окна ввода, таблицы и т.п.) и управления (кнопки, радио кнопки, чек-боксы и т.п.), со схемой переходов между экранами;

• дизайн – графическое представление страниц и экранов программного обеспечения может дополнительно прилагаться к ТЗ (либо создаваться дизайнерами позже).

На базе Технического задания проводится предварительная оценка проекта: оценивается время реализации каждого требования, суммарное время, с учетом времени аналитики, дизайна, менеджмента, тестирования, поставки и рисков.

С учетом как функциональных, так и не функциональных требований формируется архитектура проекта, проводится выбор технологий, инструментов разработки, баз данных и пр., определяется требуемый состав и число ИТ специалистов.

В классическом процессе разработки ТЗ или Спецификация для программиста является исходным документом, используемым в процессе разработки.

На основе Технического задания (или Спецификации) формируется список задач программистам для реализации.

Пользовательские истории

User stories

Без требований программирование – это искусство добавлять баги в пустой файл.

Описание

В "гибких" методологиях (позже ты изучишь их подробнее), заменой Технического задания, Спецификации (или его дополнением) являются Пользовательские истории (User stories).

User story – фиксация требования, функциональности посредством краткого описания и ряда атрибутов:

• ID – уникальный идентификатор (в системе ведения проекта ID генерируется автоматически).

• Название – краткое описание истории. Например, “Просмотр журнала своих транзакций”.

• Важность (Importance) – степень важности данной задачи, по мнению заказчика. Например,

10 или 150. Другой вариант параметра – приоритет, например, P1, P2, P3.

• Предварительная оценка (initial estimate) – начальная оценка объема работ, необходимого для реализации истории по сравнению с другими историями.

• Как продемонстрировать (how to demo) – краткое пояснение того, как завершённая задача будет продемонстрирована.

• Примечания – любая другая информация: пояснения, ссылки на дополнительные источники информации, и т.д.

Часто User story дополнительно разделяется на отдельные задачи. В таком случае реализация каждой истории требует выполнения одной или нескольких задач.

Управление проектом и задачами

Чтобы руководить программистами, нужен Д. Кнут и пряник.

Описание

ИТ-проекты проходят через 5 основных фаз жизненного цикла:

• инициация;

• планирование;

• выполнение;

• мониторинг и контроль;

• завершение.

В начале жизненного цикла проекта проводится аналитика, формирование требований для программного обеспечения (в документах Техническое задание или Спецификация, или Пользовательские истории).

Далее следуют: планирование работ по проекту, формирование списка задач, их распределение, контроль над выполнением, тестированием задач, сборка и поставка ПО, анализ метрик по проведенной работе – все фазы, это неотъемлемая часть процесса разработки ПО.

Каким образом можно координировать, согласовывать и отслеживать проводимую работу? Для этого предназначены системы управления проектами и задачами, с разной функциональностью и возможностями.

Использование системы управления задачами – это не дань моде, а конкурентная необходимость, инструмент координации и эффективности работ, один из гарантов успешной реализации проекта.

Реальный отзыв команды, которая начала использовать современную систему управления проектами и задачами:

"Только при создании нового сайта мы смогли сократить срок разработки в 1,5 раза".

Для вас, как для разработчика, работа над задачей в общем случае выглядит следующим образом (реальный процесс может несколько отличаться):

Менеджером проекта вам назначается тикет (Issue), где описано, какую функциональность надо добавить или какую ошибку надо исправить.

Основные этапы выполнения задачи (тикета):

• Анализ задачи – вы знакомитесь с задачей, с документами и анализируете требования, имеющие отношение к вашей задаче. Если возникают вопросы по задаче, обсуждаете их с менеджером.

• Проектирование и оценка задачи – вы знакомитесь с кодом, который будет затронут в ходе кодирования. Обдумываете, как будете реализовывать задачу, какой паттерн программирования сможете использовать. Оцениваете задачу, а именно указываете количество времени, за которое планируете выполнить задачу, например: /estimate 1d 2h.

• Реализация задачи – рефакторинг (если требуется) текущего кода, написание нового кода, добавление юнит/интеграционных тестов. В ходе выполнения задачи или(и) после завершения задачи вы устанавливаете в задаче количество фактически затраченного времени, например: /spend 4h 30m.

• Деплоймент проекта – сборка проекта, установка в локальное рабочее окружение, ручное тестирование задачи.

• Контроль задачи – ревью кода, мерж кода в основную ветку разработки, проверка статуса сборки на сервере интеграции (проверка стилистики кода, качественных метрик кода, автоматических тестов).

В зависимости от системы управления и установленного процесса разработки задаче на каждом этапе устанавливаются различные статусы.

Следование процессу разработки значительно повышает эффективность работ, обеспечивает и поддерживает качество программного продукта, допускает взаимозаменяемость между членами команды, позволяет планировать и прогнозировать сроки выполнения итерации (этапа работ).

К процессу разработки ПО неоднократно будем возвращаться при описании последующих компетенций.

Инструменты

Десятки систем управления проектами и задачами, с разной функциональностью и разной доступностью:

Jira, Redmine, Asana, Basecamp, Trello, Wrike, GitLab и др.

Рекомендации

В случае, если вы самостоятельно разрабатываете проект, может показаться, что система управления не нужна.

Это заблуждение – в таком случае вы сами выполняете роль менеджера проекта

и принимаете решения, что делать и какую функциональность включить в разработку.

Система управления проектами позволит проводить планируемую работу:

• Записывайте задачи, которые требуется решить в ходе работ над проектом.

• Записывайте функциональность, которую планируете реализовать.

• Фиксируйте сразу обнаруженные ошибки в ПО, чтобы позже не забыть их исправить.

Навыки применения системы управления задачами пригодятся вам, когда будете участвовать в командных разработках.

Советую для изучения и практического применения Open Source системы управления проектами и задачами (с потенциальной возможностью установки на собственный сервер):

Redmine – функциональна, гибко настраивается, имеется возможность подключения плагинов с дополнительной функциональностью.

GitLab – содержит базовые функции управления проектами и задачами.

Помимо этого, в ИТ компаниях часто используют мощную (и дорогую) коммерческую систему:

Jira

Дополнительные материалы

Сравнительная статья о системах управления проектами:

43 полезных сервиса для управления проектами. Без эпитетов

Резюме

Вы должны понимать и уметь рассказать о назначении систем управления проектами и задачами.

Необходимо иметь практические навыки работы хотя бы с одной из систем.

В результате добавится новая строчка в вашем резюме, например:

Project management: GitLab

Darmowy fragment się skończył.