Вопрос: есть команда из трёх человек

Вопрос: есть команда из трёх человек: сильный разработчик, который делает быстро, но поверхностно; есть слабый разработчик, который делает медленно, но работающий код (и часто переделывает за сильным) и есть тимлид/пм (я), который не сильно разбирается в коде. Сильный буллит слабого, что тот не разбирается и вообще плохой программист. Что делать?

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

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

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

Недожали

Сегодня речь пойдет о таинственной формулировке «недожали» или особенности преподавания UI.

Как вы помните, UI не самая моя сильная черта (https://t.me/bukhtiyar/161), поэтому я поделюсь взглядом человека, которому нужен был спасательный круг в этой новой сфере. И судя по отзывам, многие, из пришедших в британку, также ждали прокачки своих скиллов в визуале. Но были ребята и с богатым опытом в полиграфии и иллюстрации — им, безусловно, было легче. Но ни я, ни многие другие не получили должного внимания со стороны преподавателей. Давайте попробуем разобраться почему.

Что вообще нужно для того, чтобы научиться делать красивый UI (ну, кроме таланта, конечно)? Необходимо пройти через большое количество проб и ошибок, т.е. чем больше повторений сделано — тем более качественный результат.

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

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

Недожали — это универсальный ответ, который я слышал практически на все действия по UI. Обычно это означало, что можно было сделать лучше. Причем, как именно лучше, было не совсем ясно. Все валится, ничего не выходит, не знаешь что делать дальше — ты просто «недожал».

Но однажды я все же получил небольшое пояснение этого термина. Одним вечером, после занятий я решил спросить, Сергея, что же делать когда ничего не получается? Он поделился своим опытом — когда ничего не получается можно начать решать проблемы постепенно, брать какую-то одну небольшую часть проекта, например, контролл и доводить его до совершенства. То есть фокусируешься на одном моменте, не отвлекаясь ни на что больше. И… постепенно «дожимаешь» весь проект.

Напомню, что мы работали в командах по 2-3 человека, и работа над UI выглядела следующим образом: каждый из студентов делал заход на визуал проекта, составлял мудборд и на основе его рисовал несколько экранов. В итоге, в каждой команде отбиралась самая проработанная концепция. На её основе составлялся UI-Kit, который затем раскатывался на всё приложение с дальнейшей шлифовкой.

На зачете по блоку UI наша команда предоставила три одинаково плохие концепции, и Женя Бондарев посоветовал смешать несколько идей из каждой концепции. На этом его активное участие в обучении закончилось. А мы остались один на один с очень сырым UI, и тут же стали его переделывать. Про мои страдания вы можете почитать в прошлом посте, скажу лишь, что все майские праздники я потратил на погружение в особенности работы над UI. Это время не прошло зря, я открыл для себя много нового и из зачаточных мои навыки стали чуть более крепкими.

Что же по обратной связи — то блок, который вел Женя закончился, и чтобы получать хоть какую-то обратную связь я стал донимать Сергея Гальцева, на что однажды получил комментарий, что он уже не отвечает за блок UI, т.к. со второго семестра является куратором курса. Исторически он вел блок UI, в первом семестре так и было. Но во втором семестре блок UI вел Женя Бондарев, при этом Сергей также продолжал комментировать макеты и принимать активное участие. Но четкого понимания, кто рулит процессом и несет ответственность не было. Я уже молчу про ситуации, когда комментарии разных преподавателей по одному макету противоречили друг другу.

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

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

По итогу мы нашли общее видение направления, и оно звучало следующим образом:
«Чистый интерфейс с понятной типографикой, умеренный и местами незаметный, но со своим стилем и продуманной навигацией. Он не должен быть грубым и непонятным, не должен напоминать голый ios, не детский, не захламленный, не космический».

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

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

О гибком мышлении.

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

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

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

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

Гибче Вас!

Нечто большее

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

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

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

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

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

Представьте, что вы как заказчик, оставляете заявку и вам за считанные дни проводят целое исследование. Прелесть!

Чтобы обратиться к какому-либо узлу, его сначала надо найти

Для этого есть разные методы, но в современном прототипировании чаще всего применяются два метода:

let el = document.querySelector(selector)
и
let elems = document.querySelectorAll(selector)

Оба метода получают на вход CSS-селектор элемента. Например:

let el = document.querySelector(".someClass b");

Отличие их в том, что querySelector вернёт один узел, который попался первым, а querySelectorAll вернёт список всех узлов на странице, соответствующих селектору.

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

Если же вам всё-таки нужен метод map, то вы можете преобразовать список узлов в массив при помощи конструкции [...nodeList]:

let arr = document.querySelecroAll("a");
[...arr].map(el => el.innerText);

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

Всё и сразу

Мы остановились на моменте, когда наша команда синхронизировалась с заказчиком насчет фронта работ: проблема номер один — регистрация новых специалистов, остальные сценарии имеют второстепенное значение.

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

Тут важно отметить, что у профиру существует два приложения: одно для клиентов, которые с его помощью оставляют заказы, оно так и называется — PROFI.RU; второе — для специалистов, в котором они, те самые заказы находят, называется оно неоднозначно — Бэкофис (англицизм, набранный кириллицей, смысл которого, я уверен, не очень понятен широкой целевой аудитории сервиса).

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

Это, к слову, отличная иллюстрация модели двойного алмаза, о которой я писал ранее https://t.me/bukhtiyar/74 — вначале мы взяли максимально большой охват проблем (стадия дивергентного мышления), а после углубления стали отсекать какие-то части (конвергентное мышление).

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

Глобальная причина одна — увеличить базу мастеров. Но у неё есть два следствия.

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

Второе — смена бизнес модели в сторону автоматизации, путем отказа от администраторов и ввода системы обратного аукциона (подробнее я рассказывал об этом здесь — https://t.me/bukhtiyar/88). Но для корректной работы автоматического режима системы необходимо иметь большое количество пользователей — чем больше мастеров в системе, тем корректнее происходит распределение заказов, формирование цены заявки и т.д. В этом случае правильно построенные пользовательские сценарии, вкупе с быстрой регистрацией, будут способствовать вовлечению и удержанию новых мастеров.

Таким образом, все наши силы сосредоточились на решении проблем специалистов.