CodeStar

رویارویی با چالش‌های دنیای
صنعت در محیطی حرفه‌ای

هدف ما در بوت‌کمپ، معرفی و عمیق‌شدن در تکنولوژی‌ها، اصول و استانداردهای به‌روز دنیاست که برای رسیدن به این هدف سعی می‌کنیم از مسائل و چالش‌های واقعی صنعت استفاده کنیم و به حل آن‌ها بپردازیم.
بوت‌کمپ کداستار کاملا رایگان است و هدف از برگزاری آن، بالابردن مهارت‌های نرم و سخت دانشجویان ایران‌زمین می‌باشد.

ثبت نام

نقشه راه

  • آزمون ورودی دوره فرانت‌اند

    این مسابقه از ساعت ۱۰ روز جمعه ۴ خرداد شروع می‌شود و به مدت ۵ ساعت ادامه خواهد داشت و در مجموع شامل ۵ سوال است که سطح آن‌ها از آسان به سخت متفاوت خواهد بود. برای حل سوالات باید به HTML ،CSS و JavaScript مسلط باشید به طوری که سوال اول و دوم مربوط به JavaScript است و حل ۳ سوال آخر به دانش HTML و CSS نیازمند است.

    برای حل سوالات JavaScript نیازی به تسلط بر روی Frameworkهایی مانند React و Angular نیست و صرفا دانش JavaScript پایه کافی می‌باشد.

    4
    خرداد
  • آزمون ورودی دوره دوآپس

    این مسابقه از ساعت ۱۰ روز جمعه ۴ خرداد شروع می‌شود و به مدت ۵ ساعت ادامه خواهد داشت و در مجموع شامل ۵ سوال است که سطح آن‌ها از آسان به سخت متفاوت خواهد بود.

    برای حل سوالات باید به یک زبان برنامه نویسی از بین C#, Java, Python, JavaScript یا Go و ساخت API و ارسال و دریافت درخواست‌های REST با استفاده از آن مسلط بوده و با اسکریپت نویسی Bash و ابزار Docker آشنا باشید.

    4
    خرداد
  • آزمون ورودی دوره مهندسی نرم‌افزار

    این مسابقه از ساعت ۱۶ روز جمعه ۴ خرداد شروع می‌شود و به مدت ۵ ساعت ادامه خواهد داشت و در مجموع شامل ۵ سوال است که سطح آن‌ها از آسان به سخت متفاوت خواهد بود به طوری که ۳ سوال اول الگوریتمی هستند و ۲ سوال آخر پیاده‌سازی می‌باشند. برای حل سوالات الگوریتمی می‌توانید از زبان‌های Python ،Java ،#C و یا ++C استفاده‌کنید؛ اما سوالات پیاده‌سازی را فقط می‌توانید با Java ،#C و یا ++C حل کنید.

    سوالات به گونه‌ای تنظیم شده‌اند که با توجه به دانشی که دارید بتوانید بخشی از نمرۀ سوال را بگیرید. به عنوان مثال اگر نتوانید سوال ۳ را به طور کامل حل کنید، این امکان وجود دارد که بتوانید بخشی از سوال ۴ را حل کنید؛ بنابراین حتما به تمام سوالات مراجعه کنید.

    4
    خرداد
  • شروع مصاحبه

    بعد از اتمام آزمون‌های ورودی، برای هماهنگی تاریخ و ساعت مصاحبه با نفرات برتر تماس گرفته می‌شود.

    هر مصاحبه از دو قسمت مهارت‌های نرم و فنی تشکیل می‌شود.

    هفته دوم
    خرداد
  • اعلام نتایج نهایی

    بعد از اتمام مصاحبه، به تمام متقاضیانی که به مصاحبه دعوت شده بودند، چه به عنوان کارآموز قبول شده باشند و چه نشده باشند، پیام می‌دهیم و آن‌ها را از نتیجه باخبر می‌کنیم.

    اواخر
    تیر
  • مرحله اول کارآموزی

    هدف از این مرحله، آشنایی منتورها و کارآموزها با یکدیگر است. همچنین آموزش‌ها از همان روز اول در اختیار کارآموزان قرار می‌گیرد.

    برای گذراندن دوره، برنامه‌ای مدون از قبل تهیه شده است و انتظار می‌رود کارآموزان همراه با آن پیش بروند.

    در هر مرحله فهرستی از کارهایی که کارآموزان باید انجام دهند به آن‌ها داده می‌شود و در پایان آن مرحله، با کارآموزانی که نتوانند حداقل امتیاز را کسب کنند خداحافظی می‌کنیم.

    البته انتظار نداریم تمام کارآموزان بتوانند نمرۀ کاملی از هر مرحله کسب کنند، بلکه انتظار داریم امتیاز آن‌ها از حدی بالاتر باشد که دستیابی به آن آسان است.

    هفته اول
    مرداد
  • مرحله دوم کارآموزی

    با اتمام مرحله اول، سطح علمی کارآموزها از حد مورد نظر بالاتر رفته است؛ بنابراین می‌توانیم آموزش‌های نیمه‌پیشرفته را شروع کنیم و آن‌ها را با چالش‌های بیشتری روبه‌رو کنیم.

    در مرحله اول، کارآموزان پروژه‌های کوچکی انجام می‌دهند تا مطالبی که یاد می‌گیرند را در عمل نیز ببینند؛ اما در این مرحله، سطح آموزش‌ها و همچنین سطح پروژه‌ها پیشرفته‌تر از مرحلۀ قبل است و برای انجام آن‌ها نیاز به وقت و انرژی بیشتری دارند.

    هفته دوم
    مرداد
  • مرحله سوم کارآموزی

    پس از اتمام مراحل آموزشی کارآموزی، به آخرین مرحله یعنی پروژۀ پایانی می‌رسیم. در این مرحله کارآموزهای فرانت‌اند و مهندسی نرم‌افزار با هم ادغام می‌شوند و گروه‌های بزرگ‌تری را تشکیل می‌دهند تا بتوانند یک پروژۀ صنعتی را پیاده‌سازی کنند.

    تمام برنامه‌ریزی‌ها و تقسیم‌بندی کارها به خودِ کارآموزها سپرده می‌شود و انتظار می‌رود با توجه به مهارت‌های نرمی که تا کنون یاد گرفته‌اند بتوانند این چالش را با موفقیت پشت سر بگذارند. البته در طی این مدت، منتورها حضور دارند و در صورت نیاز کارآموزها می‌توانند از کمک آن‌ها استفاده کنند.

    هفته سوم
    مرداد
  • پایان کارآموزی

    در انتهای دوره، کارآموزها نتیجۀ زحمات خود را در جلسه‌ای با بقیه به اشتراک می‌گذارند. در این جلسه تمام افراد دخیل در کارآموزی اعم از مدیران، منتورها و کارآموزهای دوره‌های فرانت‌اند و مهندسی نرم‌افزار حضور خواهند داشت.

    همچنین پس از پایان کارآموزی، از افراد برتر دعوت می‌کنیم تا در ادامۀ راه همراه ما باشند.

    هفته دوم
    شهریور

