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

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) и команды.

Социальные и психологические аспекты жизни древнего человека

Социальные и психологические аспекты жизни древнего человека

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

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

Из школьной программы у меня осталось ощущение, что 95% времени существования человечества на Земле жили такие несчастные примитивные пещерные люди-дикари. А вот потом началось земледелие, появились цивилизации, человек очеловечился и тут-то в последние пару тысяч лет всё интересное и стало происходить.

На самом деле древние ребята, судя по всему, жили вполне гармонично, сыто и счастливо. Все исследования племён, которые сохранили образ жизни охотников-собирателей, говорят о том, что для наших предков были очень важны несколько базовых ценностей:
- Автономия (личная свобода). Охотники-собиратели не говорили друг другу, что делать, и даже советов не давали. Каждый человек был полностью независим и свободен в своих действиях ровно до того момента, пока его личная свобода не нарушала свободу других людей.
- Бескорыстие и щедрость. Наши предки всегда с удовольствием делились друг с другом всем, не ожидая ничего взамен: добычей и находками, знаниями и умениями, заботой. Частной собственности не просто не было, в ней не было никакого смысла. Имей ровно столько вещей, сколько сможешь носить с собой. Товарно-денежных отношений тоже не было.
- Тотальное равенство. У людей не было иерархии, у племён не было старейшин или вождей. Мужчины и женщины были равны в правах. Ничьи нужды не были более важными, чем нужды другого. Не было и духа соревнования, даже в играх. Решения принимались консенсусом после долгих обсуждений и споров.
Если кто-то отказывался жить в соответствии с этими ценностями, его сначала высмеивали, а потом просто выгоняли из племени. Прожить же в одиночку было почти невозможно. Подробнее об этом всём можно почитать, например, в замечательной книжке Питера Грея Free to learn.

Харари писал о том, что очень многое, из чего состоит наша сегодняшняя жизнь, — государства, политика, бизнес, деньги, религии и т. д. — иллюзорные конструкции. Меня совершенно поражает, что они не просто иллюзорны, мы эволюционно к ним не очень-то подготовлены. Их и не существовало в жизни homo sapiens до тех пор, пока не появилось земледелие. А вместе с осёдлым образом жизни пришёл тяжелый изнурительный труд, частная собственность, войны и насилие, подчинение одних людей другими и борьба за власть, эпидемии и так далее. Кстати, отличнейшая свежая книжка об этом — Humankind Рутгера Брегмана.

Конечно, в 2020 году мы уже не можем отказаться от электричества, интернета, айфонов, самолётов, хипстеров и телеграм-каналов, даже если бы вдруг и захотели. Прогресс неостановим. Но страшно интересно, как можно поменять некоторые из моделей и установок, чтобы быть ближе к Базовым Ценностям:
- Например, некоторые компании не просто декларируют автономию как важную ценность, а упраздняют иерархию вообще (книжка «Открывая организации будущего», плюс можно погуглить «бирюзовые организации» или Valve's Handbook for New Employees).
- Например, появляются школы, в которых дети могут свободно играть вместо того, чтобы сидеть за партами и слушать уроки (можно погуглить unschooling или Sudbury school).
- Например, набирают силу движения вроде феминизма, Black Lives Matter и другие, направленные на то, чтобы убрать неравенство и перекосы, копившиеся в обществе столетиями.
- Существуют отдельные мероприятия и фестивали вроде Burning Man, живущие по очень похожим правилам и ценностям: автономия, щедрость, равенство.

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

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

Отличная подборка полезных ресурсов и запись вебинара с Михаилом Грековым про UX.

Процитирую несколько крутых мыслей:

✔️Пользовательского опыта не существует, пока у продукта нет аудитории. Это главная причина начать получать обратную связь в процессе разработки как можно раньше (тестирование прототипов, коридорные тесты, запуск через MVP)

✔️Пользовательский опыт неоднороден. У разных частей продукта может быть совсем разный UX (попробуйте найти в Zoom настройки видео). И для разных аудиторий UX может быть разным (1С очень удобен в глазах опытного бухгалтера)

✔️Хороший UX это баланс между удобством (помогаем пользователю дойти до цели кратчайшим путём) и интересами бизнеса (на примере Яндекс Go, продвигаем другие сервисы за счёт простой задачи вызова такси)

✔️Пирамида пользовательских ценностей (см картинку👇🏻). Нет смысла заниматься проблемами на верхних уровнях, если в продукте не решены критичные проблемы на нижних.

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

Как Reddit аудиторию набирал

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

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

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

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

Как создавалась активность на Reddit?

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

Такую же стратегию использовал сайт Quora (самый популярный сервис вопросов и ответов за рубежом). Два основателя без перерыва создавали новые вопросы и сами же отвечали на них. Потом к ним присоединились первые работники, бета-тестеры. Благодаря этому база вопросов и ответов начала заполняться, сайт ожил, пошёл органический рост.

Да, это непросто. Да, зачастую это приходится делать вручную (хотя, я думаю, что некоторые могут автоматизировать подобные процессы). Но когда других способов выйти из «долины смерти» нет, то и такой хак может оказаться спасительным.

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

Источник - https://m.habr.com/ru/company/changeagain/blog/298284/

Что-то все начали обсуждать выгорание

Хочу высказаться, предложив для начала перестать называть хроническую усталость новым и модным словом «выгорание». Потому что ничего нового в этом явлении нет. А еще потому, что слово выгорание не дает понимания, что делать дальше и как выйти из этого состояния. Итак, вы почти точно выгорели если:

— Работали несколько (!) лет в напряженном режиме.
— Регулярно работали 9 и более часов в день и в выходные.
— Вписались в несколько проектов: 2, 3, 4 и более.
— Совмещали работу с интенсивными спортивными тренировками.
— Добавили изучение языков или другое системное образование.
— Решили строить персональный бренд: много выступали и писали тексты по ночам.
— Решили, что нужно вставать в 6-7 утра и сразу в бой.
— Было много командировок с ломаным графиком.
— Злоупотребляете кофе или другими стимуляторами для поддержки работоспособности.
— Несколько раз сталкивались с головными болями после переработок.
— 2 и более лет не брали отпуск.

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

Решение вытекает из понимания сути проблемы (усталость): остановиться и признать тот факт, что вы не биоробот, а просто человек. Избавиться от обязательств и проектов, хорошенько отдохнуть, перестроить свой график и подходы к работе ... затем вернуться к работе. Если через два дня вы застали себя в исходном состоянии, ДЕЙСТВИТЕЛЬНО перестроить график и подходы.

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

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

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

И да, кто-то должен был это сказать: люди 35+ лет с опытом работы 15+ лет нервно подергиваются когда слышат разговоры о выгорании от совсем молодых ребят.

Очень близкая мне статья про сторифреймы

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

— Так, и что тут у вас?
— А вот поглядите, можно сохранять любимые места из книг.
— Хм... а из электронной можно?
— Можно, хотите загрузить?
— Да. Ок загрузил, а где теперь найти?
— А вот, посмотрите в ленте.

Дальше разбираем, какие экраны и элементы нам нужны, чтобы реплики консультанта «зазвучали». И сразу будет понятно, как именно нужно обращаться к пользователю на этих экранах и элементах.

Главное не забывать, что внутреннюю речь пользователя мы только предполагаем. В реальности всё не так. Её нужно проверять ю-тестами, в идеале — с реальным «мышлением вслух».

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