Я младший разработчик (~ 3 года опыта), и на моей работе мы находимся в процессе разработки новой системы. Мой ведущий разработчик будет главным архитектором, однако он бросил мне вызов попробовать самостоятельно спроектировать систему (параллельно).
В течение нескольких итераций мозгового штурма идей и предложения того, что я видел как предложения по архитектуре, мой руководитель дал мне обратную связь, что большая часть того, что я делал, было «проектированием», а не «архитектурой».
Он описал разницу как архитектуру, не зависящую от реализации, тогда как дизайн - это описание реализации. Он сказал, что мне нужно снять шляпу дизайнера и надеть шляпу архитектора. Он дал мне небольшой совет о том, как это сделать, но я также хотел бы спросить вас:
Как выйти из режима конструктора программного обеспечения и начать думать больше как архитектор?
Вот несколько примеров «дизайнов», которые я придумал, и которые не были сочтены актуальными для архитектуры:
- Я придумал алгоритм загрузки и выгрузки ресурсов из нашей системы, и мой руководитель сказал, что алгоритмы категорически не являются архитектурой.
- Я придумал ряд событий, которые должна вызывать система, и в каком порядке она должна их вызывать, но это тоже не выглядело как архитектура.
Кажется, я увлекаюсь деталями и не отступаю достаточно далеко. Я нахожу, что даже когда я придумываю что-то, что находится на уровне архитектуры, я часто добивался этого, пробуя различные реализации и изучая детали, затем обобщая и абстрагируя. Когда я описал это своему руководству, он сказал, что я выбрал неправильный подход: мне нужно было думать «сверху вниз», а не «снизу вверх».
Вот некоторые более конкретные детали о проекте :
- Проект, который мы проектируем, является веб-приложением.
- Я оцениваю около 10-100 тысяч строк кода.
- Мы начинаем. Наша инженерная команда составляет около 3-5 человек.
- Самое близкое, с чем я мог сравнить наше приложение - это легковесная CMS. Он имеет аналогичную сложность и имеет дело в основном с загрузкой и выгрузкой компонентов, управлением компоновкой и модулями в стиле плагинов.
- Приложение AJAX-Y. Пользователь загружает клиент один раз, а затем запрашивает данные, когда они ему нужны, с сервера.
- Мы будем использовать шаблон MVC.
- Приложение будет иметь аутентификацию.
- Мы не очень заботимся о поддержке старых браузеров (вот так!), Поэтому мы стремимся использовать новейшие и лучшие из них, которые будут и будут выходить. (HTML5, CSS3, WebGL ?, Расширения Media Source и многое другое!)
Вот некоторые цели проекта :
- Приложение должно масштабироваться. В ближайшем будущем число наших пользователей будет составлять от сотен до тысяч, но мы планируем от десятков тысяч до миллионов и более.
- Мы надеемся, что приложение будет вокруг навсегда. Это не временное решение. (На самом деле у нас уже есть временное решение, и то, что мы проектируем, является долгосрочной заменой того, что у нас есть).
- Приложение должно быть безопасным, так как оно может иметь контакт с конфиденциальной личной информацией.
- Приложение должно быть стабильным. (В идеале это было бы стабильно на уровне gmail, но это не обязательно должно быть на пределе марсохода.)