محتوای دوره فرانت‌اند

  • Advanced HTML

    قطعاً تمام کارآموزها با HTML تا اندازۀ خیلی خوبی آشنا هستند؛ اما متاسفانه کمتر پیش می‌آید که کسی به دنبال مباحث پیشرفتۀ HTML برود و این زبان را آن‌طور که بایدوشاید یاد بگیرد.

    در این بخش مباحثی مانند استفادۀ درست از تگ‌های معنایی، استفادۀ صحیح از عکس‌ها، پشتیبانی از قالب‌های رنگی و زبان‌های متفاوت، جلوگیری از تغییر چیدمان صفحه، و بهبود دسترسی‌پذیری را به کارآموزها آموزش می‌دهیم.

  • Advanced CSS

    یکی از ترسناک‌ترین زبان‌های دنیا CSS است و اکثر افراد به همین دلیل از آن متنفرند. این موضوع باعث می‌شود اهمیت و قدرت این زبان ناشناخته باقی بماند.

    ما در ابتدا سعی می‌کنیم برخی از ایرادات و سوءتفاهم‌های احتمالی کارآموزها را در مورد CSS مرتفع کنیم و بعد به آن‌ها ویژگی‌های منحصربه‌فردی که باعث شده‌اند این زبان یکی از خاص‌ترین زبان‌های دنیا شود را آموزش دهیم.

  • npm

    کمتر کسی است که با npm آشنا نباشد. این ابزار در کوچک‌ترین پروژه‌ها مانند وبسایت‌های شخصی تا بزرگ‌ترین پروژه‌ها مانند پروژه‌های صنعتی، استفاده می‌شود و ما هم برای ادامۀ دوره و بالابردن سطح آموزش‌ها به آن احتیاج خواهیم داشت.

  • Sass

    در پروژه‌های کوچک معمولاً کمبودی برای CSS احساس نمی‌شود و تمام نیازهای توسعه‌دهنده را برطرف می‌کند؛ اما با رشد پروژه‌ها و نزدیک‌شدن به دنیای صنعت، قطعاً به یک Preprocessor مانند Sass احتیاج پیدا خواهید کرد تا بتوانید سرعت و راحتی توسعه را بالاتر ببرید.

    ما برای شروع فرض می‌کنیم کارآموزها قبلاً از Sass استفاده نکرده‌اند و این ابزار را از صفر به آن‌ها آموزش می‌دهیم. سپس به سراغ ویژگی‌های کاربردی آن مانند لیست‌ها، شرط‌ها، حلقه‌ها و توابع می‌رویم.

  • Advanced JavaScript

    ممکن است بعضاً از دیگران شنیده باشید یا حتی خودتان هم نظرتان این باشد که JavaScript زبانی بی‌قاعده است و در شرایط یکسان، نسبت به زبان‌های دیگر خروجی غیرمنتظره‌ای را تولید می‌کند.

    ما در ابتدا سعی می‌کنیم سوءتفاهم‌های احتمالی کارآموزها را برطرف کنیم و توضیح دهیم که رفتار بعضاً عجیب JavaScript در کجا ریشه دارد؛ سپس به سراغ مباحث پیشرفته‌تری مانند مدیریت اطلاعات در سمت کلاینت، برنامه‌نویسی ناهمگام، ارسال درخواست به APIها و مدیریت تاریخچۀ مرورگر می‌رویم.

    همچنین در این بخش، نحوۀ درست نوشتن کد تمیز، پیداکردن کد کثیف، بازنویسی کدهای قدیمی و اصولی مانند SOLID را به کارآموزها آموزش می‌دهیم.

  • UI/UX

    لزوماً هر توسعه‌دهنده‌ای، طراح UI/UX نیست، اما فراگیری این دانش قطعاً به تمام توسعه‌دهنده‌ها کمک می‌کند تا وبسایتی طراحی کنند که هم از نظر جلوه‌های بصری و هم از لحاظ تجربۀ کاربری به اوج خود برسد.

    مباحث مربوط به این بخش را از صفر به کارآموزها آموزش می‌دهیم و سعی می‌کنیم آن‌ها را با تمام اصول پایه مانند رعایت تضاد رنگی، ترازکردن المان‌ها، فضای تنفس و تایپوگرافی آشنا کنیم.

  • Angular

    خوشبختانه برای طراحی سایت، کتابخانه‌ها و Frameworkها متعددی وجود دارد که هر کس برحسب نیاز خود می‌تواند یکی از آن‌ها را انتخاب کند.

    در پروژه‌های کوچک ابزارهایی مانند Svelte و Vue بسیار راهگشا هستند چراکه یادگیری آن‌ها ساده است و از حجم کمی برخوردار هستند؛ در پروژه‌های متوسط و کمی بزرگ‌تر به ابزاری مانند React احتیاج پیدا می‌کنیم که بتواند مجموعه‌ای از کتابخانه‌های مختلف را در کنار هم جمع کند و در اختیار توسعه‌دهنده قرار دهد؛ اما در پروژه‌های بزرگ و صنعتی، بعید است ابزاری به قدرتمندی Angular بتوان پیدا کرد.

    Angular تنها یک کتابخانه نیست، بلکه یک Framework است که برای تمام نیازهای شما یک راه‌حل از قبل تهیه کرده. با اینکه یادگیری Angular نسبت به ابزارهایی که در بالا از آن‌ها یاد کردیم سخت‌تر است، اما به مرور زمان قطعاً متوجه قدرت آن خواهید شد و از وقتی که گذاشتید احساس رضایت خواهید کرد.

