نبود برنامه نویس متخصص یا عدم توجه به معماری سیستم، مسئله کدام است ؟

این روزا پای سخن هر فرد متخصصی که در حال راه اندازی کسب و کار یا شرکتی خصوصا در حوزه برنامه نویسی باشد بشینید، از این مینالد که «برنامه نویس متخصص وجود ندارد!» یا اخیرا متوجه این شده اند که باید «برنامه نویس را تربیت کنند!»و... آیا واقعا این طور هست؟عکسی با مزمون برنامه نویسی :))این مقاله درباره مسئله تامین کارمند متخصص برای شرکت های برنامه نویسی هست ولی خب میتونین این مسئله و بسط بدید به همه حوزه ها چرا که مسائل مشابه‌ایی در نوع کار های متفاوت نیز میتونید پیدا کنید که از این مقاله استفاده کنید. [البته امیدوارم این مقاله به دردتون بخوره :) ]وقتی یک شرکت درحال رشد باشه به ناچار مجبور به افزایش تعداد کارمندهاش میشه تا بتونن کار هارو در زمان کمتری دلیور کنند تا شرکت به رشد مطلوب نزدیک بشه. این زمانی به یک دقدقه تبدیل میشه که شرکتی ماه ها به دنبال برنامه نویس مورد نظر خودش میگرده ولی در آخر سر ناکام و مجبور به کم کردن نیازمندی های توی آگهی جذب خودشون میشن تا بلاخره شخصی وارد شرکت بشه و با حداقل آموزش بتونه کمکی به سیستم کنه.ولی ما اگر کمی به عقب برگردیم میتونیم مسئله را ریشه یابی کنیم و شاید هم با ریشه یابی، راه حلی برای این معضل پیدا کنیم. به نظر من مشکل اصلی توی متن آگهی هست. البته از آگهی های کذایی که با عنوان «برنامه نویس موبایل» هست ولی داخل متن صحبت هایی از نیاز به آشنایی به «لینوکس»، «Nodejs»، «مسلط به کانفیگ سرور»، «کارشناس امنیت شبکه» و... هست، صرف نظر می‌کنیم.فرض کنید شرکت شما نیاز به یک برنامه نویس React داره که بخش فرانت اندتون رو کامل کنید و شما این آگهی رو منتشر میکنید. توقع دارید که سیل ارسال رزومه ها به راه بیافته ولی اینطور نمیشه. چرا؟ بررسی میکنید میبینید عههههههههه همه برنامه نویس Vue هستند! و سر شما بی کلاه مونده و کسی نیست که React بلد باشه. در نهایت راضی میشید که یکی از همین برنامه نویس های Vue موجود رو بیارید و ۲ ماه بهش React آموزش بدید و کارتون رو جلو ببرید ولی چیزی که این وسط فراموش شد اینه که سرعت دولوپ شرکت شما کم شده! چرا؟ چون دارید متخصص آموزش میدید!مشکل چیست ؟ به نظر من مشکل روی طراحی سیستمتون هست. یعنی چه ؟ سیستم شما جوری طراحی شده که شما به تخصص های خاص نیاز دارید نه عنوان شغلی های مشخص! منظور من اینه که شما به جای اینکه نیاز به Front-end Developer داشته باشید نیاز به React Developer دارید. به این شکل که سیستم شما توانایی قبول کردن یک تکنولوژی دیگه درون خودش رو نداره و همه بخش های باید بر پایه Base اولیه باشه! به همچین سیستم هایی اصطلاحا Monolith میگن.برنامه نویس هاتون رو محدود به تکنولوژی نکنینبرنامه نویس ها آدم های خلاقی هستند که میتونن با خلاقیتشون توی تکنولوژی هایی که توش حرفه‌ایی هستند میتونن سرعت رشد شمارو افزایش بدن. ولی به جاش توی شرکت شما ممکنه تایمشون رو به یاد گیری یک تکنولوژی از پایه بشه و اون رو خسته کنید.راه حل چیه؟معماری های مدرن توسعه نرم افزارمعماری های توسعه نرم افزار چیزی فراتر از یک ساختار توسعه هستند. در واقع وقتی شما از یک معماری مدرن مثل معماری Microservice استفاده میکنین یا معماری های دیگه مثل Service Oriented و... این قابلیت رو به دولوپر/تیم دولوپمنت میدین که در انتخاب تکنولوژی دست باز باشند و صرفا توی یک راه ثابت مجبور نباشند قدم بردارند.مطالعه بیشتر این معماری هارو به عهده خودتون میگذارم :)استارتاپ ها معمولا با MVP که میسازند برای خودشون یک حاشیه امن میسازند که به سختی و ندرت از این حاشیه امن خارج می شوند و این باعث شکل گیری چنین سیستم های خشک و بی روحی میشه که در نهایت منجر به مشکلاتی می‌شود که حتی ممکن است فکرش را هم نمی‌کردند: «پیدا نکردن برنامه نویس».امیدوارم شرکت ها و استارتاپ ها به این مهم بیشتر توجه کنند. اگر شما هم با این دیدگاه من موافقید خوشحال میشم این مقاله را با مدیران خودتون که دچار این مشکلات شده اند به اشتراک بگذارید و یا حتی اگر موافق نیستید خیلی بیشتر خوشحال میشم نظراتتون رو بخونم.موفق و پیروز باشید.