{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

Моя страсть к оверинжинирингу

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

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

Что приводит к оверинжинирингу?

  • Перфекционизм. Хочется, чтобы все было выстроено правильно с самого начала и было готово к масштабированию.
  • Широкий выбор инструментов для разработки. С бесконечным выбором бесплатных инструментов, библиотек, фреймворков можно легко превратить простой Hello, World! в приложение, требующее установку десятка библиотек.
Node.js packages
  • Незнание истории великих продуктов. Первая версия многих известных продуктов, совершенно не впечатляла:
Скриншот первой версии Amazon.com
  • Миф о «супер-программисте». Супер-программисты (они же ninja developers) это такие программисты, которые сразу пишут красивый и правильно работающий код. При этом, они еще и работают сто раз быстрее.
Типичный Ninja Developer
  • Не хочется общаться с конечными пользователями. Потому что если показать им текущую версию, то она может не понравится, ведь она еще не идеальна. К тому же, может оказаться, что такой продукт вообще никому не нужен.
  • Незнание историй о том, как хорошо сделанные продукты умирали, потому что не смогли набрать достаточно пользователей.
  • Незнание историй не очень хорошо сделанных продуктов, ставших успешными, потому что даже с кривым интерфейсом они несли ценность для пользователей.
Snapachat в 2013 году Screenshots by Bobby Goodlatte
  • Превращение идеи продукта в идею создания платформы. Программистам нравится делать свои платформы. Пример такого подхода: "У меня есть идея для приложения с обработкой фотографий -> Хм, а может сделать платформу для таких приложений? -> Точно, а сначала сделаем свой фреймворк для создания таких платформ!". Создавать платформу для несуществующих еще приложений тяжело, даже при наличии ресурсов.
0
3 комментария
Laisan Shafikova

Не хватает определения оверинжиниринга :) 

Ответить
Развернуть ветку
E M
Автор

@Laisan Shafikova спасибо, добавил в статью!

Ответить
Развернуть ветку
Эдуард Смирнов

@E M , спасибо за статью - прямо в точку!
@Laisan Shafikova , за запрос определения - тоже спасибо: оно вроде интуитивно-то и понятно, на без годного определения эти соображения трудно использовать как аргумент.

Ссылочку на демо-стенд оверинжиниринга могу выдать прямо сейчас, там и про платформу даже есть ;)

Ответить
Развернуть ветку
0 комментариев
Раскрывать всегда