محتوای دوره مهندسی نرم‌افزار

  • C#

    امروزه زبان‌های برنامه‌نویسی بسیار زیادی وجود دارند که هرکدام کاربرد خاص خود را دارند؛ در این بین زبان #C به دلیل ساختار شیءگرا و امکانات متعددش گزینۀ مطلوبی برای توسعۀ نرم‌افزارهای بزرگ و پیچیده است.

    با توجه به آنکه ما در کداستار توجه ویژه‌ای به دنیای صنعت و پروژه‌های بزرگ داریم، تمام محتوای کارآموزی با این زبان سازگار هستند و در مرحلۀ اول دوره، آخرین نسخۀ ارائه‌شده از این زبان را به کارآموزها آموزش می‌دهیم.

  • NuGet

    مهندسین نرم‌افزار معمولاً به‌دنبال اختراع چرخ از اول نیستند و خیلی اوقات از کدهای آماده برای حل نیازهای خود استفاده می‌کنند. NuGet یک ابزار مدیریت پکیج است که برای اضافه‌کردن کتابخانه‌های #C به نرم‌افزار مورد استفاده قرار می‌گیرد.

    در کنار استفاده از NuGet برای دسترسی به کتابخانه‌های آماده، کارآموزها یاد خواهند گرفت چگونه پکیج شخصی خود را بسازند و آن را توسط NuGet منتشر کنند.

  • xUnit.net

    یکی از کارهایی که باعث می‌شود کیفیت کدهای نوشته‌شده افزایش پیدا کند و با خطای کمتری به دست کاربر برسد، آزمودن آن‌ها است که به شکل‌های مختلفی قابل انجام است و یکی از انواع آن، Unit Testing می‌باشد.

    xUnit یک کتابخانۀ محبوب و مدرن برای نوشتن این نوع تست در زبان #C می‌باشد که ما در کداستار از آن استفاده خواهیم کرد؛ همچنین به دلیل اهمیت موضوع تست‌نویسی، دربارۀ فلسفه، انواع و نحوۀ نگارش تست‌ها نیز صحبت خواهیم کرد.

  • PostgreSQL

    اکثر نرم‌افزارها به محلی برای نگهداری دادها نیاز دارند که این نیاز را به‌وسیلۀ پایگاه‌های داده پاسخ می‌دهند. امروزه پایگاه‌های داده، شامل انواع متعددی هستند که هر کدام کاربرد خاص خود را دارند.

    PostgreSQL یک پایگاهِ دادۀ رابطه‌ایِ رایگان و محبوب است که برای خیلی از کارهای عمومی کاربرد دارد. ما در کداستار کار با این پایگاه‌داده را به کارآموزها آموزش خواهیم داد.

  • Entity Framework Core

    به دلیل تنوع پایگاه‌های داده و تفاوت‌هایی که در استفاده از آن‌ها وجود دارد، معمولاً کتابخانه‌هایی به نام Object–Relational Mapping یا به اختصار ORM برای کار با آن‌ها توسعه داده می‌شوند که پیچیدگی این فرایند را کمتر کنند.

    Entity Framework Core یا به اختصار EF Core یکی از محبوب‌ترین ORMهای زبان #C است که ما در کداستار استفاده از آن را به کارآموزها آموزش خواهیم داد.

  • ASP.NET Core

    با افزایش محبوبیت نرم‌افزار‌های مبتنی بر وب و گسترش کاربرد آن‌ها، Frameworkهایی برای طراحی این نوع نرم‌افزارها به وجود آمدند که با تجمیع کتابخانه‌ها و امکانات مورد نیاز برای توسعه و ایجاد یک چارچوب مشخص برای این کار، باعث شده‌اند این عملیات بسیار ساده شود.

    ASP.NET Core چارچوبی است که مایکروسافت برای توسعۀ نرم‌افزارهای مبتنی بر وب به زبان #C طراحی کرده است و ما در کداستار به طور مفصل در مورد آن صحبت خواهیم کرد و طی چند پروژۀ عملی سعی می‌کنیم تمام مفاهیم مهم مربوط به آن را به کارآموزها آموزش دهیم.

