• Что вы делаете если не укладываетесь в срок?

    @stratosmi
    Выжимка из "Мифического человеко-месяца":

    Программа и программный продукт. Программный продукт отличается от программы:

    • максимально обобщённым диапазоном и видом входных данных
    • тщательным тестированием, что является неожиданно сложным этапом
    • наличием подробной документации


    Программный продукт требует в 3 раза больших затрат времени, чем программа (глава 1).

    Мифический человеко-месяц. Время выполнения проекта не обратно пропорционально числу программистов, по крайней мере по 2 причинам.

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


    Если есть N программистов, то количество пар программистов равно N(N—1)/2, то есть с ростом числа программистов затраты времени на взаимодействие растут квадратично. Поэтому начиная с какого-то N, рост числа программистов замедляет выполнение проекта.

    Если сроки сорваны, наём новых программистов замедляет выполнение проекта и по другой причине: новичкам требуется время на обучение. В книге сформулирован «закон Брукса»: «Если проект не укладывается в сроки, то добавление рабочей силы задержит его ещё больше».

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

    Хирургические группы. Разумно, если в группе разработчиков есть один «хороший» программист, реализующий самые критические части системы, и несколько других, помогающих ему или реализующих менее критические части. Так делаются хирургические операции. Кроме того, по мнению Брукса, лучшие программисты работают в 5-10 раз быстрее остальных (глава 3).

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

    Главный архитектор должен сформулировать свои решения в виде руководства для пользователя (глава 4).

    Эффект второй системы. Программист, разрабатывающий свою вторую систему, склонен добавлять все те возможности, которые он не смог добавить в свою первую систему (из-за нехватки времени). Поэтому вторая система часто получается перегруженной возможностями (глава 5).
    См. также: Раздутое программное обеспечение

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

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

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

    Пилотная система. Перед тем, как разрабатывать окончательную систему, необходимо разработать пилотную систему. Пилотная система выявит ошибки в проектировании, после чего она должна быть полностью переделана (глава 11). Эту идею Брукс отвергает через 20 лет в главе 19, так как за 20 лет изменился подход к созданию программ — на место принятой в 60-х—70-х каскадной модели разработки пришла итеративная.

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

    Специализированные утилиты. Вместо того, чтобы каждый программист писал собственные утилиты, в каждой группе разработчиков должен быть один программист, ответственный за написание утилит для своей группы (например, генератор кода, создающий код в соответствии с какими-то спецификациями). Должна быть также группа, создающая утилиты для всех работающих над данной системой (глава 12).

    Снижение стоимости разработки. Брукс приводит 2 способа снизить стоимость разработки программного обеспечения:

    • Нанять программистов только после того, как построена архитектура системы. Иначе при длительности этой стадии, например, в несколько месяцев программистам будет нечего делать.
    • Купить часть программного обеспечения у других разработчиков.
  • Что вы делаете если не укладываетесь в срок?

    @stratosmi
    Ф. Брукс. "Мифический человеко-месяц"
    https://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D1%84%D...

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

    Прочитайте, она тонюсенькая эта книжечка. Многое для себя откроете.
  • Почему Microsoft Office в розничных магазинах стоит дешевле, чем на официальном сайте?

    @stratosmi
    Сергей delphinpro, с чего бы это MS настойчиво просил включить рекламу?
    им, в отличие от Хабра - не приципиально. Они на другом бабло рубят.
  • Как выбрать архитектуру и БД для высоконагруженной системы?

    @stratosmi
    stratosmi,
    17 миллиардов записей

    Железо серверное - очень хорошее.

    По меркам 15 летней давности.
  • Как выбрать архитектуру и БД для высоконагруженной системы?

    @stratosmi
    Айдар Хаятов,
    Вот на конкретном примере, Вы бы хранили данные о продажах - Вы бы хранили это все на 1 таблице в рамках 1 БД? И начинаю думать по поводу необходимого железа для этой задачи


    От задач зависит.
    Если очень ответственные данные - дубль в обычных текстовых файлах + СУБД.
    Если большая скорость записи - СУБД Tarantool с движком vinyl, возможно через прокси-MQ.
    Если нужна различная аналитика в различных разрезах - классическая реляционная СУБД MySQL/PostgreSQL удобнее.

    О 150 миллионах я бы вообще не парился. Тут главное - индексы правильные чтобы были.

    P.S.:
    Сейчас глянул (это не та VPS/VDS за 500 рублей, что я выше описывал, а другая СУБД, как раз где много аналитики-отчетов) - 17 миллиардов записей -
    Реализовано в виде 2-х таблиц.
    В одной - все продажи.
    В другой - свернутые (агрегированные, суммированные) данные по интересующим менеджеров разрезам данных.
    СУБД PostgreSQL.
  • Какие достоинства хранения шаблонов в БД?

    @stratosmi
    ⚡ Kotobotov ⚡,
    что файловая система, что база данных -> фактически одни и теже сущности, только заточенные под разные задачи, выдать кусок текста - БД быстрее.

    Если бы СУБД были = файлам, то Oracle не была бы одной из самых богатых софтверных фирм в мире (одно время, вроде, даже самой первой или второй из них - еще в те времена когда СУБД и было их основным продуктом).

    Ликбез:
    Сравните СУБД Tarantool/Redis, СУБД MySQL/PostgreSQL и файлы.
    Откроете для себя много нового, в зависимости от конкретного сценария работы с данными и от того, с какими именно данными работаете.
  • Неактивен пункт в оснастке локальной политике безопасности. Как исправить?

    @stratosmi
    Кирилл,
    есть несколько групповых политик - локальная и домена. где ищете - в локальных или доменных?
  • Почему Microsoft Office в розничных магазинах стоит дешевле, чем на официальном сайте?

    @stratosmi
    Сергей delphinpro,
    Если мне не изменяет память, то гражданский кодекс РФ признает только одну валюту для расчетов, и это рубль. Интересно, как они будут за USD продавать? =)

    Все правильно, запрещено.
    А вы не помните, когда у нас весь импорт шел по у.е (условные единицы), когда 1 у.е = 1 доллару США?
    Продавали за рубли, но из у.е в рубли пересчитывали в момент продажи по текущему курсу доллара к рублю.
  • Какие достоинства хранения шаблонов в БД?

    @stratosmi
    Шта?
    Если нужно искать некие случайные данные, а уж тем более их много - другое дело.
    Но шаблон, где несколько файлов и они всегда одни и те же....
  • Какие есть библиотеки для ЭЦП в C++?

    @stratosmi
    Дохрена.
    Скорее вопрос в обратном - смотрим какая у вас ЭЦП и под нее подбираем библиотеку.
  • Как проверить исполнителя?

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

    Вы из той студии?
    Оправдываете надувание клиента? Завышаете объемы работ?

    Там одно поле (фильтр по языку).
    Ну и один переключатель и одна кнопка (выбор языка).
  • Бронирование мест в кинотеатре, есть ли готовые решения?

    @stratosmi
    Вы не сделайте систему без связи с оффлан-бронированием.
  • Какую cms для игрового сайта лучше выбрать?

    @stratosmi
    artyak1121, Joomla - проще.
    WP - распространенней (легче найти советы).
    Drupal - гибче.
  • Актуальный язык для удаленки?

    @stratosmi
    Denis Melnikov,
    Поэтому и спрашиваю, тех кто сейчас крутится в такой среде, может кто что скажет или направит.

    Заниматься нужно (из мейнстримового) тем, что больше интересно лично тебе.
  • Актуальный язык для удаленки?

    @stratosmi
    Denis Melnikov,
    когда уже все остальные ушли на управляемые. И по сути одну конфу, это Управление торговлей, так как все задачи только по ней.

    УТ - самая распространенейшая вещь. Знаешь ее - знаешь более 50%.
    На управляемые?
    Вы серьезно думаете, что сложившееся предприятие просто так переходит на новую версию, ломая отлаженные процессы? Многие очень многие сидят на старых конфигурациях, тем более, что 1С очень долго их поддерживает. 6-ку вроде еще поддерживает (или поддерживало до последних лет), 7-ку поддерживает. А уже старые варианты 8-ки - ничуть не стары и вовсю применяются.

    так как все задачи только по ней.

    И вы с этого делаете вывод, что в совсем другой сфере, с нуля - вы будете более эффективным?

    Больше нравится WEB Разработка, но только back =)

    PHP - самое распространенное.
    Но и самое конкурентное из бэка.
  • Какие достоинства хранения шаблонов в БД?

    @stratosmi
    Оптимус Пьян, shmatuan,
    Если рассматривать шаблон как единую законченную полностью готовую сущность, то без разницы где хранить.
  • Какие достоинства хранения шаблонов в БД?

    @stratosmi
    Александр,
    видимо, есть горе-разрабы, которые не умеют работать с файлами. Вот и пихают всё в базу.

    Видимо есть соображающие разрабы, которые понимают, что если не нужно учитывать права на файлы, не нужно заботится об уникальных наименованиях - то этот путь удобнее.
    Нет, когда пишешь "в одного" таких проблем даже и не замечаешь.
    Но в проектах, где прикладывают руку множество людей, порядок средствами СУБД поддерживать проще, чем в файлах, где всякий джун, уже мнящий себя настоящим разрабом, может запросто влезть своими малокомпетентными ручками
  • Какие достоинства хранения шаблонов в БД?

    @stratosmi
    shmatuan,
    мб НЕ программным путём? (конструкторы всякие, например)

    Это как раз программным.