Я на півдорозі погоджуюся з «Одідом» - навчитися переконувати своїх нетехнічних колег та менеджерів у тому, що те, що ти робиш, важливо і корисно, не пояснюючи прискіпливих деталей, - необхідний навик, який ти би розумно розвивав.
Однак я вважаю, що вміння пояснювати складні поняття простими термінами насправді допомагає в цьому - одна проблема, яка часто не виникає у технічних менеджерів, полягає в тому, що оскільки у них виникають проблеми з розумінням того, чим саме займаються люди, вони мають тенденцію до довіряйте їм. Це просто людська природа: простіше повірити, що те, чого ти не розумієш, марне чи неправильне, ніж це вкласти свою віру в це. Тому, якщо ви можете зробити поняття легко зрозуміти за бажанням, ви можете використовувати це, коли вам це потрібно, і з часом ваші нетехнічні менеджери дізнаються, що вони можуть це зрозуміти, якщо хочуть - ви не перетягуєте його на них - ви просто щадите їм деталі для власної розумності. Вони вам більше довірять.
Що вбік, давайте відповімо на питання:
Мені корисно використовувати аналогії, які розуміють ділові люди. Для MVC я описую це як бізнес.
- Моделі відповідають за бізнес-логіку та дані - саме вони визначають те, що робить програма, та деталі того, як вона це робить. Якби програма була бізнесом, то моделями були б склади, фабрики, робітники та капітальне обладнання. Вони також будуть керівниками нижчого рівня, які забезпечують дотримання правил та дотримання політики.
- Перегляди - це презентаційний шар - вони показують користувачам, що відбувається в системі, і надають засоби для взаємодії з програмою. Якби наша програма була компанією, погляди були б схожі на підлогу шоу-руму, торговий майданчик на конвенції про торгівлю або представники продажів. Вони відображають варіанти, надають зручну для користувача інформацію та зворотній зв'язок та приймають запити до компанії.
- Контролери є координаційним шаром - вони забезпечують, щоб інформація надходила від моделей до поглядів і навпаки, і що все працює разом, щоб зробити свою роботу. Якби програма була компанією, то контролерами було б керівництво середнього та високого рівня. Вони не надто втягуються в деталі, але переконують, що у потрібних людей є правильні інструменти для виконання своєї роботи, і вони схвалюють або забороняють рішення на високому рівні. Вони забезпечують загальний напрямок, щоб справи могли працювати разом.
Користь пояснити це аналогією полягає в тому, що хороший менеджер побачить мудрість у розділенні проблем таким чином і може вирішити, що вони повинні бути більш контролерами, і не надто втягуватися в деталі в майбутньому!
Це, сподіваємось, відповість "що" - "чому" також легко за цією аналогією:
Уявіть собі ідеальну компанію, де кожен відділ відповідає за один набір завдань, і знає, що у неї завжди будуть необхідні ресурси, не турбуючись про те, що роблять інші. Торговий представник знаходить клієнта, отримує їх замовлення, передає його керівництву, яке схвалює, а потім відправляється на склад / виробництво / інженерію для виконання. Зворотній зв'язок прямий - нікому більше не потрібно вступати, якщо не виникає проблема. Це хороший дизайн MVC - у кожній частині є робота, і не потрібно турбуватися про інші частини. Таким чином, це легко змінити, якщо нам потрібно. У дизайні, що не належить до MVC, відповідальність не зрозуміла. Торговий представник може спробувати змінити товар, коли клієнт попросить щось інше. Або вони можуть давати різні ціни залежно від того, як вони почували себе в цей день. Генеральний директор може зійти на заводській підлозі, переплутавшись з виробничою лінією, коли йому слід переживати, як отримати надійнішу ланцюжок поставок. Складські працівники можуть бути на торговому майданчику, розмовляючи з клієнтами, коли вони повинні виконувати замовлення, які вже були прийняті.
Іншими словами, хороший дизайн MVC дозволяє кожній частині зосередитись на одному, щоб вона могла зробити це правильно - як добре організована компанія.
** Відмова від відповідальності - якщо ваша компанія погано організована, вони можуть цього образити. У такому випадку вам знадобиться ще одна аналогія. Також вам може знадобитися інша робота.