محتوای دوره دوآپس

  • Linux

    نرم‌افزارهای ما برای اجرا نیاز به محیطی مناسب دارند. اکثر سرورهای دنیا از سیستم‌عامل لینوکس برای فراهم کردن این محیط استفاده می‌کنند و به همین خاطر شناخت این سیستم‌عامل برای یک متخصص دوآپس اهمیت بالایی دارد.

  • Computer Networks

    نرم‌افزارهای پر استفاده معمولا از طریق اینترنت به دست کاربران می‌رسند. با توجه به تعداد بالای کاربران این نرم‌افزارها و حجم زیاد داده‌ای که هر روزه بین کلاینت‌ها و سرورهای نرم‌افزارها جابه‌جا می‌شود، شناخت و توانایی بهبود شبکه‌های بین آن‌ها یکی از مهارت‌های مورد نیاز یک متخصص دوآپس است.

  • file_type_nginx

    Nginx

    برای رساندن محتواهای نرم‌افزارها به کاربران، نیاز به نرم‌افزاری داریم که این کار را به صورت سریع و مدیریت شده برای ما انجام دهد. نرم‌افزار Nginx یکی از ابزارهایی است که برای این کار استفاده می‌شود.

  • file_type_go

    Go

    توانایی ساخت و توسعه ابزارهای شخصی‌سازی شده، یکی از مهم‌ترین توانایی‌های یک متخصص دوآپس است. در کداستار با زبان گو که یکی از زبان‌های پرطرفدار در جامعه دوآپس است اشنا می‌شویم و با آن ابزارهای ساده می‌سازیم.

  • Containerization

    یکی از پیچیده‌ترین و پر خطاترین کارهایی که در طول مسیر تولید نرم‌افزارها انجام می‌شود، فرایند بیلد و استقرار آن‌ها است. تکنولوژی‌های کانتینری‌سازی به ما اجازه می‌دهند نرم‌افزارهای خود را در محیطی ایزوله و تکرارپذیر ساخته و بر روی سرورهای خود مستقر کنیم.

  • Ansible

    با افزایش تعداد سرورهایی که یک نرم‌افزار خاص بر روی آن‌ها اجرا می‌شود، به ابزاری نیاز پیدا می‌کنیم که تغییرات پیکربندی این سرورها را اتوماتیک کند. ابزار Ansible به ما اجازه می‌دهد با نوشتن دستورات در قالب کد، آن‌ها را بر روی سرورهای مختلف اجرا و مدیریت کنیم.

  • GitHub Actions icon

    CI/CD

    با گذشت زمان و بزرگ‌شدن پروژه، تعداد برنامه‌نویسان و کدی که باید توسعه داده شود، بیشتر می‌شود؛ ازاین‌رو بهتر است ابزاری در اختیار داشته باشیم که عملیات تست‌نویسی، چک‌کردن تمیزی کد، بررسی نسخۀ کتابخانه‌های مورد استفاده و پیداکردن نقاط ضعف آن‌ها را به صورت خودکار انجام دهد. به چنین کاری Continuous Integration یا به اختصار CI گفته می‌شود. پس از آنکه از صحت اجرای کدهای خود مطمئن شدیم، نوبت به مستقرکردن آن می‌رسد. اگر تعداد توسعه‌دهندگان یا سرعت توسعه بالا باشد، این کار به‌شدت خسته‌کننده خواهد بود؛ به همین جهت از ابزاری استفاده می‌کنیم که این عملیات را برایمان ساده کند. به چنین کاری Continuous Deployment یا به اختصار CD گفته می‌شود. ما در کداستار برای انجام عملیات‌های مربوط به CI و CD، از GitHub Actions استفاده می‌کنیم.

  • OpenTelemetry

    عیب‌یابی نرم‌افزارها در زمان کارکرد آن‌ها و شناخت نقاط نابهینه آن‌ها برای افزایش سرعت، اهمیت زیادی دارد. یکی از استانداردهایی که برای انجام ساده‌تر این کار توسعه داده شده OpenTelemetry است. در کداستار یاد می‌گیریم چگونه با ابزارهای Prometheus, Grafana, ELK و Jaeger داده‌های خروجی با این استاندارد را دریافت، پردازش و برای تصمیم‌گیری از آن‌ها استفاده کنیم.

