برای "ما" لوکس و برای "آن ها" اساس

در اینجا بچه های لیسانس ملزم هستند که به عنوان پروژه پایانی درسی را تحت عنوان Capstone پاس کنند (در ایران ما باید یک پایاننامه آماده می کردیم!). در واقع موظف هستند تا یک پروژه واقعی را برای یک مشتری واقعی و معتبر انجام دهند. هر تیم موظف هست تا رضایت کامل مشتری را جلب کرده و محصول کاملی را عرضه کند. در پایان هم روزی به عنوان دموی پایانی محصولات مشخص خواهد شد که با حضور شرکت های معتبر و مسئولین دانشگاه خواهد بود.

امسال من این فرصت را داشتم که به عنوان مربیِ فنی یک سری از تیم ها انتخاب شوم. برای من نکته جالب در میان دانشجویان کارشناسی دانشگاه این بود که این ها از مفاهیمی که عمدتا در ایران لوکس و مجلسی هستند به عنوان الفبای کارشان استفاده می کنند و چقدر هم درست آن ها را به کار می گیرند و تو گویی بدون اینها توسعه نرم فزار معنی و مفهومی برایشان ندارد. به طور مثال:

* همه تیم ها بلااستثنا از بهترین ابزار ها و روش ها برای راه اندازی Continous Integration و Continious Deployment استفاده می کنند.
* همه تیم ها مجموعه بسیار خوب و دقیقی از تست های واحدِ با کیفیت و ایزوله را طراحی کرده اند که به صورت خودکار بر روی سرورهای بیلد شان اجرا می کنند.
* همه تیم ها زیرساخت های شان را بر روی سرور های کلاد آمازون، گوگل و یا مایکروسافت مستقر کرده اند و از سرویس های آن ها بهره می گیرند.
* از بهترین و مدرن ترین پلتفرم ها برای ثبت لاگ اپلیکیشن ها و سرور ها استفاده می کنند تا به صورت دقیق رفتار کاربر و سرور را تحت نظر داشته باشند.
* برای استقرار نرم افزار از Docker و Kubernetes استفاده می کنند.
* به کیفیت کد و نام گذاری ها به شدت اهمیت می دهند و تقریبا در همه آن ها استفاده از Dependency Injection و Dependency Inversion و تقسیم بندی سیستم به لایه های درست دیده می شود.
* هر کدی که تغییر پیدا می کند، دلیل مشخص دارد و به یکی از Issue ها مرتبط شده است. هیچ تغییری بدون دلیل و غیرمستند نیست.
* بسیار درست از Git برای مشارکت در کد استفاده می کنند. کسی مستقیم در Repository ها کدی را push نمی کند. هر کس موظف هست تا تغییرات را در غالب Pull Request ارسال کند تا دیگران (یک یا دو نفر) کد را Review کرده و نظرشان در مورد تغییراتی که باید انجام شوند اعلام کنند.
* با ارسال Pull Request ها، تست ها به صورت خودکار اجرا می شوند تا reviewer ها مطمئن شوند که تغییر موجب شکست سیستم نخواهد شد.

می دانم که این practice ها در خیلی از شرکت های اینجا هم به عنوان پایه و الفبا به کار گرفته می شوند. بسیاری از دانشجویان در دوران کارشناسی حتی تا 4 بار در شرکت های معتبر نظیر مایکروسافت دوره های Internship را گذرانده اند و به خوبی با استاندارد های صنعت و best practice ها آشنا هستند. کسی فکر نمی کند که "حالا بزن بره وقت هست واسه این چیزا"، اصولا اینها توسعه به روش ما را بلد نیستند.