آیا هنوز هم تقاضایی برای توسعه‌دهندگان Full-Stack وجود دارد؟

در سال‌های اخیر صحبت‌های زیادی در ارتباط با توسعه‌دهندگان full-stack و آینده آن‌ها شده است. بعضی‌ها معتقدند که کار توسعه‌دهندگان full-stack دیگر منسوخ شده،‌ درحالی‌که دیگر افراد می‌گویند تقاضا برای توسعه‌دهندگان فول استک هرگز بیشتر از این نبوده است.

در این مقاله نگاهی به پیش‌بینی‌های تیره‌وتار گذشته و ادعاهای بی‌پایه برای بیان وضعیت فعلی توسعه‌دهندگان full-stackمی‌اندازیم.

تعریف توسعه‌دهنده Full-Stack

توسعه‌دهنده full-stack کسی است که با تمام لایه‌های یک برنامه کاربردی آشناست. این لایه‌ها در واقع مجموعه‌ای از فناوری‌های مختلف لازم برای تکمیل یک پروژه هستند که درواقع لغت stackهم از اینجا می‌آید.

· لایه‌های ظاهری: که front-end نامیده می‌شود و لایه ‌ظاهری یک برنامه کاربردی است که شامل تمام چیزهایی است که کاربر مستقیماً به آن دسترسی دارد. این روزها لایه ظاهری عموماً با استفاده از HTML، CSS، JavaScript،jQueryو کتابخانه‌های مختلف جاوااسکریپت مثل React JS، Foundation، Backbone، AngularJSو Ember.jsایجاد می‌شود.

· لایه منطقی: که back-end نامیده می‌شود و لایه منطقی یک برنامه کاربردی شامل تمام ‌فعالیت‌های توسعه‌بخشی است که منجر به تولید رابط کاربری نمی‌شود. درعوض هسته منطقی است که منجر می‌شود همه‌چیزها کار کنند. توسعه‌دهندگان back-end با زبان‌هایی مثل Python، Ruby، Java، PHP و.Netکار می‌کنند.

· لایه داده: گهگاه آن را زیرگروه لایه منطقی بیان می‌کنند، لایه داده مربوط به روش ایجاد داده، خواندن، بروزرسانی و پاک کردن است و از پایگاه‌های داده‌ای مثل MySQL، SQL Server، PostgreSQLو Oracleاستفاده می‌کند.

همان‌طور که تصور می‌کنید، پروژه‌های مختلف نیاز به فناوری‌های مختلفی برای تکمیل شدن دارند؛ بنابراین هیچ دو توسعه‌دهنده full-stackمهارت‌های مشابه هم ندارند.

Daniel Borowski توسعه دهنده Coderbyte می‌گوید: «توسعه‌دهنده full-stack کسی نیست که در تمام موارد ملزومات کار با front-end و back-end متخصص باشد، بلکه به این معناست که می‌تواند با هردو بخش کار کند و بداند زمان ساخت یک برنامه کاربردی چه اتفاقی می‌افتد.»

نسل جدید توسعه‌دهندگان Full-Stack

توسعه‌دهنده full-stack چیز جدیدی نیست. در گذشته برنامه‌های کاربردی نرم‌افزار عموماً از ابتدا تا انتها توسط یک نفر نوشته می‌شدند بنابراین توسعه‌دهندگان full-stack را صرفاً «توسعه‌دهنده» می‌نامیدند؛ اما با پیچیده‌تر شدن برنامه‌های کاربردی، وظایف جدیدی به‌وجود آمدند که افراد مختلفی باید آن‌ها را انجام می‌دادند تا جایی که توسعه رابط کاربری از توسعه بخش منطقی پشت آن جدا شد.

تا مدتی این‌گونه به نظر می‌رسید که تقاضایی برای توسعه‌دهندگان full-stack وجود نخواهد داشت؛ اما آنچه شغل آن‌ها را حفظ کرد ایجاد تغییر اساسی در نحوه توسعه نرم‌افزارها بود. به‌جای ایجاد اجزای جداگانه از scratch، توسعه‌دهندگان نرم‌افزار می‌توانند از مزیت اجزای آماده و فریمورک‌های طراحی برای تسهیل توسعه نرم‌افزار استفاده کنند.

Peter Yared مؤسس و متخصص فناوری Sapho می‌گوید: تا اواخر سال ۲۰۰۰، این امکان برای هر برنامه‌نویسی فراهم بود که یک سایت کاملاً مصرف‌کننده یا"SaaS" ارائه دهد که شامل client وب پویا و پایگاه داده مقیاس‌پذیر باشد. این نسل جدید توسعه‌دهندگان full-stack می‌توانستند با گرو‌هایی از برنامه‌نویسان همان کار را انجام دهند.