مفاهیم مشترک دوره‌ها

  • SOLID Principles

    اصول SOLID یکی از معروف‌ترین و پرکاربردترین اصول مربوط به تمیزی کد است. SOLID از 5 اصل تشکیل شده و با رعایت آن‌ها می‌توان به کدی دست پیدا کرد که هم از نظر خوانایی و توسعه‌پذیری و هم از نظر تست‌پذیری به مراتب جلوتر از کدهای غیر اصولی است.

    این مفهوم به همراه تمامی مفاهیم دیگری که در این قسمت آمده، در دوره‌های فرانت‌اند و مهندسی نرم‌افزار به صورت مشترک وجود دارند.

  • Unit Testing

    در پروژه‌های کوچک معمولاً نیاز به تست احساس نمی‌شود؛ چراکه تعداد توسعه‌دهندگان محدود است و پروژه‌ها پس از تحویل، یا پشتیبانی نمی‌شوند یا تنها برای مدت کوتاهی پشتیبانی می‌شوند؛ اما این مسئله در پروژه‌های بزرگ بسیار حائز اهمیت است.

    همان طور که از اسمش پیداست، Unit Testing یعنی تست‌کردن تمام واحدهای سازندۀ برنامه؛ چه کوچک و چه بزرگ. ابزارهای زیادی در این زمینه وجود دارد که هر کدام مزایا و معایب خاص خود را دارند که ما در دورۀ فرانت‌اند از ابزار Karma و در دورۀ مهندسی نرم‌افزار از ابزار xUnit استفاده می‌کنیم.

  • Integration Testing

    استفاده از Unit Testing تنها بخشی از کد را در یک محیط ایزوله تست می‌کند؛ اما به مرور زمان قطعاً این نیازمندی احساس می‌شود که قسمت‌های مختلف کد و رابطه‌ای که بین آن‌ها برقرار است را تست کنیم.

    ما از ابزار Cypress برای انجام این‌گونه تست‌ها استفاده می‌کنیم. Cypress یکی از معروف‌ترین ابزارهای حوزۀ تست است که تخصص اصلی آن Integration Testing می‌باشد. با استفاده از این ابزار می‌توان تمام عملیاتی که توسط کاربر انجام می‌شود را شبیه‌سازی و از صحت اجرای کد اطمینان حاصل کرد.

  • Test-Driven Development

    معمولاً این تصور در بین برنامه‌نویسان رایج است که ابتدا کد اصلی برنامه را بنویسند و سپس به تست‌نویسی بپردازند. اما Test-Driven Development یا به اختصار TDD دقیقاً عکس این را ارائه می‌دهد؛ به‌گونه‌ای که از شما می‌خواهد ابتدا تمام تست‌های ممکن را بسازید و سپس سعی کنید کد قسمت‌های مختلف را بنویسید و تست‌ها را پاس کنید.

    مزیت این روش نسبت به روش اول در این است که برنامه‌نویس همیشه نسبت به کاری که باید انجام دهد آگاهی لازم را دارد؛ همچنین چون تست‌ها از قبل نوشته شده و تمام جوانب کار را مشخص کرده، احتمال بروز خطا کمتر است و از سهل‌انگاری جلوگیری می‌شود.

  • Design Patterns

    با افزایش کدها و بزرگ‌ترشدن حجم پروژه، معماری نرم‌افزار اهمیت بسیار زیادی در توسعه و نگهداری آن پیدا می‌کند که می‌تواند سرنوشت یک نرم‌افزار، یک تیم کوچک یا یک شرکت بزرگ را متحول کند.

    الگوهای طراحی، راهکارهایی متداول برای حل مشکلات عمومی معماری نرم‌افزار هستند که ما در کداستار سعی می‌کنیم با آموزش این الگوها به ارتقاء سطح کارآموزها کمک کنیم.

  • Monitoring

    عیب‌یابی نرم‌افزارها در زمان کدنویسی، پیچیدگی زیادی ندارد; اما پس از استقرار نرم‌افزار و در حین استفاده کاربران از آن، اگر با خطا مواجه شویم، نیاز به ابزار و راهکاری برای ریشه‌یابی خطا داریم.

    در کداستار، یاد می‌گیریم با استفاده از استاندارد OpenTelemetry و ابزارهای مدرن، نرم‌افزارهای خود را مانیتور و خطایابی کنیم.

  • SDLC and Agile Framework

    تولید نرم‌افزارهای بزرگ با پیچیدگی‌های مختلفی همراه است. رویکردهای مختلفی برای حل این پیچیدگی‌ها ایجاد شده که هرکدام از مزایا و معایبی برخودارند. اما نقطه مشترک تمام آن‌ها این است که بر روی تمامی چرخه تولید نرم‌افزار، از طرح نیاز بوسیله مشتری تا طراحی، کدنویسی، تست و استقرار نظارت می‌کنند.

    در کداستار با هم برخی از این رویکردها را بررسی کرده و سعی می‌کنیم در طول بوت‌کمپ از یکی از رویکردهای پرطرفدار تولید نرم‌افزار استفاده کنیم.

  • DevOps and Continuous Delivery Culture

    با بزرگ‌تر شدن هرروزه نرم‌افزارهای پر استفاده، نیاز به سرعت توسعه و پایداری هر روز بیشتر و بیشتر می‌شود. متخصصان صنعت نرم‌افزار بر اساس تجربه خود، برای پاسخگویی به این نیازها رویکردهایی را در پیش گرفته‌اند تا فرهنگ سازمانی خاصی ایجاد کنند که در نهایت باعث سرعت و پایداری می‌شود.

    در کداستار سعی می‌کنیم با هم رویکردهای این متخصصان را یاد گرفته و از آن‌ها برای افزایش بازدهی خود و تیممان در زمان تولید نرم‌افزار بهره ببریم.

  • Code Review

    قطعاً یکی از موثرترین راه‌ها برای یادگیری مطالب جدید، استفاده از تجربۀ افراد Senior می‌باشد. این افراد در طی سال‌ها، با آزمون‌و‌خطا و اشتباهاتی که مرتکب شده‌اند، به مفاهیم عمیقی دست پیدا کرده‌اند.

    در کداستار تمام کدهایی که کارآموزها می‌نویسند، توسط منتورها که افرادی ماهر و باتجربه در حوزۀ مهندسی نرم‌افزار هستند، مورد بازبینی قرار می‌گیرد. همچنین ما کارآموزها را تشویق می‌کنیم تا در جایگاه Code Reviewer قرار بگیرند و با خواندن کد دیگران، سطح علمی خود را بالاتر ببرند.

  • Teamwork & Pair Programming

    توسعۀ نرم‌افزارهای بزرگ توسط تیم‌های توسعه‌دهنده‌ای انجام می‌شود که اعضای آن‌ها از ابزارها و راهکارهای متعددی مانند Pair Programming برای افزایش راندمان کاری و بهبود تعاملات درون‌گروهی استفاده می‌کنند.

    ما در مراحل آموزشی کداستار با تقسیم کارآموزها به تیم‌های کوچکتر و آشناکردن آن‌ها با نحوۀ صحیح Pair Programming تلاش می‌کنیم تا مطالب به شکل بهتر و در زمان کمتری به آن‌ها منتقل شود و در مرحلۀ نهایی با شکل‌دادن تیم‌های بزرگتر سعی می‌کنیم تا تجربۀ یک کار تیمی خوب، به کارآموزها منتقل شود.

  • Soft Skills

    یکی از باورهای غلطی که درباره تیم‌های موفق توسعۀ نرم‌افزار وجود دارد این است که اعضای این تیم‌ها صرفاً دارای مهارت‌های سخت (فنی) می‌باشند؛ اما در واقعیت این تیم‌ها از افرادی تشکیل شده‌اند که در کنار مهارت‌های سخت، مهارت بالایی در زمینه برقراری ارتباط با سایر افراد تیم دارند تا مقصود خود را به بهترین نحو به دیگران منتقل کنند و همچنین با ایجاد یک محیط ارتباطی دل‌نشین، به پویاترشدن تیم کمک کنند.

    در کداستار علاوه بر برنامه‌های آموزشی، برنامه‌های تفریحی و جمعی متعدد و متنوع نیز خواهیم داشت که در راستای ارتقاء مهارت‌های نرم و افزایش حس مثبت کارآموزها، در طول دوره برگزار می‌شوند.

