در صنعت نرم افزار، مفهوم معماری کاملاً شناخته شده و به طور گسترده یی پذیرفته شده است، تا جایی که شرکت ها در فرآیندهای خود هر روز از معماران نرم افزار، بیشتر استفاده می کنند و به احتمال بسیار زیاد در حال حاضر حداقل یک معمار نرم افزار در شرکت شما یا در پروژه ای که روی آن کار می کنید، وجود دارد.
اما در حالی که ممکن است در مورد این نقش بدانید و با آن آشنایی داشته باشید، ممکن است تعجب کنید که بدانید هیچ تعریف استاندارد شده ی دقیقی از معنای معمار نرم افزار بودن وجود ندارد.
می توانید از 10 معمار نرم افزار در خصوص شرح کار و وظایف آنها بپرسید و 10 پاسخ مختلف دریافت کنید.
البته، این بدان معنی است که با توجه به حوزه کاری، پروژه هایی که روی آنها کار می کنند و حتی فرهنگ سازمانی هر شرکت، تفاوت زیادی در نقش معمار نرم افزار بین شرکت ها خواهید یافت.
اغلب افرادی را در ترکیبی از نقشها میبینید که ممکن است شامل مدیر، توسعهدهنده، مهندس یا مدیر پروژه باشند.
این سردرگمی فضایی برای تفسیر نادرست ایجاد میکند و باعث میشود بسیاری از افراد و شرکتها این ترکیبها را بهگونهای اتخاذ کنند که گویی واقعاً به نقش معمار نرمافزار تعلق دارند و جنبههای مهم نقش را کنار گذاشته و شیوههای بد را اتخاذ کنند.
اگرچه اغلب در عمل با آن مواجه میشویم، یک معمار نرم افزار، لزوما برنامه نویس ارشد نیست.
معمار شدن لزوماً سطح بعدی برای یک توسعه دهنده نیست، مهم نیست که چقدر در برنامه نویسی خوب هستید.
مهارتهای هر موقعیت بسیار متفاوت است و به راحتی میتوان این مورد را داشت که یک توسعهدهنده بزرگ در صورت نداشتن یا توسعه ندادن مهارتهای مناسب که فراتر از قابلیتهای فنی است، به یک معمار متوسط تبدیل شود.
معمار نرم افزار بودن نیز مترادف با پیشرو بودن در فناوری نیست.
اگرچه هر دو نقش استفاده از مهارت های نرم و رهبری مشترک دارند، تمرکز آنها بر زمینه های بسیار متفاوت است.
در حالی که یک رهبر فناوری باید بر بهبود تیم خود تمرکز کند، یک معمار تلاش خود را بر بهتر کردن محصول متمرکز می کند.
در این مرحله، بسیار واضح است که تعریف معماری نرم افزار دشوار است، شاید به این دلیل که این تعریف بر اساس فناوری های موجود و نیازهای مشتری دائما در حال تغییر است.
یک توصیف عالی برای معمار نرم افزار در سال 1990 عملاً هیچ ارتباطی با کاری که امروز انجام می دهد ندارد و اگر تعریف فعلی را در یک یا دو دهه آینده اعمال کنیم، به احتمال زیاد همین امر صادق خواهد بود.
به همین دلیل است که یکی از تعاریف مورد علاقه من از رالف جانسون، نویسنده یکی از محبوب ترین کتاب ها در زمینه طراحی الگوی نرم افزار است که در مهندسی و معماری باید بخوانید.
جانسون میگوید که معماری نرمافزار درباره چیزهای مهم است، هر چه که باشد، و او کاملاً درست میگوید، زیرا آنچه ما چیزهای مهم مینامیم، چیزهایی هستند که بسته به محیط، زمینه و منابع فناوری تغییر میکنند.
بر اساس این مفهوم، معماری تصمیماتی را در بر می گیرد که تأثیر و پیامدهای بلندمدتی بر یک نرم افزار دارد.
معمار علاوه بر داشتن چشم انداز عالی، نیاز به داشتن تخصص فنی و دانش بالایی همراه با مهارت های نرم، از جمله نفوذ، مشارکت و به ویژه رهبری دارد.