Статьи

Каковы рабочие процессы известных членов сообщества PHP?

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

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

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

Щебетать | Linkedin | GitHub

Тейлор Отвелл, создатель Laravel

  • В настоящее время Blackfire.io — мой любимый инструмент для профилирования PHP-приложений. Он предоставляет простой в использовании интерфейс и быстрый подход к выявлению проблемных частей приложения.

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

Тейлор также подробно обсудил свой рабочий процесс в этом Hashnode AMA — посмотрите его, чтобы узнать подробности.

Щебетать | Linkedin | GitHub

Фил Стерджен, инженер-программист в WeWork

  • Vagrant и Docker помогают сохранять проекты изолированными, поэтому большую часть времени я использую их, если зависимости достаточно сложны, чтобы это оправдать.

  • В настоящее время я работаю в основном над API , поэтому большую часть времени просто снимаю Git- репозиторий, устанавливаю composer , php -S

Щебетать | Linkedin | GitHub

Stefan Priebsch, ИТ-консультант в thePHP.cc

  • Я обычно работаю с PHPStorm , PHPUnit , phpab , PHP_Depend и PHP CodeSniffer .

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

  • Конечно, я использую Git для контроля версий и Jenkins для непрерывной интеграции, хотя обычно я не настраиваю CI-сервер для своих частных проектов.

Щебетать | Linkedin | GitHub

Николас Грекас, технический директор Blackfire.io

  • Что касается аппаратного обеспечения, я использую хороший ноутбук Fujitsu с двумя дополнительными экранами (это три экрана для моего ноутбука, но я в основном использую два из них).

  • Со стороны программного обеспечения я использую Ubuntu , Git , vim , терминал и браузер.

  • Я также иногда использую qgit , пишу в Sublime Text и имею виртуальную машину Windows для устранения проблем (да, Blackfire работает и в Windows!) Или для включения PowerPoint.

  • Возможно, я ошибаюсь, но я склонен думать, что самая медленная часть моего опыта разработки — это мой мозг, поэтому я не чувствую необходимости в причудливой IDE.

  • Docker Compose для загрузки стека Blackfire локально, а совсем недавно — публичного релиза SensioCloud , чтобы сократить настройку инфраструктуры до простого туннелирования портов.

  • Что касается управления проектами / качеством, мы используем Github , Splitsh , Jenkins , Appveyor , Zendesk , Jira , Slack и некоторых других.

Щебетать | Linkedin | GitHub

Адам Уотан, предприниматель и автор программного обеспечения

Вот некоторые из моих любимых:

  • 27 ″ 5K iMac за 99% моей работы

  • 13 ″ Retina MacBook Pro, когда мне нужно работать на ходу

  • Sublime Text 3 для всех разработок

  • Sequel Pro для работы с базами данных MySQL

  • авиапочта 3 для электронной почты

  • Todoist, чтобы следить за тем, что мне нужно сделать

  • iTerm 3 с ZSH в качестве моего терминала

  • Github для всего моего хостинга репозитория

  • Laravel Forge для предоставления серверов

  • Посланник для развертываний с нулевым временем простоя

Щебетать | Linkedin | GitHub

Мануэль Лемос, основатель Icontem и phpclasses.org

С 2006 года я стандартизировал разработку своего PHP-проекта с помощью Use Case Mapping:

  • Каждый мой проект разделен на подсистемы, такие как: система блогов, система форумов, система массовой рассылки, система социальных сетей, система геймификации и т. Д.

  • Каждая подсистема состоит из классов Use Case (User Story), которые действуют как контроллеры . Они обрабатывают HTTP-запросы или другие виды ввода, вызывают классы Service для выполнения таких действий, как доступ к базе данных или удаленной системе.

  • Для доступа к базе данных я использую инструмент генерации кода ORM под названием Metastorage, который разрабатывал с 2002 года. Он берет определение отношения объекта из файла XML и генерирует код для классов PHP для доступа к данным объектов каждого класса.

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