پیش‌نیازهای دوره فرانت‌اند

  • HTML

    • Basic Knowledge
    • Form Validation
    • Input Types (password, checkbox, ...)
    • Input Attributes (value, min, max, ...)
  • CSS

    • Flexbox Layout
    • Grid Layout
    • Pseudo Selectors (:hover, :focus, ...)
    • Pseudo Elements (::before, ::after, ...)
    • Font Management
    • Image Management
    • Responsiveness & Media Queries
    • Transitions & Animations
  • JavaScript

    • DOM Manipulation
    • Event Handling
    • String Manipulation
    • Regex
    • Array Methods (forEach, filter, map, ...)
    • Async/Await
    • Promise
    • Fetch API
    • Storage Management (cookie, localStorage, ...)
    • Web Animation API

پیش‌نیازهای دوره مهندسی نرم‌افزار

  • Data Structures

    • List
    • Set
    • Map
    • Stack
    • Queue
    • Graph
  • Algorithms

    • Sort
    • Tree
    • Dynamic Programming
  • Object-Oriented Programming

    • Inheritance
    • Abstraction
    • Polymorphism
    • Encapsulation
  • Not Necessary But Good to Know

    • Git
    • Regex
    • Unit Testing
    • Greedy Algorithm
    • Working With APIs

