بوتکمپ فناوریها، معماری و گسترش نرمافزار
یک مهندس نرمافزار در طول یک پروژه نرمافزاری چه تصمیماتی میگیره؟ به چه موضوعاتی توجه میکنه؟ از چه تکنولوژیهایی استفاده میکنه؟ چطوری میتونم به یه full-stack developer تبدیل بشم؟ اپلیکیشنهایی که به تعداد زیادی از مردم جهان سرویس میدن چطور زمان پاسخگویی رو پایین نگه میدارن؟ در این دوره با هم به پاسخ این سوالها و چندین سوال دیگه نزدیکتر میشیم.
See what a Software Architect can do

تاریخ شروع دوره
۶ مرداد ۱۴۰۱
تاریخ پایان دوره
۷ مهر ۱۴۰۱
روز برگزاری
پنجشنبه ها ساعت ۱۴ تا ۱۸
و
جمعهها ۱۳ تا ۱۷
مدت دوره
۳۶ ساعت
نوع برگزاری
کلاس درس و حل تمرین آنلاین
به همراه جلسات کامیونیتی ، گپ و گفت و رفع اشکال حضوری(اختیاری)
مربی های دوره

درباره دوره
در طراحی این دوره سعی شده حداقل پیشنیاز ممکن برای شرکت در این دوره نیاز باشه. اگه تا حالا یک برنامه به هر زبانی نوشتی و اجرا کردی، پیشنیازهای این دوره رو داری.
در این دوره به صورت کلی با مفاهیم مهندسی نرمافزار و چندین تکنیک و تکنولوژیهای مربوطه آشنا میشی و در طول این دوره تیمهای نرمافزاری تشکیل میشه و کار کردن با یک تیم کوچک نرمافزاری در یک محیط تعاملی و با هدف کامل کردن یک نرمافزار نسبتا پیچیده رو تمرین خواهی کرد.
جزبهجز نقشه راه دوره رو میتونی پایین مشاهده کنی. مشخصاً هر مهارتی رو فقط با تمرین کردن زیاد میشه یاد گرفت برای همین ما هم حواسمون به این نکته بوده و براتون ۱ پروژه مقدماتی و ۱ پروژه پایانی تعریف کردیم که حسابی به مسائل مسلط بشید و با چالش های این حوزه دستوپنجه نرم کنید. اما اصلا نگران نباشید چون اگر مشکلی یا ابهامی وجود داشت میتونید از مدرسان دوره و TAها بپرسید. ما تمام تلاشمون رو خواهیم کرد که سریع و موثر جوابگوی سوالات شما باشیم.
در پایان دوره هم کاری که توی تیم انجام دادی ارزیابی میشه که بر اساس اون مدرک دو زبانه معتبر اتمام دوره دریافت میکنی و تا یادم نرفته بگم که از افراد خفن این دوره هم دعوت به مصاحبه برای استخدام تو شرکت هرمس کپیتال به عمل میاد. و چی بهتر ازین؟ هم یاد بگیری و در انتها هم استخدام بشی 🙂
امکان استخدام پس از پایان دوره
اعطای مدرک در پایان دوره
ایجاد آمادگی برای ورود به صنعت نرمافزار
کلاس های رفع اشکال TA
پروژه پایانی برای مرور هرآنچه در دوره یاد گرفته اید
قابلیت دسترسی آفلاین به فیلم ها بعد از هر جلسه آنلاین
سرفصل دوره
جلسه صفر
آشنایی با روند دوره
- برگزارکنندگان دوره
- اهداف ما
- آنچه شما فرا خواهید گرفت
- برنامه درسی دوره
- پروژهها
آشنایی و نصب Clojure و leiningen
معرفی پروژه کوتاه
جلسه اول - حضوری
یک جلسه live coding از یک پروژه مثال در Clojure برای یادگیری
- پارادایم functional در برنامهنویسی Clojure
- تفکر ریاضی و pure functions
- Java inter-op و Reflection
- برنامهنویسی مدولار و componentها در Clojure
- ساخت سرور REST با استفاده از pedestal
- تامین نیازهای development با استفاده از Docker
- درسترسی به پایگاه داده با استفاده از JDBC
بررسی پیشرفت پروژه کوتاه، بازخورد و رفع اشکال
جلسه دوم
مفاهیم مقدماتی در تحلیل و طراحی نرمافزار
- مدلسازی زمان در منطق و تحلیل نرمافزار
- Replication و Consistency
- همزمانی (Concurrency) و مدلهای Consistency
- Inter-process/service communication
- REST
- Message Queue
- آشنایی اولیه با تکنولوژیهای Message Queue
- Apache Kafka
- RabbitMQ
- Total Ordering
- تضمینهای کیفی در پردازش صف (delivery guarantees)
پایان مهلت پروژه کوتاه
جلسه سوم - حضوری
جلسه live coding: گسترش مثال جلسه دوم
- مروری بر تکنولوژیهای بنیادی وب (HTML, CSS, …)
- آشنایی با Clojurescript و گسترش مثال live coding با افزودن front-end
- ارتباط سرویسها با استفاده از Apache Kafka
- آشنایی با یک مثال از نرمافزار صنعتی: چالشها و تفاوتها در deployment
معرفی پروژه پایانی و گروهبندی
جلسه چهارم
هماهنگی اجرا (Execution orchestration)
- معرفی core.async
- بررسی مفهوم CSP در core.async
- تکنولوژیهای مرتبط
- Ring buffer و LMAX Disruptor
- Apache Kafka
- RabbitMQ
- Hazelcast
- Storm
جلسه پنجم - حضوری
مثالهای پیشرفته در Clojure
- مثالهایی از core.async
- transducers
- آشنایی با Java inter-ops با مثال hermes-kafka
- گسترش مثال live coding
- نوشتن تست برای پروژه در حال گسترش
بررسی پیشرفت پروژه پایانی، بازخورد و رفع اشکال
جلسه ششم
مهندسی نرمافزار: در عمل
- اهداف طراحی و اولویتبندی نیازمندیها
- نیازمندیهای غیرعملکردی
- Scalability
- Recoverability
- Fault-tolerance
- اثر نیازمندیهای غیرعملکردی بر طراحی
- نیازمندیهای غیرعملکردی
- برنامهریزی و بهبود iterative
- Monitoring
- JVisualVM, Clj-Meter and Others
- Grafana و جمعآوری performance metrics
- ELK
جلسه هفتم
تکنولوژی و مدلهای منطقی در persistencec
- پایگاه داده
- SQL vs NOSQL
- مدلهای persistence
- Relational DB
- Document-based DB
- Temporal (and bi-temporal) DB
- Wide-column DB
- بررسی موردی
- postgres
- mongodb
- cassandra
جلسه هشتم
پارادایمها و روشهای آزمون و کنترل کیفیت در نرمافزار
- Unit testing
- Integration testing
- End-to-end testing
- Acceptance tests
- Scenario vs. property testing
- Generators
- Avoiding sparsity
- معرفی Jepsen
- Reliability testing
- Consistency testing
- Chaos testing
جمعبندی نهایی و بررسی پروژه پایانی، بازخورد و رفع اشکال
تحویل پروژه
مهلت نهایی تحویل پروژه پایانی
سوالات متداول
بله پس از اتمام هر جلسه آنلاین تا ۲ ساعت پس از آن ویدیو جلسات بر روی نرم افزار Spot Player قابل مشاهده میباشد.
تنها پیشنیاز این دوره آشنایی مقدماتی با برنامهنویسی میباشد. سایر مفاهیم در صورت نیاز در طول دوره مرور خواهد شد.
خیر، تا زمانی که حداقل نمره قبولی را از پروژه پایانی کسب نکنید، با عرض شرمندگی گواهی برای شما صادر نمیشود 🙂
بله، پس از صدور گواهی دیجیتال، میتونید با پشتیبانی دوره تماس برقرار کنید و درخواست گواهی فیزیکی بکنید.
بله، ولی اگر قول بدهید که پروژهها رو انجام بدید 🙂 البته حواستون باشه بهترین نوع یادگیری، یادگیری تعاملی همراه با پرسش و پاسخ هست و قطعا صرف فیلم دیدن این هدف رو برآورده نمیکنه.
مخاطبین این دوره علاقهمندان به متدها و فناوریهای نرمافزار، مدیران و کارشناسان فنی واحدهای سازمانی، مدیران کسب و کار، و از همه مهمتر دانشجویان عزیز هستند که با هر پیشزمینه ای و تنها با علاقه و پشتکار میتونند نهایت استفاده از این دوره را ببرند.
بله، در ابتدای دوره گروهی تشکیل خواهد شد که هم دانشجویان و هم اساتید در آن حضور دارند. از طرفی سعی بر این داریم که جلسات گپ و گفت را حضوری برگزار کنیم که هم ما شما رو بهتر بشناسیم و هم شما همدیگر رو 🙂
با پشتیبانی تماس بگیرید، سعی میکنیم تا حد امکان شرایط خوبی را برای همه فراهم کنیم 🙂
بله، برنامه های زیادی برای ملاقات شما در دورههای بعدی داریم، که بزودی اعلام میکنیم.