Что Дешевле: Новое Оборудование Или Рабочая Сила Разработчиков?

Следующий пост вдохновил меня на написание этой статьи «Как мне улучшить свой стиль программированияЭ» плюс недавний спор среди коллег.

Представьте себе этот диалог: Админ : Господа разработчики, ваш код на сервере начал съедать много оперативной памяти.

Сервер уже начинает подкачиваться.

Понимаете, все может стать ставкой! Представитель разработчика (например, руководитель группы) : Блин, это проблема.

Теперь давайте разберемся с проблемой.

Эй, команда, администраторы позорят нас за неоптимальный код. Нам срочно нужно всё бросить и оптимизировать старый код. Руководитель проекта : Ээт, куда ты идешь? Какая оптимизация? Пусть админы докупят больше памяти для сервера и проблем не будет. И у вас есть куча нового функционала, который нужно разработать.

Никакой оптимизации! Сосредоточьтесь на новых функциях.

Нам нужно опередить конкурентов с помощью новых функций.

Затем вы каким-то образом оптимизируете свой код. И кто по вашему мнению прав? То, что должно быть сделано? Стоит ли обновить оборудование или провести некоторую оптимизацию? В конце статьи будет голосование.

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

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

Вопрос на самом деле более общий: куда потратить деньги? Да-да, в них всё есть.

Те.

деньги можно потратить на новое оборудование или на человеко-часы (зарплату), которые будут потрачены на оптимизацию кода.

Мне сложно встать на место всех четырех участников, которые могут быть вовлечены в обсуждение этого вопроса.

Но я попытаюсь объяснить, что думает каждый из них.



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

Их код становится все более энергоемким.

Постоянно закупаем дополнительное оборудование.

Оно ест электричество.

Более того, оно ломается и устаревает. Просто проблемы.

Пусть они научатся программировать и их творение будет работать на одном сервере.

Это будет счастье!

Мысли разработчиков
Мы уже устали от этой новой функциональности.

Когда дадут время на рефакторинг? Посмотрите, админы уже косо на нас смотрят. Код должен быть оптимальным.

Легко читать.

Быстрый и потребляет мало памяти.

Мы можем программировать так.

Нам просто нужно на 30-50% больше времени для этого.



Мысли менеджера проекта
Проект уже запущен и приносит прибыль.

А вот список нового функционала, который необходимо улучшить.

И сделать это нужно как можно быстрее, чтобы опередить конкурентов.

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

Всего я потрачу Н рублей на зарплату за этот месяц для оптимизации.

Плюс мы потеряем темп, потому что.

этот разработчик не будет участвовать в создании нового функционала.

С другой стороны, для (Н*2) Куплю еще рублей памяти для сервера.

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

И темпы развития не замедлятся, потому что.

каждый будет заниматься своим делом: админы будут обновлять сервера, а разработчики создавать новый функционал.

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

Как повысить уровень знаний? Тратьте время на обучение.

Или уволить этих людей и нанять более умных, но с зарплатой на 50% (а может и на 100%) больше.

Те.

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

Мне кажется, проще купить больше памяти для сервера.



Мысли предпринимателя (в игру вступает четвертый персонаж)
Итак, руководитель проекта попросил выбрать:
  • Потратить дополнительные деньги на разработку (возможны следующие варианты: смена команды разработчиков на более дорогую; увеличение времени разработки текущей команды, так как она будет уделять больше времени оптимизации кода)
  • Потратьте дополнительные деньги на оборудование (обновите существующее оборудование, купите новые узлы и т. д.).

При этом менеджер дал понять, что не факт, что время, потраченное на оптимизацию, приведет к цели.

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

Отличный, оптимальный код «принесет дивиденды» в будущем.

А инвестиции в оборудование дадут немедленную отдачу.

Также оборудование является собственностью компании.

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

(Далее каждый сам понимает, что выбрал Хозяин).




При обсуждении в комментариях предлагаю исходить из следующих посылок:
  • Текущие разработчики средние.

    Те.

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

    Они могут улучшить качество кода, потратив дополнительное время.

  • Стоимость оборудования, например, в 2 раза превышает стоимость зарплаты (или, например, премии за внеклассную работу) разработчика, который будет решать проблему с текущим высоким потреблением серверных ресурсов.

    Причём разработчики будут решать проблему только в текущем коде, а раз уж они напортачили с «пожирателями памяти», то, скорее всего, продолжат в том же духе.

    А при нынешней тенденции роста потребления ресурсов затраты на оборудование закроют этот вопрос на ближайшие 2 года.

  • Речь не идет об ошибке, из-за которой потребление памяти подскочило на 100%.

    Это необходимо исправить немедленно.

    Дело в том, что увеличение функциональности увеличивает потребление ресурсов сервера.

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

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

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

П.

П.

С.

Здесь пост-продолжение этой темы от Шнур В опросе могут участвовать только зарегистрированные пользователи.

Войти , Пожалуйста.

Итак, голосование.

Что бы ты сделал сам? 44,53% Я разработчик.

Я считаю, что код необходимо оптимизировать.

1368 28.65% Я разработчик.

Я думаю, мне нужно купить больше оборудования.

880 9,21% Я админ.

Я думаю, что разработчикам необходимо оптимизировать свой код. 283 4.3% Я админ.

Я думаю, мне нужно купить больше оборудования.

132 2,99% Я менеджер проектов.

Я думаю, что разработчикам необходимо оптимизировать свой код. 92 3,84% Я менеджер проектов.

Я думаю, мне нужно купить больше оборудования.

118 2,67% Я Босс.

Я думаю, что разработчикам необходимо оптимизировать свой код. 82 3,81% Я Босс.

Я думаю, мне нужно купить больше оборудования.

Проголосовали 117 3072 пользователей.

829 пользователей воздержались.

Теги: #как #программисты #управление проектами #программирование #Идеальный код

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.