پیش‌نیازهای دوره دوآپس

  • Data Structures and Algorithms

    • List
    • Set
    • Map
    • Stack
    • Queue
    • Graph
    • Sort
  • Object-Oriented Programming

    • Inheritance
    • Abstraction
    • Polymorphism
    • Encapsulation
  • Not Necessary But Good to Know

    • Git
    • Regex
    • Unit Testing
    • Working With APIs
    • Scripting
    • Databases
    • Computer Network

آمار و ارقام

  • 76
    کارآموز
  • 60+
    پروژه
  • 20+
    ساعت کارگاه ضبط‌شده
  • 570+
    ساعت جلسۀ درون‌گروهی
  • 5000+
    خط آموزش متنی
  • 800+
    کامنت هنگام بازبینی کد
  • 400+
    بار ارتقاء و بهبود محتوا

سوالات متداول

  • آیا می‌توانم این دوره را به عنوان کارآموزی دانشگاه بگذرانم؟

    بله! ولی همان طور که در قسمت‌های قبلی توضیح داده شد، دوره به صورت مرحله‌ای برگزار می‌شود و برای گذراندن هر مرحله، نیاز است تا امتیاز مورد نظر را به دست آورید؛ بنابراین امتیازی که در هر مرحله کسب می‌کنید، به طور مستقیم بر روی نمره‌ای که برای کارآموزی دانشگاه شما ثبت می‌شود، تاثیر خواهد گذاشت.

  • آیا محتوای دوره به صورت یک‌جا در اختیارم قرار می‌گیرد؟

    محتوای دوره از همان ابتدا در اختیار تمام کارآموزان قرار می‌گیرد ولی برای گذراندن هر مرحله، برنامه‌ای فشرده داریم و معمولاً کارآموزان با سرعتی که ما پیش‌بینی می‌کنیم دوره را می‌گذرانند. البته برای عزیزانی که زودتر از موعد مقرر به هدف یک مرحله برسند، محتوای جانبی و امتیازی قرار داده‌ایم تا مطمئن شویم تمام کارآموزان از وقت خود نهایت استفاده را می‌برند.

  • آیا دوره به صورت حضوری/مجازی برگزار می‌شود؟

    دوره به دو صورتِ مجازی و حضوری در اصفهان برگزار می‌شود که کارآموزها می‌توانند با توجه به شرایط خود، هر کدام را که صلاح می‌دانند انتخاب کنند. لازم به ذکر است که محتویات و کیفیت کارآموزی برای هر دو نوع کاملاً یکسان است و صرفاً برای راحتی کارآموزها، گزینه‌های مختلفی را ارائه کرده‌ایم.

  • چه اندازه از وقتم را باید برای دوره صرف کنم؟

    کارآموزی به صورت کاملاً فشرده برگزار می‌شود؛ با توجه به برنامه‌ریزی ما، انتظار داریم کارآموزان روزهای شنبه تا چهارشنبه و در هر روز به اندازۀ 8 ساعت از وقت خود را صرف دوره کنند. البته اگر کارآموزی سرعت بالاتری نسبت به دیگران داشته باشد، می‌تواند محتوای امتیازی را پیش ببرد؛ اما به شرطی که کیفیت محتوای اصلی کاهش نیابد.

تمامی حقوق مادی و معنوی این سایت متعلق به آکادمی ستاره می‌باشد.