توسعه‌دهنده Full-stack چه هست و چگونه می‌توانید به آن تبدیل شد؟
1398/03/19 11:38 , میلاد صاحب نظر

توسعه‌دهنده Full-stack چه هست و چگونه می‌توانید به آن تبدیل شد؟

یک توسعه‌دهنده Full-stack از تمام فرآیند نرم‌افزار سر در می‌آورد، از GUI front end گرفته تا پایگاه داده back end. به هر حال، البته هنوز بین اساتید بر سر سطح تسلط مورد نیاز برای به دست آوردن این عنوان اختلاف است.

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

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

تعریف: توسعه‌دهنده Full-stack یعنی چه؟

توسعه‌دهنده Full-stack

توسعه‌دهنده Full-stack شخصی است که برای کار با تکنولوژی‌های دخیل در کل فرآیند اپلیکیشن تخصص و سررشته دارد – همین بود، منظور لایه‌های مختلف تکنولوژی است که یک اپلیکیشن مدرن را تشکیل می‌دهند.

این واژه نباید برای توسعه‌دهندگانی که منحصراً بر مثلاً فقط front end اپلیکیشن تمرکز کرده‌اند (یعنی همان واسط کاربری که معمولاً یک وبسایت یا یک اپلیکیشن موبایل است) یا منحصراً بر back end تمرکز کرده‌اند (منطق کسب و کار که منجر به نیاز برای ساخت اپلیکیشن می‌شود و پایگاه داده‌ای که لازم است اطلاعات اپلیکیشن در آن ذخیره شوند) به اشتباه استفاده شود.

از لحاظ تئوری، یک توسعه‌دهنده Full-stack باید به همان اندازه که با کد جاوا اسکریپت در حال اجرا در مرورگر کاربر راحت و آشنا است، با queryهای MySQL که اطلاعات مورد نظر کاربر را از یک پایگاه داده استخراج می‌کنند نیز راحت و آشنا باشد.

مسلماً، این امر نیاز به تسلط بر تکنولوژی‌های زیادی دارد، این مهارتی است که بسیار کمیاب است و مردم از عبارت "اسب تک شاخ" برای توضیح عملی بودن آن استفاده می‌کنند. در یکی از طولانی‌ترین و پر سر و صدا‌ترین بحث‌ها بر سر این موضوع، توسعه‌دهنده‌ای به نام اندی شورا ادعا کرد که توسعه‌دهنده‌های Full-stack چیزی جز افسانه نیستند.

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

او گفت "گاهی می‌توانیم اساس و اصول زبان‌ها/فریمورک‌های امروزی را در عرض چند ساعت بیاموزیم". "مشکل اینجا است که، من حس می‌کنم تفاوت بین دانستن چیزی در توسعه وب و واقعا تسلط داشتن بر آن چیز، امروزه بسیار کمرنگ شده است و روز به روز کمرنگ‌تر می‌شود". (شورا خودش را به عنوان متخصص توسعه‌دهنده front-end معرفی کرد).

حتی اگر نتوانید به تسلط کامل بر کل فرآیند دست یابید، باز هم راحت و آشنا بودن با تمام بخش‌های توسعه اپلیکیشن یک امر بسیار با ارزش است. Codeup که خودش را به عنوان یک گروه کد نویسی Full-stack معرفی کرده است، چیزی که آن را تعریف واقع‌گرایانه نامیده است را ارائه می‌دهد:

"توسعه‌دهنده Full-stack به زبان ساده شخصی است که با تمام لایه‌ها در توسعه نرم‌افزار رایانه آشنایی داشته باشد.

این توسعه‌دهندگان در همه چیز تخصص ندارند، آن‌ها صرفاً دارای علم و توانایی کاربردی برای درک یک مفهوم و تبدیل آن به محصول نهایی هستند. چنین افرادی باعث می‌شوند ساخت نرم‌افزار بسیار آسان‌تر شود، چون آن‌ها نحوه عملکرد همه چیز از اول فرآیند تا آخر آن را درک کرده و می‌فهمند و در نتیجه، می‌توانند مشکلات را پیش‌بینی کنند".

به عبارت دیگر، حتی اگر بیشتر زمان خود را صرف کار بر روی back end یک اپلیکیشن یا برنامه بکنید، باز هم در مرد توسعه front-end به قدر کافی علم دارید تا بتوانید به خوبی با تیم‌های front-end همکاری کنید و هدف کلی را برای کل پروژه و محصول نهایی درک کنید.

Web Designer Depot تعریفی را ارائه داده است که به طور مشابه بر دید کلی این واژه تاکید دارد نه تسلط کامل:

"یک توسعه‌دهنده Full-stack.... مهارت‌های ابتدایی و اولیه را درک کرده و تا حدی بر آن‌ها تسلط دارد و می‌تواند یک محصول را از ابتدا تا انتهای فرآیند تولید پیش ببرد".