براساس نقشه توسعه Stack Overflow در سال ۲۰۱۶، توسعه‌دهندگان full-stack متخصصانی با بالاترین درآمد و بسیار موردتوجه هستند.

Atishe Chordia مؤسس ابداعات doodleblue می‌گوید: «ما دنبال توسعه‌دهنده‌ای هستیم که توانایی حل هر مسئله‌ای را داشته باشد. این به آن معنی است که آن‌ها می‌توانند فناوری‌های جدید را به‌سرعت یادبگیرند و با چشم‌انداز فناوری‌هایی که به‌سرعت درحال تغییر هستند، هماهنگ شوند.»

«بیشتر استارتاپ‌ها به توسعه‌دهنده full-stackنیاز دارند چون نمی‌توانند به یک تیم بزرگ از مهندسان دسترسی داشته باشند. هرچه یک شرکت رشد می‌کند، نقش‌ها تخصصی‌تر می‌شوند، اما نقش مهندسان CTO یا VPعموماً توسط کسی اجرا می‌شود که پیش‌زمینه‌ای در back-end داشته باشد.»

مزایا و معایب توسعه‌دهنده full-stack

کاملاً مشخص است که امروزه سطح تقاضا برای توسعه‌دهندگان full-stack در بالاترین حد خودش است؛ اما چیزی که زیاد واضح نیست مزایا و معایب توسعه‌دهندگان full-stackدر مقایسه با توسعه‌دهندگانی است که فقط در یکی از لایه‌های فناوری تخصص دارند.

سرعت پیشرفت فناوری سرسام‌آور است و شرکت‌های فناوری از محصولات فناوری خود به شکل خیلی متفاوتی نسبت به ده سال قبل استفاده می‌کنند. ازآنجایی‌که توسعه‌دهندگان full-stack مهارت‌های زیادی دارند، خیلی سریع می‌توانند مطالب جدید را یاد بگیرند و همگام با پیشرفت‌های فناوری شوند و همچنین می‌توانند در لحظه از هر فناوری‌ که موردنیازشان باشد، استفاده کنند.

توسعه‌دهندگان full-stack با تمام لایه‌های فناوری آشنا هستند؛ بنابراین به‌تنهایی و بدون کمک می‌توانند نمونه اولیه کاملی از یک برنامه کاربردی ایجاد کنند. این ویژگی بخصوص برای استارتاپ‌ها خیلی ارزشمند است چون آن‌ها نیاز دارند که یک برنامه قابل‌توسعه کوچک (MVP) را به‌سرعت ایجاد کنند و بعدها آن را منتشر کنند. توسعه‌دهندگان full-stack می‌توانند از بخشی به بخش دیگر در محصول موردنظر بروند و این باعث می‌شود که استارتاپ‌ها بتوانند مخارج کلی را به حداقل برسانند.

چون توسعه‌دهندگان full-stack می‌توانند روی تمام لایه‌های یک برنامه کاربردی کار کنند، زمان بیشتری را باهم می‌گذرانند که این به ایجاد ارتباط در شرکت کمک می‌کند. یک تیم کوچک و باتجربه از توسعه‌دهندگان full-stack که همدیگر را می‌شناسند، می‌تواند به‌طور قابل‌توجهی پربازده‌تر و زرنگ‌تر از تیم بزرگی از متخصصان باشند که در واحدهای کوچک و بدون همکاری، کار می‌کنند.

به‌طور طبیعی این غیرممکن است که توسعه‌دهندگان full-stack در هر زمینه‌ای تخصص داشته باشند و این موضوع به‌طور قابل‌بحثی یکی از بزرگ‌ترین معایب آن‌ها در مقایسه با بیشتر توسعه‌دهندگان متخصص است. براساس قانون ۱۰۰۰۰ ساعت کار Gladwell برای قرار گرفتن در سطح جهانی هر رشته‌ای، تقریباً ۱۰۰۰۰ ساعت کار عمیق یا تقریباً ۲۰ ساعت کار در هفته به مدت ۱۰ سال باید انجام شود، اگر سواد ریاضی خوبی داشته باشید، سریعاً متوجه می‌شوید که بر همین مبنا توسعه‌دهندگان full-stack باید متواضع و سازگار باشند و هنگامی‌که به مسائل مشکل برمی‌خورند باید از سایر متخصصان کمک بگیرند.

نتیجه‌گیری

تقاضا برای توسعه‌دهندگان full-stack زیاد است چون آن‌ها سرمایه باارزشی برای هر شرکتی هستند. سطح وسیع دانش آن‌ها، آن‌ها را منعطف، سازش‌پذیر و زیرک می‌کند که این‌ها مهارت‌های ضروری برای کارکردن روی محصولات نرم‌افزاری هم در استارتاپ‌ها و هم در جاهای دیگر هستند.


گردآوری:‌ علیرضا معمارزاده