В настоящее время Metastorage генерирует 50% кода моего PHP-проекта. Это означает, что это сделало меня намного более продуктивным, меньше работало для достижения большего и использовало более надежный код, так как Metastorage генерирует код с проверкой типов.

Щебетать | GitHub

Джош Локхарт, основатель Slim Framework и PHP «Правильный путь»

  • Я использую Vagrant для управления уникальной виртуальной машиной Ubuntu для каждого проекта.

  • Я предоставляю каждой виртуальной машине и моим рабочим серверам одинаковые роли Ansible, чтобы обе среды были абсолютно одинаковыми.

  • Я предпочитаю PHPStorm для написания кода.

  • Я использую Composer в 99,999% моих проектов.

  • Я пишу и запускаю тесты с PHPUnit .

  • Управление версиями осуществляется через GitLab , который, в свою очередь, запускает непрерывные тесты на CodeShip или Travis CI .

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

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

Щебетать | Linkedin | GitHub

Эрин О’Нил, спикер и консультант

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

  • Я использую Dell Developer Edition 13 ″ XPS с Ubuntu . (Версии Developer Edition поставляются с установленной Ubuntu, и Dell гарантирует поддержку драйверов. Я также полагаюсь на мою портативную подставку Roost и внешние клавиатуры и мыши.

  • Что касается программного обеспечения, я разрабатываю на Ubuntu в vim . У меня есть .vimrc и несколько плагинов, которые облегчают жизнь.

  • Я использую Vagrant для разделения своих локальных сред разработки. Scotch Box — это удивительный готовый опыт Vagrant, который помогает мне быстро начать работу над новыми проектами, где у меня нет доступа к среде разработки или существующей виртуальной машине.

  • Я управляю проектами с помощью Github Issues и их новой функции Projects (в основном платы в стиле Trello, интегрированные с вашим репозиторием GitHub). Для управления проектами более высокого уровня я использую Insightly, чтобы все было прямо.

Щебетать | Linkedin | GitHub

Кэл Эванс, работает кочевник PHP, elePHPant

Мой рабочий процесс для новых проектов обычно следует этой схеме.

  • Откройте Sublime Text и напишите 20-40 строк процедурного PHP, чтобы увидеть, работает ли идея.

  • Я проектирую базу данных, если база данных необходима. Не всем проектам нужна база данных. Даже если информация, такая как параметры конфигурации, должна сохраняться, во многих случаях достаточно простого файла конфигурации. Для проектирования базы данных я использую MySQL Workbench. Это был мой инструмент выбора в течение многих лет.

  • Пройдите рабочий процесс: если я разработал БД для проекта, то этот шаг в основном уже выполнен. Если нет, я иду через рабочий процесс. Иногда я разбираю это, иногда я просто начинаю составлять список объектов, которые, я думаю, мне понадобятся. Я обычно СУЩЕСТВУЮ слишком много дизайна и использую только около половины объектов, которые я перечисляю. Если это API , я перечисляю все конечные точки, которые мне понадобятся. Если это веб-сайт, я перечисляю страницы. В большинстве случаев это CLI- проект, и я начинаю с команд, которые мне понадобятся. Поскольку я использую symfony / command для всего, это делает его хорошей отправной точкой.

  • Построить одну команду

    • Соберите команду и заставьте ее работать.

    • Разбейте любые новые объекты, обнаруженные в процессе, на отдельные объекты

    • Написать модульные тесты для команды

    • Совершить репо

  • Слово о модульных тестах . Если это проект, которым я буду когда-либо пользоваться, нет, я обычно не пишу юнит-тесты. Если кто-то еще будет участвовать, да, я пишу их. Я обычно снимаю около 70% -80% покрытия кода.

  • Что касается репозиториев, да, почти КАЖДЫЙ проект, который я строю в эти дни, находится под контролем исходного кода. Опять же, мой рабочий процесс отличается, если это только я против работы с другими. Если это только я, я обычно буду работать в основной ветке, если это новый проект и новая ветвь, если это итерация в существующем проекте. Если со мной работают другие, я обычно использую ветки функций.

  • Повторяйте до тех пор, пока это не сработает: заметьте, я не сказал «пока это не сделано». Каждый проект, который я когда-либо строил, является незавершенным. Всегда есть вещи, которые я могу добавить, новые функции, новые опции, рефакторинг. Я спросил своего друга-художника: «Когда вы знаете, что это сделано?» Он ответил, что искусство никогда не заканчивается. Мой код не поднимается до уровня искусства, но я согласен с мнением.

    Так вот как я работаю. Мои незаменимые инструменты:

  • Композитор

  • PHPUnit

  • Гит

  • Возвышенный текст 3

  • MySQL Workbench

  • докер

  • Тонкая структура для API

  • WordPress для сайтов

  • Symfony / консоль для всего остального

Щебетать | Linkedin | GitHub

Кэт Зин, старший разработчик программного обеспечения в Brightpearl

Мой рабочий процесс разработки довольно стандартный.

  • Я использую вопросы Trello или github / gitlab для планирования. Я использую кучу редакторов в зависимости от того, над чем я работаю. Vim, если это Bash или просто быстро что-то редактировать.

  • PHPStorm for PHP, Gogland for Go — уже много лет с удовольствием пользуется семейством JetBrains .

  • Недавно я начал использовать VSCode от Microsoft для Go или скриптов bash , и пока мне это очень нравится.

  • Что касается техники, я пытаюсь сделать TDD, но я бы соврал, если бы сказал, что я всегда делаю это. Иногда, если я делаю что-то предварительное, я пропускаю тесты и просто погружаюсь в них, а потом беспокоюсь о рефакторинге и тестировании.

  • Мне действительно нравится мой тестируемый код, поэтому для более длинных проектов я настрою Jenkins или Travis CI, чтобы запускать тесты и покрытие кода для меня.

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

Мне нравится вносить свой код с помощью запросов извлечения, будь то личные проекты или на работе, поэтому мой рабочий процесс в значительной степени основан на этом. Создайте запрос, просмотрите его код, объедините, затем тесты запустятся и отправятся в наш конвейер непрерывной доставки. Если это не единый простой проект, то автоматизация настолько, насколько я могу, является ключевой! ?

Щебетать | Linkedin

Лаура Элизабет, создатель клиентского портала и Академии дизайна

Я дизайнер, а мой партнер разработчик (мы оба владельцы бизнеса), поэтому наши рабочие процессы очень совместны.

  • Мы планируем на бумаге и используем клуб для организации наших дел.

  • Мой партнер начнет кодировать основную структуру, в том числе заполнять контент, пока я прыгаю в Photoshop и начинаю макетировать некоторые визуальные эффекты.

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

  • Мы используем Atom для редактирования и BitBucket для разработки.

  • Для одного из наших приложений (http://rightmessage.io) мы используем Laravel ? другие являются простыми веб-сайтами или плагинами WordPress.

Вывод

Из приведенных выше списков некоторые идеи рабочего процесса очень ясны:

  • Linux является предпочтительной средой разработки. Разработчики используют Windows или другие ОС, но только для тестирования и проверки совместимости приложений.

  • Разработчики любят Docker и Vagrant для управления своими проектами.

  • Jenkins и Travis CI являются предлагаемыми инструментами для управления непрерывным развертыванием с GitHub и GitLab.

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

  • Выбор IDE и редакторов кода очень индивидуален и варьируется от простых текстовых редакторов до современных текстовых редакторов и до полнофункциональных IDE. Однако в случае IDE платная PHPstorm предпочтительнее бесплатных альтернатив, таких как Netbeans.

Каковы некоторые из ваших особенностей рабочего процесса? Вы нашли общий рабочий процесс с кем-либо из этих разработчиков? Дайте нам знать, какой подход использует ваш процесс разработки, и, возможно, мы предоставим вам окончательный список инструментов, о которых никто не слышал, но должен был иметь!