Connect with us

Разработка

Григорий Петров: Программисты разной силы на одном проекте

Про ментальные модели я много раз рассказывал. Это уже 45-я статья цикла по управлению разработкой, поэтому пора раскрыть страшную правду. Мы не знаем, как работает наш мозг. Не знаем от слова “вообще”.

Григорий Петров

Опубликовано

/

     
     

Про ментальные модели я много раз рассказывал. Это уже 45-я статья цикла по управлению разработкой, поэтому пора раскрыть страшную правду. Мы не знаем, как работает наш мозг. Не знаем от слова “вообще”. Лучшее на данный момент объяснение:

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

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

Силушка программистская

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

Как сравнить двух разработчиков? Опыт. Те самые “изменения в мозгу”, о которых мы ничего не знаем. Изменения, вызванные предыдущим опытом: что разработчики читали, как учились, что разрабатывали, с кем общались. Изменения, которые позволяют разработчикам делать две вещи: читать и писать код.

Знакомые психологи очень не любят, когда я называю эти изменения ментальными моделями. Говорят, что ментальные модели – это такой зарезервированный в психологии термин, который совсем о другом. А то, что я называю ментальными моделями – это множество совершенно разных штук со своими названиями. Поэтому, раскрыв страшную тайну, я снова возвращаюсь к привычному термину. Если когда-нибудь мне понадобится написать научную работу по психологии, буду использовать термины по назначению. А читателям статей по управлению разработкой термин “ментальная модель” ближе и понятнее, чем “энграммы”, “квалиа” и прочие “когнитивные карты”.

Нельзя просто взять, и вместе писать код

И вот тут мы подходим к самому интересному. Код – не книга. Чтение и написание книг – это навык, эволюционировавший у нас тысячи лет. Заимствующий модели окружающего мира, язык жестов, устный язык и область в мозгу, ответственную за распознавание лиц. Для превращения голоса и текста в смысл мозг имеет огромные области “Брока” и “Вернике”, которые для этого эволюционировали.

А для кода таких областей нет.

Образования нет. Фундаментальных учебников нет. Устоявшихся методологий нет. Все что есть – это опыт, который у каждого разработчика свой. Если опыт сильно различается, то таким разработчикам будет тяжело читать, понимать и поддерживать код друг друга. Даже такие фундаментальные вещи, как “действующие лица”, о которых я недавно писал, будут различаться. И мы даже не можем использовать микроменеджмент и объяснить, как делать правильно! Потому что собственную картину мира в чужую голову запихнуть проблематично.

А что можно?

Индустрия молода, но мы уже успели заимствовать и придумать методы борьбы. Самое простое – это пытаться нанимать бойцов со сходным бэкграундом в технологиях и опытом работы. Из этого, кстати, есть странный вывод: для командной разработки не очень хорошо брать самых сильных специалистов. Нанять всех сильных не получится, и разница в опыте будет очень больно бить по проекту. А в случае ухода такого специалиста поиск замены будет очень непрост. Что еще можно делать?

  • Соблюдать баланс между изоляцией разработчиков и командной работой. Хорошо, когда разработчики знают, что делают их коллеги и могут “подстраховать” в редких случаях. Хуже, когда несколько разработчиков работают над одной и той же частью проекта, постоянно споря и “сталкиваясь лбами”. Опытный тим лид разделяет проект на изолированные части, над каждой из которых работает отдельный боец. В случае, если он покинет компанию, его преемник сможет постепенно их переписать “под себя”. Если они небольшие, конечно.
  • Использовать и развивать стандарт кодирования. Внешняя похожесть кода – это, конечно, не панацея, но хоть немного уменьшает когнитивную нагрузку. А Continuous Integration позволяет сделать проверки автоматическими.
  • Чтение разработчиками кода друг друга. Не с целью поиска ошибок. А с целью “привыкания” к чужим ментальным моделям. Ну и ошибки иногда тоже находят, в качестве приятного бонуса.
  • Использование opinionated фреймворков, которые навязывают соглашения по именованию объектов, их взаимодействию и общей структуре проекта. Тут главное – побороть желание каждого разработчика “все переделать с нуля”. Выбранный фреймворк будет не нравиться всем, потому что не они его писали, зато бойцы смогут лучше понимать код друг друга. Оно того стоит.
Комментарии
Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement
Click to comment

You must be logged in to post a comment Login

Leave a Reply

Новости

Интересные материалы: 11.12

Лучшие материалы о разработке и маркетинге технологических продуктов.

Леонид Боголюбов

Опубликовано

/

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

Комментарии
Продолжить чтение

Медиа

Радио-Т №575

Радио-Т – разговоры на темы хайтек, высоких компьютерных технологий, гаджетов, облаков, программирования и прочего интересного из мира ИТ.

AppTractor

Опубликовано

/

Автор:

В новом выпуске:

Комментарии
Продолжить чтение

Новости

Digest MBLTdev: Новости для iOS разработчиков №147

В течение недели топовые iOS-разработчики Руслан Гуменный, Саша Черный и Саша Зимин, а также директор по продукту VK Иван Козлов собирают для вас интересные и полезные ссылки на статьи, необходимые для прочтения каждому начинающему и опытному разработчику. В каждом выпуске – новости, коды, инструменты, дизайн и прочее.

e-Legion

Опубликовано

/

Автор:

