Я молодший розробник (~ 3 роки досвіду) і на своїй роботі ми працюємо над створенням нової системи. Мій головний розробник буде головним архітектором, однак він кидає виклик мені спробувати архітектуру самої системи (паралельно).
Протягом декількох ітерацій ідей мозкового штурму та пропозицій того, що я бачив як архітектурні пропозиції, моє керівництво дало мені відгук про те, що більшість того, що я робив, було "проектування", а не "архітектура".
Він описав різницю як архітектуру як реалізацію-агностику, тоді як дизайн - це опис реалізації. Він сказав, що мені потрібно зняти шапку дизайнера і надіти шапку архітектора. Він дав мені трохи поради, як це зробити, але я також хотів би попросити вас:
Як мені вийти з режиму дизайнера програмного забезпечення та почати думати як архітектор?
Ось кілька прикладів "дизайну", який я придумав, що моє керівництво не сприймалося як таке, що стосується архітектури:
- Я придумав алгоритм для завантаження та вивантаження ресурсів з нашої системи, і моя ведуча сказала, що алгоритми категорично не є архітектурою.
- Я придумав набір подій, які система повинна піднімати, і в якому порядку вона повинна їх піднімати, але це теж не здавалося, що це розглядає як архітектуру.
Я, здається, потрапляє в деталі і не відступає досить далеко. Я вважаю, що навіть коли я придумав щось, що є на архітектурному рівні, я часто потрапляв туди, випробовуючи різні реалізації та занурюючись у деталі, а потім узагальнюючи та абстрагуючи. Коли я описав це у своєму ведучому, він сказав, що я неправильно підходжу: мені потрібно думати «зверху вниз», а не «знизу вгору».
Ось кілька більш конкретних деталей щодо проекту :
- Проект, який ми архітуємо, - це веб-додаток.
- Я оцінюю близько 10-100 тисяч рядків коду.
- Ми старт. Наша інженерна команда - близько 3-5 осіб.
- Найближче, з чим я міг би порівняти наш додаток, - це легкий CMS. Він має подібну складність і багато в чому стосується завантаження та вивантаження компонентів, управління компонуванням та модулів стилю модулів.
- Додаток - ajax-y. Користувач завантажує клієнт один раз, а потім запитує дані, як йому потрібні, з сервера.
- Ми будемо використовувати шаблон MVC.
- У програмі буде автентифікація.
- Ми не дуже стурбовані старою підтримкою браузера (ось так!), Тому ми хочемо використовувати найновіше та найкраще, що є там і яке буде виходити. (HTML5, CSS3, WebGL ?, розширення медіа-джерела та багато іншого!)
Ось кілька цілей проекту :
- Додаток потрібно масштабувати. Найближчим часом наші користувачі будуть на замовлення від сотень до тисяч, але ми плануємо десятки тисяч мільйонів і більше.
- Ми сподіваємось, що додаток буде вічно. Це не тимчасове рішення. (Насправді у нас вже є тимчасове рішення, і те, що ми архітектуємо, - це довгострокова заміна того, що ми маємо).
- Додаток має бути захищеним, оскільки він може мати контакт з конфіденційною особистою інформацією.
- Додаток повинен бути стабільним. (В ідеалі, він буде стабільним на рівні gmail, але це не повинно бути на крайньому місці марсохода.)