اولین سؤال برای افرادی که بهتازگی قصد دارند وارد دنیای جذاب برنامهنویسی وب شوند، این است که تفاوت بکاند و فرانتاند چیست؟ پس از آن، سؤالات تخصصیتری مطرح میشوند؛ مثلاً درآمد فرانتاند بیشتر است یا بکاند؟ یا اینکه کدام یک از این دو حوزه سختتر است؟ بیایید بحث را از همین نقطه، یعنی بررسی تفاوتهای میان فرانتاند دولوپر و بکاند دولوپر، آغاز کنیم.
فرض کنید شما در یک قایق پارویی در اقیانوس منجمد شمالی نشستهاید و مشغول تماشای کوه یخ بزرگی هستید. این کوه یخ را بهعنوان وبسایت و خودتان را بهعنوان کاربر اینترنت در نظر بگیرید که در حال بازدید از وبسایت است. بخش فرانتاند وبسایت همان قسمتی از کوه یخ است که روی آب شناور مانده و قابل مشاهده است.
این بدان معناست که تمام مؤلفههای قابل مشاهده وبسایت، از منوها و رنگها گرفته تا دکمهها و فرمهای ثبتنام، در قسمت فرانتاند قرار دارند. مسئولیت طراحی این قسمت از وبسایت بر عهده فرانتاند دولوپر است. این برنامهنویس با استعداد، با استفاده از زبانهای برنامهنویسی مختلف، تمام قسمتهای قابل مشاهده وبسایت را طراحی و جذابیتهای دیداری آن را افزایش میدهد.
با این حال، فرانتاند دولوپر تنها مسئولیت کدنویسی فرانتاند را بر عهده دارد و طراحی گرافیکی آن به عهده طراحان UI و UX است. در واقع، طراح UI و UX ابتدا طرح گرافیکی وبسایت را ایجاد کرده و سپس آن را در اختیار فرانتاند دولوپر قرار میدهد تا مرحله طراحی فرانتاند آغاز شود.
شما همچنان روی قایق در حال تماشای کوه یخ هستید و احتمالاً میدانید که حجم زیادی از کوه یخ درون آب قرار دارد و قابل مشاهده نیست. این قسمت همان بکاند وبسایت است. بکاند دقیقاً چه کاری انجام میدهد؟ هر بار که کاری را در وبسایت انجام میدهید (مثلاً روی لینک یا دکمه «ورود» کلیک میکنید)، مجموعهای از کدهای نوشتهشده در بخش بکاند وبسایت دست به دست هم میدهند تا یک نتیجه به شما نشان دهند. این نتیجه ممکن است باز شدن صفحهای جدید یا نشان دادن پیغام خطا بهدلیل وارد کردن نام کاربری یا رمز عبور اشتباه باشد.
بهعنوان توضیح بیشتر، هر بار که شما در وبسایت عملی انجام میدهید، در واقع در حال ارسال درخواست (Request) به سرور یا هاستینگ هستید که وبسایت را میزبانی میکند. وظیفه سرور نیز پاسخگویی به تمامی درخواستهای ارسالی شماست. تمامی این کارها با کدهای بکاند انجام میشود؛ بنابراین، وظیفه بکاند دولوپر کدنویسی این قسمت با استفاده از زبانهای برنامهنویسی مختلف است. بهطور خلاصه، مسئولیت ارتباط با سرور و پایگاه داده وبسایت بر عهده بکاند است.
با توجه به تفاوتهای میان فرانتاند و بکاند و وظایف هر یک، حالا بهتر است با زبانهای برنامهنویسی معروف این دو حوزه آشنا شویم. برنامهنویسی وب، بهویژه، دنیایی پویا است و زبانهای برنامهنویسی و فریمورکهای متعددی وجود دارند که هر یک ویژگیهای خاص خود را دارند.
از جمله زبانهای برنامهنویسی و فریمورکهایی که فرانتاند دولوپر باید بر آنها مسلط باشد، میتوان به موارد زیر اشاره کرد:
اگر از فرانتاند دولوپر بخواهید که تنها یک زبان برنامهنویسی را انتخاب کند، قطعاً JavaScript را انتخاب خواهد کرد. این زبان بهعنوان پادشاه زبانهای برنامهنویسی در سمت فرانتاند شناخته میشود.
بکاند دولوپر معمولاً با HTML و CSS کار ندارد، اما این دو زبان نشانهگذاری زیربنای هر دو قسمت بکاند و فرانتاند هستند. بنابراین، بکاند دولوپر نیز باید در حد نیاز با این دو زبان آشنا باشد. علاوه بر این، تسلط بر زبانها و فریمورکهای زیر نیز برای هر توسعهدهنده بکاند ضروری است:
سؤالی که معمولاً برای توسعهدهندگان وب آینده پیش میآید این است که آیا برنامهنویسی بکاند سختتر است یا فرانتاند؟ پاسخ به این سؤال به نوع نگرش شما به برنامهنویسی بستگی دارد. خروجی برنامهنویسی فرانتاند در لحظه قابل مشاهده است، در حالی که خروجی کدهای بکاند معمولاً بهصورت غیرمستقیم و از طریق تعاملات کاربر با وبسایت نمایان میشود.
برنامهنویسی بکاند نیاز به دانش ارتباط با سرور و پایگاه داده دارد و ممکن است با خطاهایی مواجه شوید که به سرور شما مربوط میشود. در عوض، تعداد زبانهای برنامهنویسی بکاند و فریمورکها کمتر است و یادگیری آنها معمولاً سادهتر است. بهعنوان مثال، زبان پایتون بهدلیل سینتکس سادهاش، یکی از گزینههای مناسب برای ورود به دنیای برنامهنویسی محسوب میشود.
این سؤال نیز از جمله سؤالاتی است که پاسخ آن به شرایط مختلف بستگی دارد. معمولاً درآمد بکاند دولوپر بیشتر از فرانتاند دولوپر است، زیرا پیچیدگیهای بیشتری در کدنویسی بکاند وجود دارد. با این حال، تقاضای کار برای هر دو حوزه در حال حاضر بالا است و بسیاری از توسعهدهندگان وب بهصورت فریلنسری با شرکتهای ایرانی و خارجی همکاری میکنند.
در نهایت، بسیاری از برنامهنویسان وب در هر دو حوزه فرانتاند و بکاند تخصص دارند و به این افراد Full Stack Developer میگویند. تسلط بر هر دو حوزه نهتنها به پیشرفت شغلی کمک میکند، بلکه امکان پذیرش پروژههای کامل را نیز فراهم میآورد.