شورا همچنین بیان کرد که استارت‌آپ‌های کم تعداد به خصوص مشتاق به خدمت گرفتن این نوع افراد کل گرا هستند.

واژه "توسعه‌دهنده Full-stack" اولین بار در دوره Web 2.0 (که در این دوره صفحه‌های وب استاتیک به سمت صفحات پویای نوشته شده با AJAX پیش رفتند) مطرح شد.

همان‌طور که شورا اشاره کرد، ایده توسعه Full-stack در آن زمان که فرآیند‌های توسعه یک نرم‌افزار معمولی خیلی کمتر پیچیده بودند، ساده‌تر از زمانی بود که در دهه ۲۰۰۰ روش چهار لایه LAMP (Linux, Apache, MySQL, Perl/PHP) پادشاهی می‌کرد.

امروزه، توسعه Full-stack شامل کد نویسی پیچیده‌تری در فرآیند توسعه نرم‌افزار می‌باشد و لازم است برای تکنولوژی‌ها و فریمورک‌های هر لایه تصمیماتی اتخاذ شوند. برخی فروشگاه‌ها سعی می‌کنند که تا جای ممکن از یک تکنولوژی در کل فرآیند استفاده کنند، تا توسعه Full-stack آسان‌تر شود.

برای مثال به لطف Node.js که جاوا اسکریپت را به سمت سرور آورد، حالا شما می‌توانید یک توسعه‌دهنده جاوا اسکریپت Full-stack استخدام کنید. یک بررسی سریع از بردهای مشاغل نشان می‌دهد که مواردی وجود دارند که در آن‌ها از تکنولوژی دیگری مانند Microsoft’s .Net استفاده شده است.

به هر حال، در اکثر موارد توسعه Full-stack به معنای ترکیب چندین پلتفرم و تکنولوژی با یکدیگر است.

چگونه می‌توان به یک توسعه‌دهنده Full-stack تبدیل شد؟

توسعه‌دهنده Full-stack

ساده‌ترین روش برای چگونگی تبدیل شدن به یک توسعه‌دهنده Full-stack این است که با دامنه وسیعی از تکنولوژی‌ها آشنا شوید. منابع مختلفی هستند که می‌توانند در این موضوع به شما کمک کنند. در کل از هر منبعی که استفاده می‌کنید، حتماً بررسی کنید که مباحث زیر در آن وجود داشته باشند:

  • HTML/CSS

  • JavaScript

  • زبان‌ها/فریمورک‌های Back-end (مانند Ruby، Python، js و Java)

  • پایگاه‌های داده و ذخیره وب (مانند MySQL/MariaDB و MongoDB)

  • معماری برنامه تحت وب

ورای این تکنولوژی‌های خاص، باید با Git، سیستم‌های کنترلی حاضر در همه جا و الگوریتم‌ها و ساختمان‌های داده اولیه‌ای که در کلاس‌های علوم کامپیوتر تدریس می‌شوند نیز آشنا شوید.

دوره‌های توسعه‌دهنده Full-stack

مسلماً خیلی چیزها هست که باید یاد بگیرید!  دوره‌های آنلاین زیادی هم وجود دارند که ادعا می‌کنند حداقل اساس و اصول را به شما می‌آموزند، که عبارت‌اند از:

  • Lynda
  • Udaicity
  • Coursera
  • Thinkful
  • General Assembly

همچنین چندین گروه کد نویسی نیز وجود دارند که آموزش‌های دقیق‌تر و تخصصی‌تری (و البته گران‌تری) ارائه می‌دهند.

سؤالات مصاحبه‌های استخدام توسعه‌دهنده Full-stack

می‌توانید چندین قالب از سؤالات مصاحبه‌ای معمول برای استخدام آنلاین توسعه‌دهندگان Full-stack را در سایت‌های مشاغل مانند Betterteam و شرکت‌های آموزشی مانند Digital Vidya مشاهده کنید.

بیشتر این قالب‌ها به گونه‌ای تغییر یافته‌اند که به کارفرما کمک کند بهتر بتواند در مورد استخدام شخص تصمیم‌گیری کند، نه اینکه به کاندیدها و داوطلبان کمک کنند بیشتر مطالعه داشته باشند، اما چند الگوی جالب و قابل توجه نیز وجود دارند و برخی از سؤالات می‌توانند به خوبی به شما بفهمانند که به عنوان یک توسعه‌دهنده Full-stack زندگی کاری و روزمره شما چگونه خواهد بود.

برای مثال، شما باید پاسخ‌های خوبی راجع به چگونگی یادگیری داشته باشید، چون مسلماً ممکن نیست که شما همه موارد لازم برای شغلتان را در حال حاضر بلد باشید و بدانید و کارفرمایان می‌خواهند بدانند آیا شما در امر یادگیری سریع هستید یا خیر.

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

