Full Stack Developer کیست؟
کسی که هم Front End بلده و هم Back End و معمولا تو هر دو به صورت همزمان دانش خیلی عمیقی نداره. به عبارتی از پس کار های عمومی به خوبی بر میاد اما اگه یه موقع نیاز باشه یه برنامه خیلی تخصصی بنویسه معمولا شرایط براش چالش بر انگیز میشه
برنامه نویس Full Stack شبیه پزشک عمومی میمونه. همه کار میتونه بکنه، همه جا رو میتونه معاینه کنه اما عمل های تخصصی نمیتونه بکنه
اگه دقت کرده باشید، اغلب اوقات اگه مریض بشیم، مشکل مون با مراجعه به پزشک عمومی حل میشه. اغلب نیاز نیست که به پزشک متخصص مراجعه کرد. تو برنامه نویسی هم همینطوره. اغلب پروژه ها رو یه برنامهنویس فول استک میتونه انجام بده
چه کسانی تو برنامهنویسی Full Stack موفق تر خواهند بود؟
اگه حس میکنی روحیاتت هم با فرانت هماهنگه و هم بکند و ویژگی های زیر رو هم داری میتونی تو برنامهنویسی Full Stack موفق تر باشی
- اگه ناراحت نمیشی که خیلی وقت ها تو بحث های تخصصی کم بیاری
- اگه تنهایی کار کردن رو به کار گروهی ترجیح میدی
- اگه از این شاخه به اون شاخه پریدن برات جذابه
- اگه تجربه کردن چیز های جدید برات لذت بخشه
- اگه خوندن کتاب هایی با سطح عمومی رو تو زمینه های مختلف به خوندن و عمیق شدن تو کتاب های خاص یک حوزه ترجیح میدی
مزایا و معایب Full Stack بودن
اغلب حقوق برنامهنویسان فول استک بیشتر از یک برنامهنویس فرانت یا بکنده چون کار هر دو رو انجام میده اما از طرحی، اغلب اوقات شانس شون برای کار تو شرکت های بزرگ کمتره چون شرکت های بزرگ ترجیح میدن که کار ها رو به صورت تخصصی پیش ببرند. شرکت های بزرگ اونقدری پروژه شون پیچیده شده که نیاز به داشتن دانش عمیق تری در هر حوزه ای هست. از طرفی معمولا پولش رو دارند که چندین برنامهنویس استخدام کنند.
شرکت های بزرگ معمولا محصولات شون به بلوغ کافی رسیده و همه چیز ساختارمند پیش میره اما تو شرکت های کوچک معمولا هنوز ساختاری شکل نگرفته و همه چیز خیلی تازه است و میشه کلی توش خلاقیت به خرج داد. پس اگه به روتین شدن کار ها علاقه ندارید بهتره فول استک بشید.
اگه فول استک بشید ممکنه مدت ها یا سال ها تو شرکت های کوچک کار کنید. اغلب اوقات، پروژه هایی که این شرکت ها انجام میدن شکست میخوره و به عنوان یک برنامهنویس فول استک، ممکنه بعد از سالها کار، رزومه تون زیاد قوی نباشه چون هر جایی که قبلا کار کردید پروژه شون شکست خورده و زیاد چیزی برای ارائه به کارفرمای جدید ندارید. پس ممکنه رزومه تون ضعیف بشه
برنامهنویس های فول استک وقتی دنبال کار میگردند خیلی دوست دارند که برای موقعیت های شغلی فرانت و بکند هم رزومه سابمیت کنند چون همیشه هم فرانت کد زدن و هم بکند. برای همین فکر میکنند که از پس مصاحبه های فرانت و بکند بر میان. اما وقتی آگهی های فرانت و بکند رو میبینند خیلی وقت ها نا امید میشن چون چیز هایی تو آگهی ها نوشته شده که بلد نیستند. البته شاید این مرحله رو پشت سر بذارند و وارد مرحله مصاحبه بشند که در اینصورت، در مرحله مصاحبه به احتمال زیاد رد خواهند شد. بعد از جلسه میشینند با خودشون فکر میکنند چیشد که رد شدم؟ من که این همه سابقه کار دارم … اما خب دیگه اینطوریه کاریش نمیشه کرد. برنامهنویس فول استک همیشه از این مساله ضربه میخوره
اما تصور کنید که شرکت یک CTO یا مدیرفنی بخواد. از بین برنامهنویس فرانت و بکند و فول استک، کدومشون برای این موقعیت گزینه مناسب تری هست؟ جواب من به این سوال اینه: برنامهنویس فول استک. چرا؟ چون که اشراف خیلی بهتری نسب به دو تای دیگه روی صفر تا صد فرایند توسعه نرم افزار داره.
بازار کار Full Stack چطور است؟
برای اینکه متوجه بشید بازار کار فرانت چقدر بزرگ است کافیست وارد سایت های استخدامی بشید عبارت «Full Stack» را سرچ کنید. اون وقت متوجه میشید که این حوزه چقدر بازار کار دارد.
چطور میشه برنامهنویس Full Stack شد؟
براتون یک نقشه راه آماده کردهام و همه چیز هایی که باید یاد بگیرید رو توش قرار داده ام. این نقشه راه رو با تمرکز روی بازار کار آماده کرده ام. یعنی سعی کرده ام فقط مواردی که برای ورود به بازار کار خیلی ضروری هست رو توش بیارم. وگرنه مواردی که تو فرانت میشه یاد گرفت خیلی زیاد هست.
برنامهنویس Full Stack نشید اگه …
اگه اول راهید و تازه میخواهید وارد بازار کار بشید، توصیه میکند بیخیال Full Stack شدن بشید. فول استک شدن نباید هدفتون باشه، فول استک شدن باید خودش اتفاق بیوفته. شما یه موقع پیش میاد میبینید فول استک شدید. میپرسید چطور؟ اینطوری که مثلا تو یه شرکت برنامهنویس بکند هستید و نیاز ایجاب میکنه که شما فرانت رو هم یاد بگیرید و تو کار ازش استفاده کنید. بعد از این اتفاق میبینید که در راستای فول استک شدن قدم برداشته اید.
دوستان گلم نمیشه هم فرانت و هم بکند رو همزمان یادگرفت و تو هر دو موفق بود چون باید توی کار یاد گرفته بشه. برای همین توصیه میکنم اگه توی کار پیش اومد که در کنار فرانت یا بکند، اون یکی رو هم یاد بگیرید خوبه که یاد بگیرید و فول استک بشید وگرنه این کارو نکنید.
| عنوان | زیرمجموعهها | جونیور | میدلول | سینیور |
|---|---|---|---|---|
| Internet & Networking Basics | مبتدی | متوسط | حرفهای | |
| Programming Fundamentals | Python Basics | مبتدی | متوسط | حرفهای |
| JavaScript Basics | مبتدی | متوسط | حرفهای | |
| Algorithms & Data Structures | Language Oriented Algorithms | مبتدی | متوسط | حرفهای |
| Problem Solving & Data Structures | متوسط | حرفهای | ||
| HTML | مبتدی | متوسط | حرفهای | |
| CSS | مبتدی | متوسط | حرفهای | |
| Advanced JavaScript (ES6+) | مبتدی | متوسط | حرفهای | |
| TypeScript | مبتدی | متوسط | حرفهای | |
| CSS Web Frameworks | Bootstrap | مبتدی | حرفهای | |
| TailwindCSS | مبتدی | متوسط | حرفهای | |
| JS Web Frameworks | React | مبتدی | متوسط | حرفهای |
| Next.js | مبتدی | متوسط | حرفهای | |
| Python Backend | Django Framework | مبتدی | متوسط | حرفهای |
| FastAPI | مبتدی | حرفهای | ||
| Async Programming (Python) | مبتدی | حرفهای | ||
| Databases | SQL & Relational DB (PostgreSQL, MySQL) | مبتدی | متوسط | حرفهای |
| NoSQL (MongoDB) | مبتدی | حرفهای | ||
| ORM (Django ORM / SQLAlchemy) | مبتدی | متوسط | حرفهای | |
| API Integration / Backend Services | RESTful API | مبتدی | متوسط | حرفهای |
| GraphQL | مبتدی | حرفهای | ||
| WebSocket / Real-time | مبتدی | حرفهای | ||
| Version Control Tools | GitHub | مبتدی | متوسط | حرفهای |
| GitLab | مبتدی | متوسط | حرفهای | |
| Testing | Frontend Testing (Jest) | متوسط | حرفهای | |
| API Testing (pytest / unittest) | متوسط | حرفهای | ||
| E2E Testing (Cypress) | مبتدی | حرفهای | ||
| Build Tools | Webpack / Vite | مبتدی | حرفهای | |
| Gulp (optional) | متوسط | |||
| Deployment | Docker & Docker Compose | مبتدی | متوسط | حرفهای |
| VPS Deployment (Nginx + Gunicorn/Uvicorn) | مبتدی | حرفهای | ||
| CI/CD | GitHub Actions | متوسط | حرفهای | |
| GitLab CI/CD | متوسط | حرفهای | ||
| Authentication & Authorization | مبتدی | حرفهای | حرفهای | |
| Security (Frontend + Backend) | مبتدی | متوسط | حرفهای | |