اگر در دنیای برنامه نویسی مشغول فعالیت باشید یقینا میدانید که فرانت اند و بک اند چه تفاوت هایی با یکدیگر دارند. اما اگر شما جز آن دسته از افراد هستید که در محیط کار یا در گروه توسعه دهندگان خیلی با واژه فرانت اند و بک اند برخورد کردهاید ما در این مقاله سعی داریم تفاوت این دو را بیان کنیم.
چرا برنامه نویسی به دو بخش تقسیم شده است؟
برنامه نویسی دنیای گستردهای است و هیچ کس نمیتواند ادعا کنید همه آن را بلد است. برنامه نویسی را از دیدگاههای مختلفی میتوان طبقهبندی کرد؛ به عنوان مثال از نظر زبانهای برنامه نویسی یک برنامه ممکن است با زبانهای مختلفی از جمله جاوا، پایتون، سی شارپ و … نوشته شود و طبیعتا ما متخصصان برنامه نویسی خواهیم داشت که هر کدام به یک یا چند زبان آشنا هستند.
اما یک طبقهبندی دیگر در دنیای برنامهنویسی موضوع Back end و Front end است. در یک برنامه (به عنوان مثال یک برنامه حسابداری آنلاین را در نظر بگیرد) از فناوریهای و ساختارهای مختلفی استفاده میشود که از جمله آنها میتوان به ظاهر برنامه، APIها، زیرساخت و پایگاه داده اشاره کرد. از آنجایی که طبیعتا همه دولوپرها به تمامی این موضوعات تسلط ندارند و لازم است بتوان به نوعی ارتباط و همکاری بین این بخش ها را شکل داد، در یک طبقهبندی دیگر میتوان یک برنامه کامپیوتری را به دو بخش Front و Back تقسیم کرد.
فرانت اند چیست؟
وقتی شما از یک نرمافزار حسابداری آنلاین استفاده میکنید، وارد وب سایت میشوید و شاهد یک محیط گرافیکی با گزارشهای متعدد و مجموعهای از ابزارها هستید. این بخش گرافیکی یعنی دقیقا قسمتی که کاربر نهایی با آن سروکار دارد اصطلاحا بخش Front End گفته میشود.
برنامه نویسان فرانت اند بدون درگیر شدن با بخشهای زیرساختی یک نرمافزار تلاش دارند تجربه خوشایندی را برای کاربران رقم بزنند و از این رو با مباحث مختلفی از جمله برنامه نویسی سمت کاربر (که در بخش وب عموما شامل HTML و CSS و JS میشوند)، مباحث تجربه کاربری و زیبایی شناختی، رابط کاربری و …آشنا هستند. البته هر کدام از این بخشها هم دانش و علم خود را میطلبد و گاها چندین نفر در هر کدام از این شاخهها فعالیت میکنند تا در نهایت یک رابط کاربری خوب را شکل دهند.
بک اند چیست؟
هر چه یک برنامه نویس از کاربر و رابط کاربری آن فاصله میگیرد به سمت بک اند گرایش پیدا میکند. در بخش بک اند بر خلاف بخش فرانت که برنامه نویسان باید ظاهر گرافیکی را برای کاربران ایجاد کنند، دولوپرها با دادهها، نحوه ذخیره و بازیابی دادهها، اعمال تغییرات روی آنها، تولید گزارشهای مناسب و… درگیر هستند.
در این بخش زبانها و ساختارهای برنامهنویسی متعددی مورد استفاده قرار میگیرد که از جمله آنها میتوان به زبانها و ساختارهای SQL، My SQL، پایتون، جاوا، ASP .NET اشاره کرد. در این بخش هم به دلیل گستردگی فعالیتها و مهارتهای مورد نیاز شاهد همکاری یک تیم از جمله تیم پایگاه داده و تیم برنامه نویسی Back End هستیم که همگی با یکدیگر در تلاش هستند تا زیرساخت مناسبی را برای برنامه فراهم کنند.
قضیه Full Stack دولوپر چیست؟
همانطور که گفتیم در دنیای برنامه نویسی از ساختارها، زبانها و ابزارهای بسیار متعددی استفاده میشود و طبیعتا همه افراد نمیتوانند به تمامی این موارد مسلط باشند. از این رو در ساخت یک برنامه ممکن است گاها یک تیم چند صد نفری با هم همکاری کنند تا یک برنامه را شکل دهند. اما لزوما در همه برنامه ها ما شاهد یک تیم گسترده نیستیم، به عنوان مثال شخصی که میخواهد یک سایت ساده طراحی کند عقلانی نیست که یک گروه از افراد را برای طراحی بخش بک و یک گروه را برای طراحی بخش فراند استخدام کند.
در این شرایط ما شاهد گروهی دیگر از برنامه نویسان هستیم که هم روی بخش Front و هم روی بخش Back مسلط هستند و تمامی فعالیتهای مرتبط با دو بخش را به شکل همزمان انجام میدهند. به این افراد اصطلاحا فول استک دولوپر گفته میشود.
چرا همیشه از فول استک ها استفاده نکنیم؟
دنیای برنامه نویسی دنیای بسیار گستردهای است و یک نفر نمیتواند به همه این دانشها مسلط باشد. در ساخت یک برنامه کوچک و ساده که تنها نیاز به دانش مرتبط با HTML و CSS در بخش فرانت و یک پایگاه داده ساده مانند My SQL در بخش ذخیره سازی و یک برنامه سمت سرور مانند PHP دارد ممکن است یک فرد این توانایی را داشته باشد که همه این موارد را بداند و در نتیجه خودش برنامه را از صفر تا صد طراحی کند. اما در پروژههای بزرگ ممکن است دیگر پایگاه داده My SQLجوابگو نباشد و لازم باشد از پایگاه داده تخصصی مانند Mongo DB استفاده شود. یا حتی در پروژههای بزرگ گاها از چندین زبان برنامه نویسی به طور همزمان برای ارتباط با سرور استفاده میشود که مهارت در همه این زبان ها کار سادهای نیست.
در چنین شرایطی لازم است به سراغ برنامه نویسان تخصصی برویم که صرفا روی یک حوزه خاص متمرکز شدهاند.
چه برنامه نویسی شویم؟
یقینا پاسخ دقیقی به این سوال وجود ندارد و عوامل مختلفی از جمله علاقه شخصی در آن دخیل است. در دوره های برنامه نویسی مختلفی مانند دوره MCSA: Web Application هر دو بخش پوشش داده میشود و افراد هم به مهارتهای مرتبط با سمت کاربر آشنا میشوند و هم زبان ASP .NET را برای ارتباط با سرور آموزش میبینند. اما عموما گرایش بیشتری نسبت به برنامه نویسی سمت فرانت وجود دارد چراکه در این بخش خروجی کار ملموس تر است و گاها برای کاربران این ویژگی جذابیت بیشتری را به همراه دارد.