قسمت ششم - 1400/7/19
امروز روز ششم بود. در واقع اولین روز از هفته دوم بود. گذشت یک هفته کامل و پشت سر گذاشتن تعطیلات آخر هفته یک مورد پیش بینی شده را رو کرد: عدم تطابق روزهای کاری هفته در ایران و اروپا.
پنج شنبه و جمعه گذشته را مجبور بودم تا ساعت ۶:۳۰ ب.ظ. کار کنم. جمعه چون آخر هفته آنها است قابل حذف نیست. خواستم شنبه یکشنبه را استراحت کنم که به عنوان اولین سری قابل انجام نبود. چون هنوز نه خودم و نه بقیه آماده انجام آن نبودیم. بچه تمام صبح هر دو روز شنبه یکشنبه را در شاد کلاس داشت. بعد از ظهر هم اختصاص به انجام تکالیف داشت. نتیجه این که هر دو روز را زمین گیر بودیم. البته کارهای جانبی که از قبل داشتم هم مانع بود. چون در طول هفته گذشته انرژی زیادی برای کار جدید گذاشته بودم اصلا به آن کارهای جانبی نرسیده بودم. در نتیجه مجبور شدم شنبه یکشنبه را برای آنها وقت بگذارم. همه اینها باعث شد که امروز، دوشنبه، خیلی خسته باشم. قبل تر ها اگه روز اول کاری هفته احساس خستگی داشتم امیدم به پنج شنبه بود که استراحت خواهم کرد. اما فعلا در کوتاه مدت این امید را هم از دست داده ام.
مشکل عمده بعدی داستان همیشگی context swithcing است. دو تا کار جانبی که دارم هر دو در Node.js و با JavaScript و MongoDB و در لینوکس هستند. اما کار جدید با .NET و C# و MySQL و در ویندوز است. هم Business Logic ها خیلی با هم متفاوت است و هم تیم ها. صبح شنبه که Node.js بودم کلی طول کشید یادم بیاید که قرار است چه چیزی را ادامه بدهم. صبح دوشنبه هم بر عکس داستان را داشتم. با این که هفته پیش حسابی با میکروسرویس ها ور رفته بودم، دات نت را به ضرب و زور راه انداخته بودم و روتین های Jira و بقیه چیزها دستم آمده بود، ۲ ساعت اول صبح دوشنبه را گیج می زدم.
با اینکه دو سال اخیر را روی JS بودم ولی این پروژه روی دات نت است. پروژه در حالت maintenance است و درصد feature های جدید خیلی زیاد نیست. پروژه تشکیل شده از تعداد زیادی میکروسرویس که بر خلاف تصور خودم از REST برای ارتباط بین میکروسرویس ها استفاده می شود. به روال خیلی از پروژه های دات نتی، اینجا هم مملو است از پروژه، solution ها و اسمهای خیلی طولانی. دیتابیس میکروسرویس ها مستقل از هم و عمدتا MySQL است. ساختار پروژه در عمده میکروسرویس ها کپی همدیگر هستند. Publish نهایی از طریق داکر است. نکته جالب این است که به علت تعدد میکروسرویس ها تقریباً غیر ممکن است که یک نفر بتواند همه آنها را روی local خودش بالا بیاورد. انجام تغییرات عمداً از طریق component test بررسی می شود. البته نیروی کافی در بخش QA و DevOps وجود دارد که مشکلات به دست مشتری نرسند.
کلیت کار در بخش فنی و ساختار تیم خیلی با آن چیزی که در ایران میبینیم فرقی ندارد. جلسات روزانه Daily Scrum، نقشهای Back-end و Mobile dev و PM و چیزهای دیگر خیلی به هم شبیه هستند. در مورد ساختار پروژه ها و کد که شباهت خیلی بیشتر است. در کد چیز خیلی نا آشنایی وجود ندارد. ولی با وجود همه این شباهت ها، جزییات زیادی وجود دارند که نیاز به توجه و عادت کردن دارند. به عنوان مثال به جای scrum master شخصی با نقش PM یا Project Manager داریم که فعال ترین فرد تیم است. از یک طرف با تیم فنی در ارتباط است، از یک طرف با افراد غیر فنی در شرکت و از طرفی دیگر با مشتری و تیم پشتیبانی در ارتباط است. خودش چندین سال برنامه نویسی وب و غیر وب کرده و دستی در برگزاری جلسات مختلف و کار با ابزارهایی مثل Jira دارد. او Task ها یا Backlog ها را به طور کامل در Jira مکتوب دارد، جزییات هر item کاملاً وارد شده. و یکی از کارهایش حین جلسات sprint planning و حتی SU (همان stand up daily) این است که مدام task جدید اضافه کرده، تسک های موجود را بهبود داده و آنها را به افراد مختلف assign می کند. در یک هفته و خرده ای مدام در دسترس بوده. هر سؤالی که پرسیده ام یا خودش جواب داده یا به فرد مرتبط ارجاع داده. آن هم در حد دقیقه. گاهی اوقات دیدهام که وسط یک جلسه در حال جواب دادن به سؤالات دیگران است. Business Logic را کاملاً حفظ است.
جزییات دیگری نیز وجود دارد که بعداً سر فرصت درباره آنها خواهم نوشت.