چند روز پیش مطلبی در وبلاگ توسعه مایکروسافت منتشر شد که بهانهای شد برای نوشتن این مطلب. یک دانشجوی سال چهارم علوم کامپیوتر، تجربه خودش از یک دوره کارآموزی تابستانه در مایکروسافت رو شرح میده.
دلیل من برای نوشتن این مطلب، تفاوت عمیق نگاه به کارآموز در اکثر شرکتهای ایرانی با شرکتی مثل مایکروسافت و شرکتهایی که بعد از مهاجرت تجربه کردم بود. شاید در طول حدود بیست سال حضور توی شرکتهای مختلف ایرانی، تنها جایی که نگاه اصولی و برنامهدار به کارآموز رو دیدم، مجموعه هزاردستان (کافهبازار، دیوار و…) بود. که کم نبودند افرادی که به عنوان کارآموز توی مدرسه تابستانه شرکت میکردن، و بعدن تبدیل به کارمندهای شرکت میشدند و سقفی برای پیشرفت و رشدشون وجود نداشت. در حالیکه اکثر شرکتها به کارآموز به چشم نیروی مزاحم یا رایگانی نگاه میکردند که دلیل حضورش توصیهی یک آشنا بود یا منتی که بابت پذیرفتنش همواره روی دوشش میبود! و اغلب تا آخرین روز حضور، به چشم «همون کارآموزه» بهش نگاه میشد. آبشخور اینها عموما ضعف و کمسوادی سازمان و ساختار شرکتها است. در حالیکه، وسواس و دقت در جذب، و فرصت دادن و آموزش اصولی برای یک کارآموز، سرمایهگذاری میان/بلند مدتیه برای سازمانه. چرا؟
۱: نیروهای جوانتر، عموما انگیزه زیادی برای یادگیری دارن. انگیرهشون عموما ورای عنوان سازمانی و چشموهمچشمی میزان دریافتی حقوق است (اصلا به این معنی نیست که سازمان اجازه داره از جوان بودن و یا دغدغه کمتر مالی یک کارآموز نسبت به کارمندی که مسئولیتهای بیشتری در زندگی شخصی داره و اهمیت حقوق دریافتی براش اثرگذارتر است، سوءاستفاده کنه یا به خودش اجازه بده حقی از کارآموز ضایع بشه، بلکه به عنوان جنبه مثبتی است که اولویت یادگیری و پیشرفت برای نیروی جوان گاها بیشتر از یک فرد میانسال است)
۲: آموزش اصولی و مدون، از یک منظر یعنی تربیت نیروی بهتر، ولی از منظر دیگه، یعنی کمک به سازمان، ساختار دادن به مستندات، ارتقاء نیروهای فعلی، و همینکه تیم منتورشیپ برای هدایت کارآموزها، وادار به مرور مطالب، تکنولوژیها، ابزارها و رویهها میشه، برگ برندهای برای سازمانه.
۳: حتی اگر درصد کمی از نیروها توی سازمان رسوب کنند و اکثرا در بازه زمانی ۱ یا ۲ ساله سازمان رو ترک کنند، همینقدر که سازمان محلِ گذارِ افراد مستعد و کوشا بشه (به شرط انتخاب دقیق) آثار مثبت میان/بلند مدتی برای HR branding و branding سازمان خواهد داشت.
۴: اگر به صورت خوبی موضوع منتورشیپ کارآموزها پیش بره، عملا در کنار آموزش به کارآموز، آموزش لیدرشیپ به نیروهای قبلی هم رقم میخوره و این یعنی تربیت لیدر برای فردای سازمان.
۵: لید و منتورشیپ کارآموز به معنی برگزاری کلاسهای آموزشی کلاسیک نیست! بلکه به معنی اعطاء «فرصت» و «منابع» آموزشی، در کنار افراد با تجربه برای پیدا کردن پاسخ مطمئن به پرسشهاست. به بیان دیگه، رانندگی با کارآموز است، منتورها نقش مسیر جاده و گاردریل رو دارن تا در صورت تلاش و ممارست خود کارآموز به مقصد برنامهریزی شده برسه. پس جذب کارآموز به معنی از کار و زندگی افتادن منتور نیست، بلکه بخشی از زمانش در طول هفته رو به هدایت افراد کمتجربه میپردازه و با این کار مهارت لیدرشیپ خودش رو تقویت میکنه.
۶: برنامهریزی برای برگزاری دوره کارآموزی برای داوطلبها مثل یک محرک بیرونی برای مرور روالها و مستندات است
و اما Serena…
سرنا، یک دانشجوی در حال ورود به سال چهارم در رشته اصلی علوم کامپیوتر و رشته فرعی روانشناسی در Rochester Institute of Technology است که یک دوره کارآموزی تابستانی رو در نقش کارآموز مهندسی نرمافزار با تیم ابزارسازی JavaScript و TypeScript کار کرده
روی چه چیزی کار کرده؟
سرنا تعریف میکنه که روی یک ویژگی toggle برای inlay hints (اطلاعات کمکی درباره سورسکد رو در محیط ویرایش کد روی هر خط از کد نمایش میده، تصویر زیر) در تیم Visual Studio کار کرده. قابلیت inlay hint از چندین زبان از جمله Python، JavaScript، TypeScript و Razor پشتیبانی میکنه. پروژه سرنا شامل کار روی یک صفحه تنظیمات جدید در پنجره Tools/Options توی ویژوال استدیو بوده. برای تکمیل این پروژه، سرنا باید درباره نحوه کار Language Server Protocol (LSP) یاد بگیره و تحقیق کنه ببینه چجوری این قابلیت برای Roslyn (پلتفرم کامپایلری که برای NET. برای #C و Visual Basic استفاده میشه) که در محیط Visual Studio Code ادغام شده، پیادهسازی شده.
دقت کنید به موضوعی که براش در نظر گرفتن، عمق و اهمیت مطالب و سورسکدهایی که باید یاد میگرفته یا تحقیق میکرده!
سرنا عمدتاً در مقر مایکروسافت در Redmond و به طور نزدیک با منتورش کار کرده تا فضای مسئله، و نحوه کار کدهای مرتبط با inlay hints رو درک کنه. این به این معنیه که شروع پروژهاش کندتر از حد انتظار بوده. با اینکه انتظار داشته تا با فضایی که توش کار میکرده غریبه باشه، و حتی کار کردن با چندین ریپازیتوری به طور همزمان، در ابتدا غیرقابل تحمل به نظر میرسیده، ولی با کمک منتور و لید شدن صحیح، موفق میشن تا تحویلدهیهای هفتگی را تعیین کنن و پروژه رو به بخشهای کوچکتر اکتشافی تقسیم کنند.
نکته: بخشبندی کار به خروجیهای کوچکتر و هدفمند و تکنیک شکستن کار به عوامل سازنده، البته با کمک منتور
علاوه بر این، جلسات هفتگی با مدیر و صحبت در مورد پیشرفت وضعیت کار به علاوه گپوگفت حول کارآموزیاش بهش کمک زیادی کرده تا حس خوب و موفقی از گفتگوهاش درباره توسعه و نکات پروژه رو تجربه کنه. نیمه دوم کارآموزیاش وارد جلساتی با تیم Visual Studio میشه که طی این جلسات قابلیت نهایی که باید تولید میشده شکل میگیره (از انتخاب منوی کشویی به جای چک باکسها، تا متن گزینههای تنظیمات) و اهمیتش وقتی بدونیم قرار بوده تا این ویژگی در نسخه پیشنمایش بعدی VS در دسترس عموم قرار بگیره بیشتر میشه! تیم ویژوالاستدیو خیلی بهش کمک کردند تا نه تنها افکارش رو به عنوان یک توسعهدهنده به چالش بکشه، بلکه شخصیت درونگرای خودش رو هم به چالش بکشه. سرنا تعریف میکنه که به دفعات از comfort zone خودش خارج میشده تا با مهندسهای مختلف در تیم خودش و یا سایر تیمها درباره جنبههای مختلف پروژه صحبت کنه. فراتر از پروژهاش، توی جلسات دستهبندی باگها و کار روی تیکتهای فیدبک درباره تجربه ابزارسازی شرکت میکرده که برای دیدن ارتباط بین کاربران و توسعهدهندهها خیلی آموزنده بوده. همچنین در چندین رویداد کارآموزی شرکت کرده، به خصوص اونهایی که برای کارآموزان بخش توسعه (DevDiv) و کارآموزان DevDiv Blacks at Microsoft (BAM) بوده.
ببینید… برنامهریزی برای محصول، کارآموز و «یک انسان» «یک توسعهدهنده» چقدر دقیق بوده! همینجوری یک نفر رو به چشم نیروی ارزون و حرفگوش کن نیاوردن… بلکه یک انسان رو در برنامه دقیق و حسابشدهشون وارد کردند تا در خدمت محصول، و توسعه منابعانسانی شرکت قرار بگیره!
کسی که توی جلسات برنامهریزی محصول شرکت میکنه و دنیای واقعی رو میبینه، تجربه میکنه که افراد حرفهای نسبت به یک تیکت چجوری صحبت میکنن، بخشی از مسیر رسیدن به بلوغ کار تیمی و تولی محصول رو از مسیر میانبر طی میکنه!
در طول یک دوره تابستانی کارآموزی چی یاد گرفته؟
در طول ۱۲ هفته، کار تیمی،
- Language Server Protocol: ارتباط بین LSP و individual language servers و همچنین کلاینت (Visual Studio Editor) رو درک کرده! (درگیر کارهای کوچک «ولی» مرتبط با دانش روز و پیشرفته شده، نه کارهای دم دستی)
- تعادل بین «آزمایش و تجربه کردن» (وَر رفتن با مشکل!) و درخواست کمک کردن (یک مهارت نرم بسیار مهم برای فرد). توضیح میده که سعی کرده بفهمه زمان مناسب برای درخواست کمک از افراد و منتورها چه موقع است و چقدر تایم برای تجربه کردن صرف کنه (بیش از حد روی یک مسئله گیر نکنه) و یاد گرفته که راه حل واحدی برای همه موارد وجود نداره (این مورد رو حتی خیلی «مثلا سنیورها» بلد نیستن). توضیح میده که برای هر مانعی که با اون برخورد میکرده، زمان متفاوتی برای حلش نیاز بوده و حتی گاهی اوقات برای رسیدن به یک راه حل ساده بدون کمک خارجی میسر نبوده. از طرف دیگه، فکر کردن روی مشکل برای چند ساعت منجر به راه حل و بینشهای جدیدی میشده. مثال میاره که در پیادهسازی صفحه تنظیمات، یه جایی گیر میکنه و بعد از چند بار تلاش، با تیم editor تماس میگیره و متوجه میشه که اون روش دیگه منسوخ شده و روش جایگزین رو میفهمه (چیزی که در محصولات و سازمانهای بزرگ و خیلی بزرگ خیلی محتمله).
از اون به بعد همه چیز روانتر پیش میره ولی بدون تماس گرفتن، برای مدت طولانیای بدون پیشرفت گیر کرده بوده (ما درگیر مسایل فرهنگی هم هستیم که کمک گرفتن رو ضعف میدونیم). - Code review یک موضوع شخصی نیست! دیدن تمام نظرات برای اولین PR باعث شده تا فکر کنه “آیا من کار درستی انجام دادم؟”، و مجبور بوده درک کنه که نظرات به این معنی نیست که کاری که انجام داده بیارزش است یا مهارتهاش محکوم بشن (این موضوع در فرهنگ ما ایرانیها خیلی خیلی جدی است و نیاز به تمرین داریم). بیشتر اونها سؤالات برای شفافسازی بوده و یا نظرات با هدف بهینهسازی طرح شده بودن که به این معنی این نبوده که رویکردش اشتباه بوده، بلکه راه بهتری برای انجام اون کار وجود داشته (این رو باید بارها بخونیم و به یاد بیاریم).
از چه چیزهایی در طول دوره لذت برده؟
- از ملاقات با سایر کارآموزان DevDiv و بینش پیدا کردن درباره کار تیمهاشون. و اینکه توی رویدادهای شبکهسازی کارآموزها شرکت میکرده و بهش کمک میکرده تا با سایر مهندسهای مایکروسافت گپوگفت کنه و آشنا بشه و در مورد جریان کاری و اتفاقات سازمان یاد بگیره.
- ارتباط و شرکت در رویدادهای BAM براش خیلی لذتبخش بوده و دیدن جامعهای از افرادی که با اونها هویتهای مشترک داشته و چیزهایی رو که دنبالشون بوده رو در بین افراد دیگه هم میدیده و این بهش کمک میکرده تا حس تعلق نسبت به سازمان و تیمها پیدا کنه.
- شهر جدید، خارج از فضا و زمان کار، منطقه سیاتل رو دیده و کارآموزی به گونهای بوده که وقت برای گشتو گذار و تفریح و سرگرمیهاش داشته باشه. (تعادل کار و زندگی)
خلاصه و نکات:
شاید متن گویا باشه، ولی اهمیت تربیت نیروی انسانی، در شرایط امروز جهان خیلی مهمه، ولی برای ما ایرانیها با توجه به سیل مهاجرتها واجبتر!
۱. کار بر روی پروژههای واقعی و معنادار
۲. راهنمایی و منتورینگ تخصصی
۳. توسعه مهارتهای نرم و سخت (رفتاری + فنی پیشرفته)
۴. آشنایی با فرهنگ سازمانی و کار تیمی