وبلاگ
Full stack کیست؟ به چه کسی فول استک دولوپر میگویند؟
اگر در شبکههای اجتماعی، موضوعات مربوط به برنامهنویسی را دنبال کنید، احتمالا با عبارتهایی شبیه به برنامهنویس فول استک، یا فول استک دولوپر، برخورد داشتهاید. از لحاظ لغوی، این عبارت یعنی برنامهنویس با پشتوانهی کامل. در بازار کار هم، افرادی این عنوان را دارند که میتوانند صفر تا صد یک وبسایت را به تنهایی طراحی و پیادهسازی کنند. در ادامه، با کار این دسته از برنامهنویسها بیشتر آشنا میشویم. سپس بررسی میکنیم یک برنامهنویس باید چه مسیری را طی کند تا تبدیل به یک Full stack developer شود.
full stack چیست؟
عبارت “Full Stack” در زمینه توسعه نرمافزار به معنای داشتن مهارتها و تواناییهای لازم برای کار در تمام مراحل یک پروژه نرمافزاری اشاره دارد. این مفهوم مرتبط با دانش و تجربه در سه لایه اصلی توسعه نرمافزار است که عبارتند از:
- Front-end (طرف کاربری یا Client-side): این لایه مربوط به بخشی از نرمافزار است که کاربران با آن در ارتباط هستند. این شامل طراحی و توسعه قسمتهایی است که در مرورگر یا برنامه کاربردی قابل مشاهده هستند. از زبانهایی مانند HTML، CSS و JavaScript برای توسعه و طراحی وبسایتها و اپلیکیشنهای موبایل در این لایه استفاده میشود.
- Back-end (طرف سروری یا Server-side): این بخش از نرمافزار مرتبط با قسمتهای پنهان و پشت صحنه برنامه است. این شامل سرورها، پایگاه دادهها، لاگین و پروتکلهای ارتباطی است که امکان ارسال و دریافت داده را فراهم میکند. برای توسعه Back-end معمولاً از زبانها و فریمورکهایی مانند Node.js, Python, Ruby, PHP, Java, .NET و … استفاده میشود.
- Database (پایگاه داده): این لایه مربوط به ذخیره و مدیریت دادههای مورد استفاده در نرمافزار است. این شامل طراحی و مدیریت پایگاه دادهها میشود و از سیستمهای مختلف مانند MySQL, PostgreSQL, MongoDB, SQLite و … استفاده میکند.
به چه کسی فول استک دولوپر میگویند؟
برنامهنویسی وب، به دو زمینهی تخصصی اصلی تقسیم میشود. برنامهنویسی سمت سرور یا بکاند، و برنامهنویسی سمت کاربر یا فرانتاند. برنامهنویسهای بک، بیشتر کار طراحی پایگاههای داده، طراحی سرویسها و مهندسی سرور را بر عهده دارند. در مقابل، برنامهنویسهای سمت کاربر، وظیفهی توسعهی بخشهایی از وبسایت را دارند که کاربر میبیند و با آنها تعامل دارد. مثل پیادهسازی رابط کاربری وبسایت، طراحی و توسعهی منوها، صفحات محصول و … .
باور غلطی که برخی دربارهی برنامهنویسهای فول استک دارند، این است که آنها با تعداد زیادی از زبانهای برنامهنویسی آشنا هستند. در حالی که به هیچ وجه اینطور نیست. بعضی از توسعهدهندگان فول استک، فقط یک زبان برنامهنویسی بلندند و با همان زبان، هم بکاند سایت را توسعه میدهند و هم بخش فرانت را. فول استک بودن، هیچ ارتباطی با زبان برنامهنویسی که توسعهدهنده با آن کار میکند، ندارد.
چطور میتوانم یک برنامهنویس فول استک شوم؟
برای این که به مرحلهی فول استک در توسعهی وبسایت برسید، باید هم به برنامهنویسی سمت کاربر مسلط باشید هم به برنامهنویسی سمت سرور. با توجه به این که این دو زمینه، کاملا مستقل از هم هستند، میتوانید بسته به علاقه، از هر کدام که خواستید شروع کنید. پس از اتمام یک مسیر، میتوانید زمینهی بعدی را برای یادگیری شروع کنید. اما از آن جایی که معمولا شروع برنامهنویسی وب، با آموزش HTML و CSS است، خیلی از برنامهنویسهای Full stack، مسیر یادگیری را از سمت فرانتاند شروع کردهاند.
مسیر یادگیری پیشنهادی ما برای کسانی که علاقه دارند یک فول استک دولوپر شوند، اینگونه است:
- مبانی فرانت اند
HTML5/ CSS3
آموزش جاوا اسکریپت ، به عنوان محبوبترین زبان برنامهنویسی فرانت اند
آموزش کار با کتابخانهها و فریمورکهای جاوا اسکریپت - مبانی بک اند
آموزش مدیریت پایگاه داده و زبان SQL
آموزش یکی از زبانهای برنامهنویسی بک اند، یا js برای برنامهنویسی سمت سرور با جاوا اسکریپت
آموزش الگوریتمها و ساختارهای داده - برخی از مبانی مهندسی نرمافزار، مانند الگوهای طراحی
با دقت در مسیر بالا، مشاهده میکنید که اگر به زبان برنامهنویسی جاوا اسکریپت مسلط باشید، میتوانید بدون نیاز به یادگیری زبانی دیگر، به یک برنامهنویس فول استک تبدیل شوید.
حقوق برنامهنویس فول استک چقدر است؟
حقوق یک برنامهنویس، بستگی به سطح ارشدیت و تجربهی وی دارد. به طور کلی، میتوان برنامهنویسهای فعال در بازار کار را به دو دستهی جونیور و سنیور تقسیم کرد. حقوق برنامهنویسهای سنیور در هر زمینهای، از حقوق برنامهنویسهای جونیور بیشتر است. پس بهترین راه برای افزایش درآمد از برنامهنویسی، انجام پروژههای مختلف برای کسب تجربهی بیشتر است. اما در شرایط برابر، دستمزدی که یک برنامهنویس فول استک دریافت میکند، از حقوق برنامه نویس فرانت یا بک بیشتر است. این موضوع هم دربارهی شغلهای استخدامی صدق میکند و هم برنامهنویسهایی را که به صورت فریلنس کار میکنند، شامل میشود.
تحصیلات مورد نیاز برای یک برنامهنویس فول استک چیست؟
مانند تمام شاخههای دیگر برنامهنویسی، برای این که یک توسعهدهندهی موفق فول استک باشید، لزوما نیازی به مدرک دانشگاهی ندارید. دورههای آموزش برنامهنویسی زیادی در اینترنت وجود دارد که به صورت رایگان یا پولی، با بهترین کیفیت برنامهنویسی را به شما آموزش میدهند. اما آشنایی با برخی از مبانی مهندسی نرمافزار برای موفقیت در این مسیر شغلی ضروری است. این موارد را در مسیر یادگیری پیشنهادی ما در بالا، مشاهده میکنید. اما چیزی که در رزومهی یک برنامهنویس Full stack اهمیت زیادی دارد، تجربهی کاری وی است. هیچ کس نمیتواند در ابتدای ورود به بازار کار، ادعا داشته باشد که یک توسعهدهندهی فولاستک است. برای رسیدن به این درجه، نیاز به چندین سال تجربهی کار در پروژههای برنامهنویسی مختلف دارید.
انواع توسعهدهندگان فول استک
به طور کلی، برنامهنویسهای فول استک با توجه به مسیر شغلی که انتخاب میکنند، به دو دسته تقسیم میشوند:
- توسعهدهندگان فول استک وب
- توسعهدهندگان فول استک اپلیکیشن موبایل
با توجه به این که کدام مسیر را برای کار انتخاب کنید، تکنولوژیهایی که باید کار با آنها را بلد باشید، تفاوت میکند. مثلا توسعهدهندهی فول استک وب، باید با مفاهیمی مثل طراحی وب رسپانسیو آشنا باشد. اما برای یک فول استک دولوپر اپلیکیشن، برنامهنویس باید با مفاهیم و تکنولوژیهایی مانند اپلیکیشنهای پیشرونده یا PWA آشنا باشد (میتوانید در این باره، مقاله «PWA چیست» را مطالعه کنید).
ابزارهای مورد نیاز برای یک توسعهدهندهی فول استک
علاوه بر زبانهای برنامهنویسی و مبانی مهندسی نرمافزار که در بالا به آنها اشاره کردیم، یک برنامهنویس فول استک، برای موفقیت در شغل خود، باید با یک سری ابزارهای دیگر هم آشنا باشد:
- سیستمهای کنترل ورژن مانند گیت و گیتهاب
- کار با APIها (برای آشنایی با این مفهوم، میتوانید مقاله «API چیست» را ببنید)
- آشنایی مختصر با ابزارهای طراحی گرافیک مانند فتوشاپ، Adobe XD یا فیگما
- ابزارهای مدیریت پروژههای توسعهی نرمافزار مانند جیرا