برای اینکه بتونیم سیستم بسیار بزرگی رو پیاده سازی کنیم به طوری که بتونیم از همهی ظرفیتهای همهی برنامهنویسان استفاده کنیم پیشنهادی که من دارم به این شکله و ابتدا کارهایی که نباید بکنید رو بهتون توصیه میکنم.
اولین دیدگاه اشتباه اینه که هرچی تعداد سنیورها بیشتر باشه کار سریعتر پیش میره، اما اشتباه میکنید سنیورها هر کدوم یه تنهایی توانایی انجام کارهای بزرگ رو دارن اما دربرابر سنیورهای دیگه با چالش مواجه میشن که باعث میشه روند انجام پروژهی شما کند بشه. چرا؟ چون لزوما همشون مثل هم فکر نمیکنن، میدونن با ساختار ذهنی خودشون میتونن پروژه رو جمع کنن. اگر سنیورها بتونن باهم توی یک تیم مچ بشن عالی میشه. اما اگر نشه فاجعه میشه، پس این صفر و یکه و باید بتونید اینرو کنترل کنید.
بنابراین برای هر تیم 4 تا 6 نفره یک سنیور قوی کافیه، دوتا میدلول و بقیه رو هم جونیور انتخاب کنید. مثلا توی یک تیم چهار نفره 1 سنیور و 2 مید لول و یک جونیور کافیه.
تیمهاتون رو بزرگ نکنید که به مشکل میخورید.
به عنوان یک سنیور من خودم سیستم پروژه رو اینطوری معماری میکنم و ممکنه هر سنیور روش خاص خودش رو داشته باشه ولی من همیشه با این روش جواب گرفتم.
سختترین قسمتهای پروژه رو که فقط سنیورها و افراد با دانش بالا میتونن توسعه بدن و در عمیقترین بخشهای پروژه قرار میگیرن. قسمتهایی که مید لول ها میتونن توسعه بدن رو در لایههای میانی پروژه و قسمتهای آسونش رو که دم دستی ترن برای جونیورها قرار میدم.
برای همهی دسته ها کار هست، یا باید ایجاد بشه.
اگر توی یک شرکت دو تیم وجود داره که یک سنیور توی هر تیم هست، این دو باید بتونن با هم هماهنگ بشن و Code Share های زیادی رو ایجاد کنن که توی کل پروژه بتونن از این کدها استفاده کنن. پس قسمتهای عمیق پروژه دست ایناست.
منظور از قسمتهای عمیق پروژه چیاست مثلا؟ مثلا داینامیک کوئریهایی که قراره روی ORM ها بزنید، مثلا معماریها و لایههای امنیتی پروژه و انتخاب یا ایجاد ابزارهای قدرتمند برای توسعه.
میدلولها باید بتونن بیزنس پروژه رو پیاده سازی کنن، تحلیلها رو به همراه سنیورها بخونن و بهبود ببخشن، بیزنسها رو طراحی کنن و توی تست نویسی به تیم کمک کنن و از کدها و ابزارهای قویای که توسط سنیورها براشون فراهم شده استفاده کنن تا در سریعترین شکل ممکن بیزنس رو ببرن جلو.
جونیورها باید بتونن کارهای دم دستی و سریع رو انجام بدن، زبانهای سیستم، پیاده سازی لایه های Api و تست نویسی.
حالا چطوری افراد توی تیم باید بتونن پیشرفت کنن و درجا نزنن؟ اول اینکه وقت بیشتر سنیورها باید توی بحث آموزش به هم تیمیهاشون بگذره و اونقدر باید سریع باشن که هم بتونن به کارهای خودشون برسن و هم آموزش بدن، در نظر داشته باشید ما سنیور «کُند» نداریم! اونا همیشه سریع هستند و مشکلات رو سریع پیدا و حل میکنن و کاملا تکیهگاه تیم هستند. اگر کسی کارا رو نمیتونه سریع هندل کنه به نظرم توی این دسته بهتره که قرار نگیره چون بار بیشتری روی دوش این افراد هست و کندی اونها باعث کندی کل تیم خواهد شد.
جونیورها باید اونقدر کد بزنن و تمرین کنن تا یاد بگیرن و برای کدهاشون تست بنویسن تا به روشهای مختلفی بتونن باگهای ذهنی خودشون رو که توی سورس میارن حل کنن.
میدلولها هم باید وظیفهی آنبردینگ افراد و جونیورها رو به عهده بگیرن و در مورد بخشهای عمیق پروژه و مسائل تحلیلی از سنیورها سوال بپرسن و یاد بگیرن تا سریعتر بتونن خودشون رو ارتقاع بدن. از معماری و چیزهایی که سر در نمیارن بپرسن و تحقیق و مطالعه رو مداومتر و بیشتر از دو گروه دیگه انجام بدن، و البته بهتره سعی نکنن با سنیورها به چالش بخورن سعی کنن بیشتر گوش بدن چون چالش خوردن با سنیورها و گرفتن وقت اونا برای یاد دادن مسائل به اونها بیشتر باعث ایجاد تنش در تیم و ناهماهنگی میشه. وقتی سنیور شدید خودتون متوجه میشید که چرا باید بیشتر سر به زیر باشید تا کار سریعتر بره جلو. اعتماد به سنیورها مهمه.
به این ترتیب ما یک تیم توسعهی سریع ایجاد میکنیم که یک اپلیکیشن بزرگ رو بدون دغدغه و مشکل و بسیار سریع میتونن توسعه بدن.
@easymicroservices
>>Click here to continue<<