7 важных факторов PHP-приложения

chulakov_dev 7 важных факторов PHP-приложения

Инженеры платформы Heroku (https://www.heroku.com/) на основе собственного опыта создали методологию (https://12factor.net/ru/) для разработки SaaS-приложений.

Эта методология учитывает три важных аспекта:
— расширяемость — развитие кодовой базы и функционала;
— сопровождаемость и возможность командной работы над проектом;
— масштабируемость.

12 факторов приложения стали шаблоном для многих разработчиков и Ops-инженеров, а мы постарались адаптировать самые важные из них для приложений на PHP.

Кодовая база (https://12factor.net/ru/codebase). Забота о коде начинается с принципов его версионирования и хранения. Используйте Git Flow или его адаптацию с учетом специфики работы ваших команд.

Зависимости (https://12factor.net/ru/dependencies). Используйте менеджер зависимостей Composer (https://getcomposer.org/) и его основные операции install и update для манипуляций c composer.json (https://getcomposer.org/doc/04-schema.md) и composer.lock.

Конфигурация (https://12factor.net/ru/config). Предпочтительным методом обработки конфигурации является использование переменных среды. Для работы с ними мы применяем компонент symfony/dotenv (https://github.com/symfony/dotenv).

Параллелизм (https://12factor.net/ru/concurrency). Выполняйте процессы в фоне, тем самым снижая время отклика при взаимодействии с вашим сервисом. Выделяйте веб-процессы в реальном времени и рабочие процессы. Первые принимают http-запросы от клиента, а вторые — выполняют фоновые задачи, например, с помощью брокера сообщений RabbitMQ (https://github.com/rabbitmq).

Паритет разработки/работы приложения (https://12factor.net/ru/dev-prod-parity). Для того чтобы обеспечить схожесть сред разработки, тестирования и продакшена, мы используем виртуализацию на основе Docker и специально подготовленные образы, содержащие одинаковые наборы и версии библиотек. Промышленные и тестовые среды отличаются лишь степенью масштабирования, на основе технологий K8S и Swarm.

Журналирование (https://12factor.net/ru/logs). Фактор утверждает, что приложение должно просто писать в STDOUT и STDERR, а среда должна отвечать за маршрутизацию этих сообщений в хранилище. Технология PHP-FPM позволяет производить вывод логов в STDOUT, что крайне полезно при работе с Docker-контейнерами. Для организации процесса логирования на уровне приложения мы используем сторонние внешние библиотеки, например Monolog (https://github.com/Seldaek/monolog) или компоненты фреймворков.

Задачи администрирования (https://12factor.net/ru/admin-processes). Реализовать сценарии администрирования приложения можно с помощью внешних библиотек, например Symfony Console (https://github.com/symfony/console). Большинство современных фреймворков имеют встроенные средства для организации запуска консольных команд для служебных целей и миграций. Например, в Yii Framework есть понятие консольного приложения (https://www.yiiframework.com/doc/guide/2.0/en/tutorial-console) и команды.

Приходится объяснять хорошим профессионалам своего дела самые базовые вещи о людях.

Если вы преподаете, или занимаетесь проектированием, дизайном, управляете командой, преподаете мышление и дизайн, вы постоянно упускаете главное — воспитание воли. Человек не знает чего хочет, вы сами толком не знаете ответа на этот вопрос. Чего вы хотите от себя?

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

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

Когда человек приходит учиться делу, профессии, навыкам, он все время дорисовывает в воображении образ — новенького, свежего, хорошего себя. Этот образ и есть образование — передача образа новой роли в жизни. Образ этот создает две силы — желания быть и умения держать курс. По этой причине я часто студентов называю курсантами — у них должен быть курс, направление, маршрут к нужному образу. У студента может быть студень, бесформенные ожидания, у курсанта — курс. Я лично всегда работал с курсантами, со студентами работали остальные.

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

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

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

Можно тридцать лекций провести, сотни слайдов показать, дать дюжину заданий и не решить главное — не воспитать воли человека самостоятельно желать развиваться, постоянно находить себе ответ «почему».

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

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

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

Дизайн-снайпер, [28.06.20 20:53]
Есть секрет, который поймут профессионалы. Задача и назначение воли — воспитать в человеке любовь настолько, чтобы в подключении, вовлечении воли было как можно меньше поводов. Научив человека использовать волю мы учим тайне — долгу любви. Если ты равен самому себе, если нашел любимое дело — тебя не тяготит долг, не тяготит труд и ответственность. мы ведь любимым не даем в долг, мы считаем счастьем быть и принадлежать всецело любимым. Обучать надо этому изначально — воспитанию воли полюбить в себе равное тебе. Равное тебе дело. Равное тебе ценное. Равное тебе любимое. Извините за многословие — но все именно так.

— Чего вы хотите от себя?
— Быть равным самому себе! Больше никому.

Итог по блоку исследования

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

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

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

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

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

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

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

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

Во время подготовки мы старались все максимально упростить, чтобы даже ребёнок понял, о чем идет речь. И это была правильная стратегия. На защите жюри отметило структурность и доступность выступления.

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

Александр Слобженинов из Walsh написал, как стать дизайнером одной из лучших студий в мире.

1. Больше времени тратьте на самообразование, а не заказы. Если человек что-то уже делал, это не значит, что он делал это хорошо. Чем больше времени вы тратите на добывание денег, тем дольше будет путь наверх.

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

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

3. Собирайте в портфолио то, что вам нравится делать. Делайте то, что никто другой не делает. Не бойтесь комментариев типа «в жизни такое работать не будет», «заказчик не примет». Яркие, хоть и не настоящие проекты привлекают больше интересных и дорогих заказов, чем продающие лендинги.

4. Обращайтесь в студии, в которых мечтаете работать. Многие из них готовы к удалённому сотрудничеству.

Про формальный vs реальный дизайн-процесс

Про формальный vs реальный дизайн-процесс

Цитата про формальный vs реальный дизайн-процесс из эссе Майкла Бейрута —дизайнера и сейчас партнера Pentagram, команда которого работала над новыми логотипами Mastercard, Slack, Yahoo, Verizon и дизайном предвыборной компании Хиллари Клинтон.

-----

Уже более 20 лет я пишу предложения по проектам. И почти в каждом из них есть пассаж, который начинается примерно так: «Проект включает четыре этапа: ориентирование и анализ, дизайн-концепция, разработка дизайна и реализация». Все клиенты хотят этого.

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

Это могло бы звучать примерно так:
«Работая над дизайн-проектом, я поначалу внимательно слушаю, как вы рассказываете о вашей задаче, и читаю все найденные справочные материалы по проблемам, с которыми вы сталкиваетесь. Если вам повезет, у меня случайно окажется личный опыт работы в ситуации, похожей на вашу. Идея дизайна появляется в моей голове по ходу процесса, из ниоткуда. Я не могу это объяснить; это сродни магии. Иногда это случается даже раньше, чем вы успеваете рассказать мне о вашей задаче! Если идея хороша, я стараюсь придумать стратегическое обоснование такого решения, чтобы объяснить его вам, не полагаясь на хороший вкус, который у вас может отсутствовать. По ходу я могу предлагать другие идеи либо потому, что вы заставили меня согласиться на это, либо потому, что не уверен в первой идее. Во всяком случае, надеюсь, на ранних этапах я сумею заручиться вашим доверием и к этому моменту вы будете готовы принять мои рекомендации. Понятия не имею, как вы собираетесь проверять их пригодность, за исключением того, что в прошлом другие люди — по крайней мере те, о которых я вам рассказал, — последовали моему совету и преуспели. Иными словами, не могли бы вы просто, ну, знаете... верить мне?»

-----

Конец цитаты.

Вы должны побывать на «дне», чтоб было с чем сравнивать

Вы должны побывать на «дне», чтоб было с чем сравнивать

— Мониторы у вас излишне чёрные и недостаточно эстетичные
— Не хочется делать проекты для behance
— Не хочется ездить в офис на работу
— Ой, чё-то я прям не могу себя заставить за эту задачу взяться

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

Однако, всё познаётся в сравнении и если у вас нет этого «дна», с которым можно сравнивать — ценить то, что есть сейчас, вы полноценно не сможете.

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


Вспоминаю, как пришла работать в 1C:Битрикс.
По грёбаному дождю еле нашла их офис в какой-то вонючей(буквально) промзоне. Сначала час на вот этот текст на логику с шнусмумриками…

Потом задача на цикл, которая не хотела решаться. А в результате оказалась с ошибкой в условии. Какой-то прыщавый лид-программист, чьё ЧСВ было таким же жирным как и он сам.
Скептический настрой, только потому что ты девочка.
И вообще всё это нахер ему не надо. Эти тупые кандидаты, которые не могут решить придуманную задачу. «Господи, как же вы заебали» — читалось в его уставших красных глазах.


А работа в банке Русский Стандарт.
Более депрессивный, подставляющий друг друга персонал ещё поискать: тёлочки конкурировали друг с другом, рвали бумаги, вырывали клиентов друг у друга. Двухнедельное(с утра до ночи) бесплатное обучение всей системе рассчёта кредитных продуктов, страховок, выявления мошенников и поддельных документов. Страх отчисления, ежедневные чистки, унижения. Отсутствие эмоций и поток людей. Угрозыск, задержания, показания, золотые цепи на груди. Немые младенцы мошенников. Стопки налички из рук в руки под столом.


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


Для 90% компаний, люди — это мясо, средство достижения цели.
На ваши эмоции плевать. Ваши идеи никому не нужны.


Иногда нужно побывать на «дне», чтоб было с чем сравнивать и научиться ценить.


С любовью ❤️ гав-гав