AlphaZero показывает невероятные успехи в выигрывании чего угодно у кого угодно. Стандарт C++17 перешёл в статус Published. Успели-таки, чертяги. Microsoft замутит ноутбуки на ARM. Наше восхищение рэдмондцам. Это должно продвинуть индустрию вперёд. А ещё, редакция дайджеста получила ваши ответы. Они нас порадовали. Прямо подарок к Новому году. Спасибо. Потребуется какое-то время, чтобы реализовать задумки, но мы, что называется, on the way.

1

31 Million Client Registration Files Leaked by Personalized Keyboard Developer

Есть такая популярная сторонняя клавиатура — AI.type. Немножечко обнаружилось, что эта клавиатура собирает прорву данных, да ещё и хранит их небезопасно на своём сервере. Кстати, покупая какую-нибудь китайскую розовую клавиатуру с радужной подсветкой всего за 99 руб., будьте готовы к похожему результату.

MACKEEPERSECURITY.COM

Apple Expands Search Ad Offerings with Search Ads Basic

Новый тип рекламы в App Store. Пока только US.

WWW.MACSTORIES.NET

4

Hyperion-iOS

Штука для дизайн-ревью приложения прямо на девайсе. Можно измерять расстояния, смотреть атрибуты и замедлять анимации без Xcode.

GITHUB.COM

Singleton, Service Locator and tests in iOS

Статья про антипаттерны Singleton и Service Locator, а также про то, как можно оставить их в проекте и иметь тестируемый код.

BADOOTECH.BADOO.COM

Building an enum-based analytics system in Swift

Аналитики в современных приложениях много. Маркетологом только дай волю. 5+ систем воткнут только так. Вот вариант, как оформить хаос с событиями. А если вы используете MVVM, поглядите этот вопрос на SO, тоже про усмирение хаоса.

WWW.SWIFTBYSUNDELL.COM

When Not to Use an Enum

Когда в ответ на статью появляется статья, это особенно прекрасно. Замечания и предложения к предыдущей статье: мол, enum отличный, но негоже всюду его пихать только потому, что enum в Swift функционален.

MATT.DIEPHOUSE.COM

e-Legion Meetup: дизайн мобильных интерфейсов

Санкт-Петербург, 14 декабря, офис Тинькофф, 18:30. «Система контроля версий для дизайнера» от Димы Головкова из e-Legion. «Дизайн форм для мобильных приложений и сайтов» от Ника Бабича из UX Planet. «Как мы используем продуктовую мобильную аналитику» от Толи Ларина из Тинькофф. Будет трансляция.

ELEGION.TIMEPAD.RU

Moscow CocoaHeads Meetup

Москва, 15 декабря, офис Mail.Ru, 19:00. «Как стать GPU-инженером за час» от Андрея Володина из Prisma AI. «Распределённая сборка IPA» от Мити Куркина из Mail.Ru. «Синее смещение: оптимизация запуска на платформе iOS» от Виктора Брыскина из Яндекса.

CORP.MAIL.RU

c71bdfcf-9da6-4069-9426-b03ba710c042

Яндекс изнутри: глазами iOS-разработчика

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

WWW.YOUTUBE.COM

Предыдущие выпуски Digest MBLTDEV и подписка доступны на официальном сайте. Всё бесплатно и никакого спама, честно!

Комментарии
Продолжить чтение

Медиа

Android Dev Подкаст. Выпуск 51. Разработка прошивок. Откровения ROMоделов

Необычный выпуск, где не обсуждаются DI, Kotlin и MVP – в эфире суровые ребята с xda-developers, которые уже не первый год занимаются написанием прошивок для девайсов, в том числе для всех трех Yotaphone и головных устройств Yandex Auto.

Леонид Боголюбов

Опубликовано

/

Необычный выпуск, где не обсуждаются DI, Kotlin и MVP – в эфире суровые ребята с xda-developers, которые уже не первый год занимаются написанием прошивок для девайсов, в том числе для всех трех Yotaphone и головных устройств Yandex Auto. Выпуск подойдет всем, в том числе незнакомым с разработкой Android. Много интересного материала: от откровений про сборку образа в течении 15 часов и обсуждения безопасности кастомных прошивок до обзора рынка вакансий framework-разработчиков и устройств, которые у них лежат в карманах.

Обсудили:

  • Что вообще такое ROM, программатор, bootloader, fastboot, кирпич, AOSP, кастомные сборки, Custom Recovery, dalvik cache, deodexed
  • Для чего это делают, что движет людьми на Xda
  • Где статьи и разработчики framework обитают
  • Что нужно, чтобы начать этим заниматься
  • Для каких устройств проще создавать сборки
  • Что с Cyanogen сейчас
  • Почему вендоры плохо поддерживают обновления старых устройств, порой хуже энтузиастов с Xda
  • HAL
  • Project Treble
  • Какие тулзы для разработки
  • Сколько времени сборка
  • Почему в логах на устройствах так много мусора
  • Сертификация Google
  • Повышение, понижение безопасности
  • Механизмы обновления ОС на устройствах пользователей
  • Есть ли работа и вакансии для вашей профессии
  • С какими устройствами ходят разработчики Yotaphone
Комментарии
Продолжить чтение

Наша рассылка

Каждому подписавшемуся - "1 час на UI аудит": бесплатный ускоренный курс для разработчиков веб и мобильных приложений!

Нажимая на кнопку "Подписаться" вы даете согласие на обработку персональных данных.

Популярное

X

Спасибо!

Теперь редакторы в курсе.