البته فقط داشتن مهارت‌های احساسی و ارتباطی کافی نیست. شما همچنین باید علوم رایانه معمولی که در مصاحبه‌های تکنیکی به آن‌ها نیاز است را نیز بلد باشید.

مشاغل توسعه‌دهنده Full-stack

بر سر این عنوان شغلی خیلی بحث و جدل و سر و صدا هست، اما دلیل خوبی هم دارد: با توجه به یک بررسی انجام شده توسط انجمن متخصصان PayScale، توسعه‌دهنده Full-stack عملاً سریع‌ترین سرعت رشد را در بین دسته‌های شغلی در سال ۲۰۱۸ در ایالات متحده به خود اختصاص داده است.

در بین داوطلبان این مشاغل عطش و علاقه زیادی وجود دارد، پس این را هم در نظر بگیرید.

یک چیز که ممکن است در فرآیند جستجوی شغل مناسب ندانید، تفاوت بین یک توسعه‌دهنده Full-stack و یک مهندس نرم‌افزار است.

در شاخه مشاوره شغلی Reddit یک نظر کلی وجود دارد که در آن، یک "توسعه‌دهنده" را به عنوان یک پیمانکار کلی در نظر می‌گیرند، در حالی که یک "مهندس" بیشتر شبیه به یک مهندس عمران است (یعنی بیشتر درگیری تئوری و نگرانی‌های سطح بالا است).  

اما حقیقت این است که "مهندس نرم‌افزار" گاهی به عنوان "توسعه‌دهنده‌ای که به نظر باهوش می‌آید و شخصی است که به آن ارتقاء درجه می‌دهیم" نیز تعریف می‌شود  شغل‌های خیلی زیادی وجود دارند که در آن‌ها از عنوان "مهندس نرم‌افزار Full-stack" استفاده شده که از لحاظ کیفی با شغل‌های توسعه‌دهنده Full-stack تفاوتی ندارند.

حقوق توسعه‌دهنده Full-stack

تخمین حقوق یک علم دقیق نیست، اما توافق عمومی بر این است که توسعه‌دهندگان Full-stack مستحق یک حقوق عالی هستند. Engine Yard حقوق اولیه برای توسعه‌دهندگان Full-stack را ۹۷۰۰۰ دلار تخمین زده است و بیان کرده که این مقدار در بازارهای گرانی همچون منطقه لنگرگاه سانفرانسیسکو می‌تواند بیشتر هم بشود.

Teck Republic حقوق متوسط یک توسعه‌دهنده Full-stack را ۱۱۱۶۴۰ دلار تخمین زده است و بیان کرده است که تعداد تبلیغات شغلی که به دنبال توسعه‌دهنده‌های Full-stack هستند از سال ۲۰۱۴ به بعد سه برابر شده‌اند.

بنابراین اگر توضیحات ارائه شده در این مقاله باعث شدند به این شغل علاقه‌مند شوید، خبر خوب این است: می‌توانید زندگی خیلی خوبی به هم بزنید.

منبع: infoworld 

 مطالب مرتبط

ایجاد اولین برنامه با Node.js
آموزش جامع SQL Server
۵ قالب رایگان HTML برای ایجاد آسان و سریع وبسایت‌ها!
آموزش مقدماتی HTML و CSS
آموزش گام به گام #C
برنامه نویسی شیءگرا چیست؟

از آخرین دوره های آموزشی و تخفیف ها مطلع شوید

با تکمیل فرم زیر ، از اخبار و اطلاعات به روز برنامه نویسی و تکنولوژی عقب نمانید

آخرین مطالب

آموزش جامعSQL Server(جلسه۲۳:Stored Procedureها-بخش۳)
آموزش جامعSQL Server(جلسه۲۳:Stored Procedureها-بخش۳)

در جلسه قبل به بررسی عبارات کنترل جریان و cursor در SQL Server پرداختیم. کار با دستورات نام ...

۹ شغل مرتبط با تکنولوژی که نیاز به مهارت کد نویسی ندارند
۹ شغل مرتبط با تکنولوژی که نیاز به مهارت کد نویسی ندارند

برنامه‌نویسی مناسب همه نیست. برنامه‌نویسی به نوع بسیار خاصی از صلاحیت، تفکر موشکافانه و فرآیند آموزش نیاز دارد ...

آموزش مقدماتیHTMLوCSS(جلسه۲۲:سازماندهی داده با جدول–بخش۲)
آموزش مقدماتیHTMLوCSS(جلسه۲۲:سازماندهی داده با جدول–بخش۲)

در جلسه قبل، موضوع سازماندهی داده‌ها با استفاده از جداول را مطرح کردیم و با روش‌های ایجاد جدول، سازماندهی داده‌ها ...

آخرین دیدگاه ها

دیدگاه خود را درباره این پست بنویسید

فرم ارسال نظرات