معماری نرمافزار در گذر زمان
دنیایی که نرمافزار در آن زندگی میکند هرگز ثابت نیست، به همین دلیل معماری نیز باید یک فعالیت مستمر، ادامهدار و تکاملی باشد. این دوره بررسی میکند که چه اقداماتی لازم است تا معماری یک سیستم نرمافزاری با تغییرات پیرامون خود همراه شود و همزمان در طول زمان منسجم بماند.
معماری نرمافزار در گذر زمان
زمان سنگ محک هر سیستم نرمافزاری است. گذر زمان، خواستههای جدید بازار و انتظارات تازهی کاربران را به همراه میآورد. از طرفی، ما همیشه سیستمها را زیر فشار Deadlineها، با دانشی محدود از مسئله و در مواجهه با آیندهای نامطمئن طراحی میکنیم. راهکارهای امروز ما، در واقع بهترین پاسخِ ما بر اساس دانستهها و محدودیتهای امروز هستند. اما فردا که شرایط و نیازها تغییر میکنند، آن پاسخهای دیروز در ساختار سیستم تثبیت شدهاند و در برابر تغییر مقاومت میکنند.
مرز میان سیستمی که با تغییرات سازگار میشود و سیستمی که در ساختارهای قدیمی گرفتار میشود کجاست، و چه چیزی مسیر آن را تعیین میکند؟
چرا انحرافهای کوچک بهمرور عادی میشوند، و چگونه میتوان آنها را قبل از دیر شدن دید؟
چگونه میتوان تشخیص داد یک تصمیم معماری هنوز یک نیاز واقعی است، یا فقط از گذشته بهجا مانده است؟
چگونه میتوان یک تغییر بزرگ را به گامهای کوچک، قابلسنجش و برگشتپذیر تبدیل کرد؟
این دوره چه مباحثی را پوشش میدهد؟
هر سیستمی در طول زمان دچار انحراف میشود. این انحراف را باید در طول مسیر دید و اصلاح کرد. این بخش از دوره درباره چگونگی تغییر نرمافزار در طول زمان است: اینکه چگونه تصمیمات کوچک روی هم انباشته میشوند و محدودیتهای یک سیستم را شکل میدهند، چگونه مسیری که تا به حال طی کردهاید به آرامی راههای پیش رویتان را محدود میکند، و چگونه انتخابهای امروز، گزینههای فردا را تعریف میکنند.
وقتی محدودیتهای مختلف (زمان، بودجه، دانش، عدم قطعیت) بهطور مداوم سیستم را به سمتوسوهای متفاوتی میکشانند، حفظ انسجام درونی آن چگونه ممکن است؟ چالش بسیاری از تیمها رسیدن به یک طراحی منسجم نیست، بلکه حفظ این انسجام در طول زمان است. نرمافزار برای آنکه مفید باقی بماند، ناگزیر باید تغییر کند و از سوی دیگر هر تغییری با ریسک از دست رفتن انسجام داخلی همراه است. این بخش به این مسئله میپردازد که طراحی چگونه میتواند پیوسته تکامل پیدا کند، بیآنکه یکپارچی و انسجام درونیاش قربانی تغییر شود.
عمده تیمها امکان متوقف کردن جریان توسعه فعلی و شروع یک مسیر جدید را ندارند. سیستم باید تا جای ممکن به کار خود ادامه دهد، حتی اگر شما در حال اعمال بهبودهای ساختاری و یا بازطراحیهای بزرگ باشید. این بخش از دوره به این میپردازد که چگونه میتوان سیستم را با تغییرات کوچک و مداوم پیش برد، بهگونهای که در هر گام بتوان مسیر حرکت آن را ارزیابی و در صورت نیاز اصلاح کرد.
سیستمها به طور پیوسته در حال ارسال سیگنال از سلامت و مسیر حرکت خود هستند. اما بیشتر این سیگنالها تا زمانی که مشکلی جدی رخ ندهد، نادیده گرفته میشوند. این بخش از دوره به این میپردازد که چگونه میتوان انحرافات تدریجی یک سیستم را پیش از آنکه به بحران تبدیل شوند، تشخیص داد.
نرمافزار در بستر یک کسبوکار فعالیت میکند که پیوسته در حال تغییر است. کسبوکار میتواند در مدت کوتاهی مسیر خود را تغییر دهد، اما سیستمهای نرمافزاری معمولا نمیتوانند با همان سرعت تغییر کنند. این تفاوت سرعت، منشا بسیاری از چالشهای معماری است. از سوی دیگر هر تصمیم معماری در واقع یک تصمیم اقتصادی است: انتخابی میان هزینههای امروز و تاثیری که بر توانایی سیستم در آینده خواهد داشت. این محاسبه با گذر زمان و تغییر شرایط کسبوکار همواره نیازمند بازنگری است.
سیستمها بازتابی از انسانهایی هستند که آنها را میسازند و انسانها هرگز ثابت نمیمانند. تیمها شکل میگیرند و از هم میپاشند، مالکیت جابهجا میشود، و کسانی که دلیلِ اصلیِ شکلگیری یک طراحی را میدانستند، در نهایت میروند و آن فهم را با خود میبرند. سیستم، تیمها و انسانها هرکدام مسیر تکامل خود را با سرعت و دینامیک متفاوتی طی میکنند. اصطکاکی که از این ناهماهنگی به وجود میآید، همراه با تغییر مسئولیتها و محو شدن نیتهای اولیه، به اندازه هر عامل فنی دیگری، بر معماری سیستم اثر میگذارد. این بخش از دوره دربارهی همین نیروی انسانی در معماری است: اینکه چگونه ساختار سیستم و ساختار سازمانِ آن، در طول زمان پیوسته روی یکدیگر تأثیر میگذارند و یکدیگر را بازتعریف میکنند.
نسبت این دوره با AI و تغییرات نوظهور این حوزه
دورهای که تمام حرفش این است که معماری باید همگام با تغییرات پیرامونش پیش برود، نمیتواند تحولات AI را نادیده بگیرد. ظهور agentها سریعترین تغییراتی هستند که این روزها بر نحوه توسعه نرمافزار تاثیر میگذارند. اما ما هم مثل شما در میان همین تغییر ایستادهایم. بنابراین نمیتوان پاسخهای قطعی یا نسخههای آماده ارائه کرد. این موضوع را همانطور که خودمان تجربهاش میکنیم، در طول دوره و در کنار هم دنبال میکنیم.
پرسش اصلی ما این است: مباحثی که در این دوره دنبال میکنیم، با تحولات AI چگونه تحتتاثیر قرار میگیرند؟
وقتی تولید کد ارزان میشود، مرز میان «بازنویسی» و «تکامل تدریجی» کجا جابهجا میشود؟
وقتی بخش بزرگی از کد را coding agentها مینویسند، فهم مشترک از سیستم چه سرنوشتی پیدا میکند؟
وقتی کد با سرعتی چند برابر رشد میکند، انحراف معماری را چطور میتوان بهموقع دید؟
و پرسشهایی از این دست
همچنین، مدیریت دانش و کار عملی دوره را با کمک AI پیش میبریم
هر چه در طول دوره با هم یاد میگیریم در قالب یک LLM Wiki مشترک جمع میشود. مانند منابع دوره، خلاصه جلسات، نکات و ... . میتوانید از آن سوال بپرسید و همانجا پاسخ بگیرید. همه در طول دوره به آن دسترسی دارند و کمکم با هم کاملش میکنیم.
در دورههای قبلی، برای جلو بردن زمان و نشان دادن مراحل مختلفِ تغییر یک سیستم، از branchهای جدا برای هر مرحله استفاده میکردیم. این بار، حداقل بخشی از این مراحل را با coding agentها پیش میبریم تا ببینیم هر تغییر واقعا در عمل چطور اتفاق میافتد و به چه ملاحظاتی نیاز دارد.
این دوره برای چه کسانی مناسب است؟
- ✓ معماران نرمافزاری که با اصول طراحی سیستمها آشنا هستند، اما نمیتوانند آن را در طول زمان زنده و منسجم نگه دارند
- ✓ راهبران فنی و مهندسان ارشد (Tech Lead، Principal Engineer و نقشهای مشابه) که هر روز انحراف تدریجی معماری سیستم را حس میکنند، اما چارچوبی برای درک آن و اقدام برای اصلاح مسیر ندارند
- ✓ مدیران فنی (Engineering Manager، CTO و نقشهای مشابه) که میخواهند فرآیند تصمیمگیری معماری و اجرای آن، همزمان با رشد تیم و سیستم، مقیاسپذیر باقی بماند
- ✓ افرادی که دورههای قبلی مسیر معماری را گذراندهاند و دنبال گام بعدی در این مسیر هستند
برای شرکت در این دوره چه پیشنیازهایی لازم است؟
- → آشنایی با اصول و مبانی معماری نرمافزار و طراحی سیستمها، از طریق دورههای پیشین مسیر معماری یا مطالعهی شخصی.
- → تجربهی عملی در طراحی یا نگهداری معماری یک سیستم واقعی - بهعنوان تصمیمگیرنده یا تجربه در کنار فردی که این مسئولیت را داشته است.
این دوره برای شما مناسب نیست اگر...
اگر انتظار دارید قدمبهقدم با کد جلو بروید، این دوره انتخاب مناسبی نیست. تمرکز ما روی تفکر معماری است.
اگر نشستن در جلسات تحلیلی و مفهومی و بدون پاسخهای قطعی برایتان سخت است، این دوره از همان هفته اول تجربهای دشوار خواهد بود.
اگر انتظار دارید در پایان این دوره یک چکلیست از Best Practice داشته باشید، احتمالا ناامید خواهید شد.
اگر هنوز تجربه کار با سیستمی را نداشتهاید که با گذشت زمان آنقدر پیچیده شده باشد که هر تغییری در آن پرهزینه و دردسرساز شود، این دوره برایتان بیش از حد تئوری و انتزاعی به نظر خواهد رسید.
اگر صرفا در حال جمعکردن مدرک و Certificate هستید، گزینههای سریعتر و ارزانتری وجود دارد.
آنچه در این دوره یاد میگیرید
تغییرات ساختاری بزرگ را بدون توقف جریان توسعه، با گامهای کوچک، قابلبازگشت و قابلارزیابی بر روی سیستم اعمال کنید.
انسجام طراحی را در طول تغییرات مداوم حفظ کنید.
نشانههای انحراف تدریجی سیستم را پیش از بحرانیشدن ببینید.
دینامیک تغییر در سیستمهای نرمافزاری را بشناسید و تحلیل کنید.
سرمایهگذاری معماری را به زبان کسبوکار توجیه و در طول زمان بازبینی کنید.
دانش معماری را به فهمی مشترک و ماندگار در تیم تبدیل کنید.
شرکت در دوره
مفاهیم، مبانی و چارچوب فکریِ معماری در گذر زمان
بهکارگیری مستقیم آموختهها روی یک سیستم واقعی
اگر قصد ثبتنام داری، بهتره قبلش بدونی اگر وسط دوره شرایط سختی مثل جنگ یا قطعی اینترنت پیش بیاد، برنامه ما چیه. این صفحه رو برای همین نوشتم.
هنوز سوالی داری؟
پاسخ بیشترِ پرسشهای رایج را در صفحهی سوالات متداول جمع کردهایم. اگر باز هم ابهامی مانده، مستقیم با من در تماس باش.