[Перевод] Инструменты, которые пригодятся программисту. Часть 1
Есть программисты, которые занимаются проектами организаций, в которых работают, есть программисты, у которых свой бизнес. Независимо от того, чем именно они занимаются, в их деле очень важен правильный подбор инструментов.
GitHub — это система управления версиями кода и платформа для управления проектами. Это — нечто вроде социальной сети для программистов.
BitBucket — это решение для управления Git-репозиториями и для организации совместной работы над кодом.
Jira — это платформа для управления разработкой программного обеспечения от Atlassian. В состав этой платформы входит мощный трекер задач, помогающий командам программистов управлять своей работой, связанной с созданием программ, планировать работу, готовить отчёты.
Trello — это визуальный инструмент для организации командной работы над проектами. Он позволяет очень быстро узнавать, например, такие сведения о проектах, как процент их завершения, состояние отдельных задач, распределение задач между исполнителями.
IntelliJ IDEA — это интегрированная среда разработки (IDE, Integrated Development Environment), которую создала и поддерживает компания JetBrains. Эта IDE предназначена, в основном, для тех, кто пишет код для JVM. Она, безусловно, находится в верхней части списка лучших инструментов для разработчиков. Всё дело в её обширных возможностях и во множестве полезных механизмов для работы с кодом, доступных тем, кто ей пользуется.
Visual Studio — это многогранная и мощная IDE от Microsoft. Она представляет собой коллекцию различных инструментов, которые нацелены на облегчение разработки широкого спектра приложений. В том числе — веб-сайтов, обычных приложений, облачных приложений, веб-приложений, веб-сервисов, мобильных приложений и так далее. Многие разработчики считают эту IDE одним из лучших инструментов для веб-разработки, так как в ней имеется всё, что должно присутствовать в редакторе кода, и, кроме того, есть кое-какие дополнительные полезные возможности.
Jenkins — это автоматизированный CI/CD-инструмент, который подходит для проектов, написанных на любых языках и поддерживает работу с любым количеством репозиториев.
Figma — это облачный инструмент для дизайнеров, поддерживающий возможности совместной работы над проектами в реальном времени. Он даёт всё необходимое для организации работ по дизайну интерфейсов. В частности, это касается инструментов для работы с векторной графикой и обычными изображениями, средств для генерирования кода и прототипирования.
TestRail — это мощная веб-платформа для управления тестами, которой пользуется множество тестировщиков, разработчиков и других специалистов, которых интересует организация тестов, управление ими и оценка их результатов.
Инструменты разработки подбирают под нужды конкретного проекта. Нет такого инструмента, который можно было бы назвать универсальным и необходимым абсолютно всем программистам. Поэтому тут были рассмотрены основные сильные и слабые стороны различных инструментов. Хочется надеяться, что то, о чём мы тут говорили, поможет вам в подборе подходящего инструментария для вашего проекта.
Мир инструментов, используемых при разработке программного обеспечения, постоянно меняется. В нём царит острая конкуренция. Поэтому сложно выбрать именно то, что лучше всего подойдёт для некоего проекта.
В этом материале мы рассмотрим некоторые из лучших инструментов, которые пригодятся программисту.
GitHub
GitHub — это система управления версиями кода и платформа для управления проектами. Это — нечто вроде социальной сети для программистов.
▍Основные возможности
- Это — платформа для работы над кодом, она позволяет собирать, тестировать, отлаживать и развёртывать проекты.
- Можно связывать запросы на включение изменений (pull request, PR) и задачи (issue), что помогает наблюдать за развитием проектов.
- Можно организовывать совместную работу над кодом и код-ревью в общедоступных и приватных репозиториях.
▍Сильные стороны
- Даёт программистам быстрые и простые механизмы для разработки проектов с записью истории изменений этих проектов. При необходимости можно откатиться к предыдущим вариантам кода.
- Обеспечивает удобную совместную работу над проектами, позволяя объединять в одном репозитории результаты труда многих программистов.
- Даёт, за счёт наличия системы отслеживания изменений, сведения о том, кто именно написал тот или иной фрагмент кода, входящий в проект.
▍Слабые стороны
- Достаточно сложно разрешать конфликты слияния, возникающие в ситуации, когда разные разработчики меняют один и тот же код.
- Нужно быть очень осторожным при слиянии веток репозитория, так как последствия неудачного слияния может быть не так уж и просто отменить.
- Сложно переносить репозитории с GitHub на другие подобные платформы
BitBucket
BitBucket — это решение для управления Git-репозиториями и для организации совместной работы над кодом.
▍Основные возможности
- Контроль доступа к коду.
- Встроенная система комментирования кода PR, обеспечивающая возможности выполнения код-ревью.
- Сервисы для хранения файлов, поддержка Wiki, трекер задач, средства интеграции с другими системами, поддержка подключаемых модулей.
▍Сильные стороны
- Интеграция с Jira, что позволяет организовать продуктивную командную работу над кодом.
- Неограниченное количество общедоступных и приватных репозиториев.
- Быстрые и мощные поисковые механизмы.
- Простая и удобная интеграция с Trello.
▍Слабые стороны
- BitBucket, в сравнении с GitHub, пользуется меньше разработчиков.
- Грубоватый пользовательский интерфейс для работы с кодом.
- Отсутствие упрощённых инструментов для управления PR, которые есть в конкурирующих платформах.
Jira
Jira — это платформа для управления разработкой программного обеспечения от Atlassian. В состав этой платформы входит мощный трекер задач, помогающий командам программистов управлять своей работой, связанной с созданием программ, планировать работу, готовить отчёты.
▍Основные возможности
- Существует несколько разновидностей Jira, выбор конкретной разновидности платформы зависит от сценария её использования. В частности, речь идёт о Jira Software, о Jira Core и о Jira Service Desk.
- Поддержка методологии Agile — от бэклога проекта до спринтов.
- Возможность оценки времени, необходимого для решения некоей задачи.
- Возможность загрузки информации из платформ, использующихся для контроля версий кода.
- Поддержка отчётов и различных диаграмм. Например — это диаграммы сгорания задач и круговые диаграммы.
▍Сильные стороны
- Автоматизация различных задач и процессов.
- Простой и удобный трекер задач.
- Полностью настраиваемые панели управления для Scrum и Kanban.
- Система расширений, позволяющая организовать взаимодействие со сторонними приложениями. Например — с Outlook для работы с электронной почтой.
▍Слабые стороны
- Сложный процесс интеграции с другими системами управления жизненным циклом приложения и сложный процесс перехода с таких систем на Jira.
- Ограничения, касающиеся размеров выгружаемых файлов.
- Невозможность загрузки графических отчётов в виде изображений.
Trello
Trello — это визуальный инструмент для организации командной работы над проектами. Он позволяет очень быстро узнавать, например, такие сведения о проектах, как процент их завершения, состояние отдельных задач, распределение задач между исполнителями.
▍Основные возможности
- Использование системы карточек, позволяющей удобно просматривать общие сведения и подробности о задачах.
- Поддержка прикрепления файлов к карточкам задач.
- Наличие системы показа уведомлений.
- Отправка уведомлений по электронной почте.
- Возможность работы с отдельными задачами и с группами задач.
- Поддержка совместной работы.
▍Сильные стороны
- Простой графический интерфейс, элементы которого поддерживают перетаскивание мышью.
- Поддержка работы с файлами, хранящимися в локальной файловой системе и в облачных хранилищах вроде Dropbox и Google Drive.
- Удобная организация задач с использованием тегов, меток и комментариев.
- Понятная ценовая политика.
▍Слабые стороны
- Небольшой объём хранилища данных.
- Отсутствие интеграции с календарём.
- Отсутствие инструментов (наподобие диаграмм Ганта) для визуализации хода работы над проектом.
- Тяжёлая ручная настройка.
IntelliJ IDEA
IntelliJ IDEA — это интегрированная среда разработки (IDE, Integrated Development Environment), которую создала и поддерживает компания JetBrains. Эта IDE предназначена, в основном, для тех, кто пишет код для JVM. Она, безусловно, находится в верхней части списка лучших инструментов для разработчиков. Всё дело в её обширных возможностях и во множестве полезных механизмов для работы с кодом, доступных тем, кто ей пользуется.
▍Основные возможности
- Поддержка нескольких языков.
- Интегрированная система управления версиями.
- Продвинутая система автодополнения ввода и автодополнения цепочек вызовов.
- Интеллектуальный редактор кода, поддерживающий HTML, CSS, Java.
- Инструменты для развёртывания и отладки кода, рассчитанные на большинство существующих серверов приложений.
▍Сильные стороны
- Средства для запуска тестов.
- Анализ покрытия кода тестами.
- Межъязыковой рефакторинг кода.
- Множество плагинов.
▍Слабые стороны
- Для того чтобы как следует освоить эту IDE — нужно немало времени.
- Эта IDE занимает много места на диске после установки и медленно запускается.
- Подписка на наиболее полную версию IntelliJ IDEA стоит $500 в год, а это — дороже, чем конкурирующие решения.
Visual Studio
Visual Studio — это многогранная и мощная IDE от Microsoft. Она представляет собой коллекцию различных инструментов, которые нацелены на облегчение разработки широкого спектра приложений. В том числе — веб-сайтов, обычных приложений, облачных приложений, веб-приложений, веб-сервисов, мобильных приложений и так далее. Многие разработчики считают эту IDE одним из лучших инструментов для веб-разработки, так как в ней имеется всё, что должно присутствовать в редакторе кода, и, кроме того, есть кое-какие дополнительные полезные возможности.
▍Основные возможности
- Поддержка множества языков, технологий и фреймворков.
- Интеграция с системами контроля версий.
- Возможность структурирования и организации больших программных проектов.
- Богатый набор инструментов, нацеленных на проектирование интерфейсов.
- Отличная поддержка совместной работы над проектом, в том числе — совместной отладки кода и его совместного редактирования.
▍Сильные стороны
- Наличие инструментов для тестирования кода. Поддерживается тестирование производительности, автоматическое и ручное тестирование.
- Отличная интеграция с Azure.
- Высокая вероятность получения помощи от членов сообщества, сформировавшегося вокруг Visual Studio.
▍Слабые стороны
- Использует много системных ресурсов.
- Лицензия стоит достаточно дорого.
- Для того чтобы научиться продуктивно работать в этой IDE — понадобится вложить немало времени в её изучение.
- Иногда может медленно работать.
Jenkins
Jenkins — это автоматизированный CI/CD-инструмент, который подходит для проектов, написанных на любых языках и поддерживает работу с любым количеством репозиториев.
▍Основные возможности
- Это — самодостаточная платформонезависимая программа, написанная на Java, которая может работать на различных популярных операционных системах.
- Имеется множество плагинов, позволяющих интегрировать в CI/CD-цепочку различные дополнительные инструменты.
- Поддерживает распределённую схему работы, что позволяет ускорить сборку, тестирование и развёртывание проектов.
- Вокруг Jenkins сложилось обширное сообщество разработчиков.
▍Сильные стороны
- Гибкость, которая заключается в возможности использования конвейеров заданий или Freestyle-заданий.
- Поддержка работы в кластерах, что позволяет увеличить скорость обработки проектов.
▍Слабые стороны
- Настройка Jenkins может оказаться непростым делом.
- Это — не облачная система.
- Отсутствие сквозной аналитики, охватывающий полный цикл развёртывания проектов.
Figma
Figma — это облачный инструмент для дизайнеров, поддерживающий возможности совместной работы над проектами в реальном времени. Он даёт всё необходимое для организации работ по дизайну интерфейсов. В частности, это касается инструментов для работы с векторной графикой и обычными изображениями, средств для генерирования кода и прототипирования.
▍Основные возможности
- Весьма современный инструмент Pen (Перо), позволяющий самостоятельно рисовать различные кривые.
- Автоматизация повторяющихся действий посредством плагинов.
- Поддержка автоматической настройки расстояния между элементами и их автоматического размещения на странице.
- Поддержка библиотек, реализующих возможности перемещения элементов страниц мышью.
- Интеллектуальные анимации, применимые к объектам и переходам.
- Поддержка комментариев.
▍Сильные стороны
- Удобный экспорт материалов, получить доступ к которым можно по ссылке.
- Единая платформа, возможности которой охватывают все нужды дизайнера — от проектирования интерфейса до создания прототипа.
- Общие рабочие пространства, позволяющие организовать совместную работу членов команд в реальном времени.
- Быстрые и простые механизмы, помогающие делиться файлами.
▍Слабые стороны
- Нет возможности анализа истории изменений проекта.
- Нет глобальных цветовых настроек.
- Не поддерживается поиск в пределах локальных компонентов.
TestRail
TestRail — это мощная веб-платформа для управления тестами, которой пользуется множество тестировщиков, разработчиков и других специалистов, которых интересует организация тестов, управление ими и оценка их результатов.
Эта платформа основана на концепции централизованного управления тестами, что облегчает взаимодействие и ускоряет работу тех, кто занимается тестами. В частности — членов QA-команд.
▍Основные возможности
- Управление тестовыми случаями, планами тестов и наборами тестов.
- Запись результатов выполнения тестов.
- Поддержка отправки отчётов о тестировании в Jira с привязкой к задачам Jira.
▍Сильные стороны
- Наличие большого набора инструментов для тестирования кода и средств для интеграции с другими сервисами.
- Простой и понятный интерфейс, ускоряющий работу с программой.
- Использование трекеров задач, вроде FogBugz, в которые вносятся сведения об обнаруженных ошибках или проблемах, полученные после анализа тестовых случаев.
- Автоматический запуск тестовых случаев любой сложности.
- Поддержка сложных сценариев тестирования.
▍Слабые стороны
- Сложно поддерживать синхронизацию между автоматическими и ручными тестами.
- Нужно проектировать и создавать тесты, запускаемые вручную.
Итоги
Инструменты разработки подбирают под нужды конкретного проекта. Нет такого инструмента, который можно было бы назвать универсальным и необходимым абсолютно всем программистам. Поэтому тут были рассмотрены основные сильные и слабые стороны различных инструментов. Хочется надеяться, что то, о чём мы тут говорили, поможет вам в подборе подходящего инструментария для вашего проекта.
Какими инструментами, облегчающими разработку программ, вы пользуетесь?