استخدام توسعه دهنده Front-End یا چی؟

خب می دونیم که دیگه مثل گذشته نیست که یک نفر باشه که هم Back-End رو توسعه بده و هم Front-End رو، در واقع بهتره بگم مثل گذشته نیست که تعداد Full-stackها بیشتر از تک فیلدی‌ها باشه و کاملا برعکس شده؛ دلیلشم واضح‌ هست، افزایش تعداد زبان‌ها، تکنولوژی‌ها، ساختارها و روش‌های توسعه یا در یک کلام علم!یادمه سال 91 بود که با فیلدی با عنوان توسعه دهنده رابط کاربری یا همون UI Developer آشنا شدم و حس کردم این همون چیزی هست که من می‌تونم باشم؛ ولی یک مشکل وجود داشت، تقریبا تو ایران هیچ شرکتی هنوز اون رو به عنوان یک فیلد مستقل به رسمیت نمی‌شناخت. توی فیس بوک در موردش مطلب می‌نوشتم، به دوستان و هم تیمی‌ها توضیح می‌دادم، کار سختی بود. مدتی بعد عنوان دقیق‌تر Front-End استفاده می‌شد ولی هنوز هم کسی رای راضی به استقلالش نمی‌داد. در آخر به این نتیجه رسیدم که باید گفت ولی نباید منتظر تغییر در لحظه بود چون تغییر با گذشت زمان اتفاق می‌افته تا جایی که امروز نه تنها فیلد تخصصی Front-End شکل گرفته بلکه زیر شاخه‌های تخصصی خودش رو هم داره و الان دیگه لازم نیست به هر کس رسیدی توضیح بدی که چکارِ هستی! Front-End Branches۳ شاخه اصلی Front-Endدنیای Front-Endی که روزی دنبال آشنا کردنش بودیم این روزها معروف و گسترده شده و این بار مشکل ناشناخته بودن برای زیر شاخه‌های اون رخ داده؛ با یک گشت در نت می‌بینیم که خیلی‌ها دارن اشتباه میزنن!1) شاخه گرافیکی‌توضیح: توسعه دهنده رابط کاربری یا همون UI Developer که گاهی GUI Developer هم گفته شده. افراد فعال در این شاخه‌ علاقه زیادی به رنگ و لعاب و ساختار‌های پیکسلی دارن یه جورایی هنرمند هستن و اگر ترشی نخورن یک گرافیست خوب هم می‌تونن بشن، هر از چند گاهی هم دست به طراحی‌های گرافیکی میزنند. توسعه انیمیشن‌ها و ساختار‌های خوشگل و شیک رو دوست دارن و خیلی از اسکریپت نویسی، الگوریتم و ریاضیات خوششون نمیاد و بیشتر علاقه دارن از قطعات کد آماده شده استفاده کنن تا این که دست به اسکریپت بشن.این شاخه ،سطح‌های مبتدی تا تخصصی خودش رو داره که مقدماتیش رو تقریبا هر کسی وارد دنیای وب میشه پاس میکنه. متاسفانه عده زیادی از توسعه دهنده‌های Back-End چون بعد از پاس سطح مقدماتی این شاخه به Back-End کوچ کردن خیال می‌کنن کلا Front-End یعنی همین رفتن به خودشون برچسب Full-Stack زدن! (نچایی داداش)محل کار: بهترین گزینه برای دیجیتال مارکتینگ! چون توانایی خلق اثر‌های جذاب رو دارن بهترین گزینه‌ برای توسعه Landing pageهای کمپین‌های تبلیغاتی هستن.اگر در تیم‌های موفق دیجیتال مارکتینگ کند و کاو کنید حتما یکی از این آدمای دوست‌داشتنی رو اونجا می‌بینید.از طرفی این افراد چون خیلی دست به الگوریتم نیستن وابسته به Back-End هستن و مستقل کردن Front-End اصلا پیشنهاد نمیشه! برای پروژه‌هایی که ساختار Post-Back دارند و Front-End در دل کد‌های Back-End قرار می‌گیره استخدام این سبک افراد پیشنهاد میشه.2) شاخه گرافیکی مهندسیتوضیح: توسعه دهنده Front-End یا همون Front-End Developer که همه جا دیده میشه که به اشتباه افراد عنوان این شاخه‌ رو برای دو شاخه دیگه استفاده می‌کنند. اینجا یک اشتباه رخ داده و قیمه‌ها ریخته تو ماستا و نمیشه سرزنشی هم کرد!به لایه کاربر و کل آنچه در آن لایه ‌می‌تواند وجود داشته باشد و جزئی از آن باشد میگن Front-End. ببینید مثلا اشکال هنری و انیمیشن جزئی از Front-End هست ولی در Back-End چنین چیزای معنی نداره! از طرفی الگوریتم مثلا تابع تبدیل عدد به رشته هم می‌تونه جزئی از Front-End باشه هم جزئی از Back-End، یعنی اون عملیات رو هم Back-End میتونه انجام بده و به Front-End بده و هم میتونه اماده نکنه و خام بده به Front-End تا اونجا این کار انجام بشه. پس وقتی می‌گیم توسعه دهنده Front-End داریم در مورد یک دامنه وسیع حرف میزنیم ، داریم میگیم همه آنچه در این لایه می‌تواند باشد رو باید تو بتونی توسعه بدی! حرف غلطی هم نیست ولی وقتی ما به بخش الگوریتمی این لایه کاری نداشته باشیم مثلا فقط یک لندینگ پیچ هست دیگه نباید بنویسی استخدام توسعه دهنده Front-End باید بخش الگوریتمی رو جدا کنی و بنویسی توسعه دهنده رابط کاربری میخوام.این شاخه بین شاخه اول و سوم هست، بین گرافیک و الگوریتم. البته عموما این تناسب در نقطه وسط نیست و UI بیشتر وقت رو میگیره و الگوریتم‌ها نقش کم‌رنگ‌تری دارن.البته افراد بسته به شخصیتشون به یکی از سمت‌ها غش می‌کنن و تخصص بیشتری در اون پیدا می کنن اما تعداد کسانی که به گرافیک علاقمندهستند بیشتره تا الگوریتم و ساختار.محل کار: اگر شما فردی بخواین که Front-End پروژه رو توسعه بده و دانش متوسطی در همه زمینه‌ها داشته باشه افراد این شاخه گزینه خوبی هستن، البته فراموش نکنید که به دلیل وسعت دامنه هنر تا ریاضی این بخش افراد در اکثر امور در سطح متوسط هستن و نباید توقع داشت که در حد و کیفیت متخصص‌های سایر شاخه‌ها خروجی تولید کنه.البته همون طور که گفتم افراد این شاخه به یکی از سمت‌ها بیشتر تمایل نشون و تخصص بیشتری دارن پس اگر نخواین که در همه چیز متوسط باشه این امکان وجود داره که در مصاحبه فردی که به سمت تخصص مورد نظر شما بیشتر علاقه داره رو کشف و استخدام کنید.3) شاخه مهندسیتوضیح: مهندسی Front-End یا همون Front-End Engineering که شخص متخصص خودش رو Front-End Engineer معرفی می‌کنه. احتمالا به چشمتون نخورده چون بسیار جدید هست و در دنیا هم داره تازه جای خودش رو باز می‌کنه و احتمالا چند سال دیگه برای توسعه ابزارهای پیشرفته که بشون نیاز معروف بشن. بهترین گزینه برای دانشجو‌ها چون تا خودشون رو آماده کنن بازارکارش هم اوکی شده. این شاخه شاید HTML,CSS بخش بسیار جزئی اون باشه و اصلا به چشم نیاد و الگوریتم‌ها و ساختار‌هاست که بیشتر وقت توسعه دهنده رو میگیره. در واقع چیزی شبیه به Back-End که در Front-End اتفاق می‌افته. سمت سرور یک سرویس‌دهنده داده‌های خام هست که فقط کارش ذخیره و ارسال داده‌های خام همراه با اعتبار سنجی‌هاست. مزیت این کار این هست که به جای این که پردازش‌ها در سرور اتفاق بی‌افته و نیاز به سروری قوی برای این کار باشه پردازش‌ها روی سیستم کاربرها اتفاق می‌افته و سرور نفسی راحت می‌کشه. بخشی از افرادی که پتانسیل توسعه دهنده ‌Back-End رو دارن سر از این فیلد در Front-End در خواهند آورد. البته نا گفته نماد که هنوز هم پای HTML,CSS و گرافیک و هنر در میان هست ولی سنگینی حجم کار بیشتر به سمت ساختار‌ و الگوریتم‌ها است. از طرفی یک مهندس Front-End باید توانایی خلق ساختارهای کاستوم رو داشته باشه در حالی که از توسعه دهنده Front-End بیشتر انتظار میره از ساختار‌های اماده استفاده کنه و نهایتا توانایی تغییرشون رو داشته باشه.من احتمال میدم با باب شدن این شاخه افراد آن با افراد شاخه گرافیکی تیم شوند و اتفاقی که در گذشته بین Back-End و Front-End می‌افتاد در اینجا تکرار شود ولی این بار با رنگ و بوی یک محیط و زبان مشترک و این ممکن‌ می‌تونه تهدیدی برای بازار کار توسعه دهنده‌های Front-End به حساب بیاد.عنوان‌های آگهی استخدام Front-Endپس بخوایم از ریشه یک تقسیم داشته باشیم و بین دامنه گرافیک تا الگوریتم یا بهتر بگیم هنر تا مهندسی اول باید ببینم در کدوم شاخه نیرو میخوایم. اگر شاخه اول بود که ساده هست بزنید UI developer یا همون توسعه دهنده رابط کاربری و تمام، البته ذکر سبک طراحی‌ مهم خواهد بود کمی هنری میش داستان چون این دسته هنرمند هستن و روحیشون حساسه شاید اصلا اعتقادی به فلان سبک نداشته باشن و نتون خروجی خوبی تحویل بدن پس بهتره توضیح بدید.در مورد شاخه دوم یک ریز کاری وجود دارد اونم تکنولوژي توسعه هست. اگر توسعه دهنده Front-End شاخه فوق تخصصی‌ای نداشته باشه یعنی با JS خام و jQuery کد بزنه و قرار هم باشه این فرد در درون کدهای Back-End کد بزنه همون Front-End Developer یا توسعه دهنده Front-End رو بنویسید درست هست. اما اگر تکنولوژی تخصصی‌ای رو مد نظر دارید باید نام اون تکنولوژی رو در عنوان بنویسید مثلا "استخدام توسعه دهنده React JS" چون افراد متخصص در یکی از این تکنولوژی‌ها عموما نه علاقه‌ای به دیگر تکنولوژی‌ها دارند نه تخصص‌کافی رو چون شاید پایه این تکنولوژی‌ها یکسان باشه ولی معماری و ساختار این کتابخانه و فریم ورک‌ها با هم متفاوت هست.در مورد شاخه سوم هم مشابه شاخه دوم هست وقتی یک توسعه دهنده JS خام می‌خواید و پروژه کاستوم هست باید بنویسید Front-End Engineer و اگر تکنولوژي خاصی مد نظر هست باید نامش رو عنوان بیارید و در متن نوشته بشه استخدام Front-End Engineer تا با شاخه دوم اشتباه نشه. این مطالب هم می‌تونه واست سودمند باشه: https://virgool.io/JavaScript8/%DA%86%D8%B1%D8%A7-%D8%AC%D8%A7%D9%88%D8%A7-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D8%AE%D9%86%DA%AF-%D8%A8%D9%87-%D9%86%D8%B8%D8%B1-%D9%85%DB%8C%D8%B1%D8%B3%D8%AF-mtc1utxmhatb