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

let el = document.querySelector(".someClass");
el.innerText // текстовое содержимое
el.innerHTML // HTML-разметка содержимого
el.outerHTML // полная HTML-разметка
el.offsetWidth // ширина, аналогично Height
el.offsetLeft // координата левого угла
// и так далее

Назначенные узлу стили можно узнать через свойство sytle:

el.style.color // цвет текста

Но в нём содержатся только те CSS-свойства, которые назначены непосредственно узлу. Чтобы узнать все свойства, которые получил узел из CSS-стилей, потребуется более сложная конструкция:

getComputedStyle(el).color // цвет текста

Если захотите узнать более сложные свойства, то не забудьте преобразовать их названия в camelCase. Например: background-color → backgroundColor;

Подробнее в видео: https://youtu.be/kM8YAhsaHfE
И в примере с кодом: https://codepen.io/detepr/pres/mQqKZO

Bad Blood

А я тем временем принесла вам обзор на книгу Bad Blood (в русском переводе - Дурная кровь) от Джона Каррейру.

Книга рассказывает историю стартапа-единорога "Теранос", который должен был произвести революцию в сфере здравоохранения и получил оценку в 10 миллиардов долларов – но за 15 лет существования так и не смог произвести на свет работающую и лицензированную технологию. Сейчас идет судебное разбирательство над основательницей компании Элизабет Холмс.

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

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

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

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

Core Protocols

Когда я пришел в ManyChat, я первый раз услышал про LeSS и пошел читать методичку. А в методичке по LeSS я наткнулся на отсылку к Core Protocols, про которые не слышал раньше, и тоже пошел читать про них.

И если вкратце, Core Protocols — это система фасилитационных техник, направленных на улучшение коммуникации внутри команд.

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

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

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

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

Я их переведу на русский со своими комментариями, и если вы найдете более емкие формулировки, то пишите, я дополню/исправлю:

1) Я обязуюсь участвовать, когда присутствую
Это про то, что если участвуешь во встрече, то участвуешь, а не залипаешь в ноутбуке. Дополнительно расширяется на личную внутреннюю осознанность. Если что-то делаешь, то понимаешь зачем.

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

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

4) Я буду говорить всегда и только тогда, когда верю, что это улучшит соотношение усилие/результат
Это про осознанное высказывание мыслей. Не нужно говорить просто, чтобы стать заметным для кого-то на встрече.

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

6) Я буду избегать непродуктивных ситуаций
Если понимаешь, что 23 встречи в неделю не приводят к результату, отмечаешь это, и стараешься не участвовать им, не мешая при этом другим.

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

8) Я буду стремиться двигаться к цели, смещая свое поведение в сторону действия
Всегда разгоняй активным действием, создавай положительную инерцию, которую сложно остановить даже самыми тупыми действиями и комментариями.

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

10) Я никому не причиню вреда—и не потерплю причинения вреда—за его или ее верность этим обязательствам
Если закомитились на core protocols, то не нужно закатывать глаза и проявлять агрессию (даже пассивную), когда тебе кто-то подсветил, что ты наваливаешь не в ту сторону.

11) Я никогда не буду делать ничего глупого нарочно
Вот да!

Это только верхушка, в следующий раз посмотрим на сами коммиты.

Вообще очень рекомендую прочитать оригинал текста с коммитами вот здесь — https://liveingreatness.com/core-protocols/the-core-commitments/

Смена лого Google Maps

Смена лого Google Maps

Карты гугла обновили логотип и я, как преданный пользователь сервиса, ощутил на себе всю "прелесть" этого мероприятия. Под постом будет картинка До обновления и После.

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

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

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

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

Психологические игры при найме UX-дизайнеров

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

  • Мне надо семью содержать / у меня ипотека / надо лечить много зубов / в Москве дорого снимать квартиру. Поэтому я не могу получать меньше чем Х рублей.
  • Я хочу переквалифицироваться в UX-дизайнера. Долго работал в смежной области и получал 130К. Опыта нет, но к вам перейти очень хочу. В ЗП падать не могу
  • Я хочу чтоб было классно и интересно, потому что сейчас у меня в продуктовой компании Y-банка ничего никуда не доходит, мы рисуем одну страничку по два месяца, а потом её не берут. А хочется динамики и развития. И не падать меньше текущих 200К. По скилам я мидл, но быстро дорасту до лида.
  • Я учился неделю в вышке / британке — на классном дорогом курсе. У меня есть учебный кейс и из опыта больше ничего, но я думаю что я теперь мидл, дайте мне 120К.
  • Мне 20 лет, опыта работы нет совсем, ни в чем не работал, ничего не знаю. Хочу вам предложить, чтобы вы меня несколько месяцев обучали и растили, можно и не платить ЗП.

Все эти доводы довольно странные для профессиональной деловой сферы.

Я чувствую себя мужиком, у которого просит деньги невеста, исходя из своих женских потребностей:
— Мне нужно новое платьишко, потому что у Кристины день рождения, не могу же я в старом пойти?!

Только скилы, опыт, рынок, срочность найма или хотения этого кандидата определяют ЗП.

Очень часто девочки недооценивают себя, а мальчики переоценивают. В среднем на одни и те же скилы девушки называют ЗП на 30% ниже рынка, а парни на 50% выше.

Из 1500 откликов за полгода мы провели 43 собеседования, наняли 5 человек, а 4-ро прошли испытательный.

Вероятно, меня никто не поймёт кроме таких же людей, которые нанимают и развивают команды и процессы.

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