Андрій Новосьолов (andrzejn) wrote,
Андрій Новосьолов
andrzejn

Ответы на вопросы

Итак, ответы на программистские вопросы, которые я считаю правильными. Я постарался сформулировать их так, чтобы поняли непрограммисты.

1. Сложная форма ввода.
б) Лучше собрать все проверки и логику в одном месте и исполнять последовательно. Лучше делать на каждый чих сотни лишних проверок (которые пользователь всё равно не заметит), чем безуспешно искать ошибки и побочные эффекты в сотнях отдельных кусочков, которые связаны в неизвестном порядке.

2. Регулятор реактора.
б) Редкими коррекциями удерживать процесс в допустимой "зелёной зоне" куда лучше, чем непрерывно сражаться за недостижимый оптимум. Куда меньше износ аппаратуры и куда меньше шансов, что от непрерывной работы что-нибудь заглючит и поломается. А "зелёной зоны" субоптимальных результатов нам вполне достаточно.

3. Расчистка сомнительных мест.
а) Если есть время, любые проблемы лучше расследовать немедленно. Просто потому, что вы сейчас в контексте, помните все подробности и держите в голове все нужные модели. Если отложить разбирательство, потом потребуется куда больше времени на возврат к теме. Исправлять результаты расследования, кстати, можно и не немедленно, если окажется, что чинить придётся слишком сложные и отдалённые куски. Такой масштабный ремонт можно и отложить (записав все найденные подробности). Но перещупать подручные сомнения нужно сейчас, пока они под руками.

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

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

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

  • Как размножаются ёжики

    Приснился мне мир, в котором отношение людей друг к другу видно наглядно, поскольку все покрыты длинными крепкими острыми колючками. Если кто-то к…

  • Расширенная идентичность

    Намедни на супервизии родилась идея, как расширить одно из классических упражнений. На листе бумаги размечаем три колонки: "Кто я?", "Что я делаю?",…

  • Несколько более умные кликеры

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

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 21 comments

  • Как размножаются ёжики

    Приснился мне мир, в котором отношение людей друг к другу видно наглядно, поскольку все покрыты длинными крепкими острыми колючками. Если кто-то к…

  • Расширенная идентичность

    Намедни на супервизии родилась идея, как расширить одно из классических упражнений. На листе бумаги размечаем три колонки: "Кто я?", "Что я делаю?",…

  • Несколько более умные кликеры

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