آیا من یک برنامه نویس فول استک (full-stack) هستم؟

برنامه نویس فول استک full-stack
تاریخ بروزرسانی : 25 اردیبهشت 1399 | تعداد بازدید : 2612 | زمان خواندن مقاله : 15 دقیقه
پیرامون برنامه نویسی،
«برنامه‌نویس» تنها در این عنوان خلاصه نمی‌شود، برنامه‌نویسان در چند دسته متفاوت وجود دارند همچنین پیدا کردن عنوانی که بتواند مهارت ها و محدودیت های یک برنامه نویس را شرح دهد خیلی سخت است؛ برای مثال full-stack یکی از این عناوین است.
 اصطلاح full-stack designer و full-stack developer به کسانی گفته میشود که علاوه بر مهارت های تخصصی خودشان، در زمینه های دیگر نیز مهارت های جانبی دارند و صاحب نظر هستند و هنگام بروز مشکل میتوانند به راحتی آن را حل کنند.

برنامه نویسان به سه دسته کلی تقسیم میشوند:

  1. Back-End Developer: کدنویسی بخش سرور
  2. Front-End Developer: کدنویسی بخش کلاینت یا کاربر
  3. full-stack developer: ترکیب دانش طراحی و کد نویسی و تسلط کامل بر این دو حوزه به صورت ترکیبی با دانش و توانایی بسیار بالا

تعریف فول استک:

قبل از تعریف برنامه نویس full-stack باید بدانید که برنامه نویسی وب به سه بخش تقسیم می‌شود.
  • Presentation layer بخش front end که با کاربر و واسط کاربری سروکار دارد.
  • Business logic layer بخش back end که با مدیریت داده و اعتبارسنجی داده‌ها و منطق برنامه سرو کار دارد.
  • Database layer
پس برنامه نویس full-stack، شخصی است که هم طراحی وب را انجام میدهد و هم به برنامه نویسی وب مسلط است.
در واقع این افراد به تنهایی میتوانند یک پروژه‌ی تقریبا بزرگ را به پایان برساند.
برای توسعه دهنده‌ی فول‌اِستک فرقی نمی‌کند محصول، تحت چه پلتفری باشد؛ ازتحت دسکتاپ گرفته تا وب، موبایل و دیگر پلتفرم ها، که باید مهارت های زیر را داشته باشد:
  • نوشتن کد بهینه front end به زبان html, css, javascript
  • نوشتن و استفاده از API ها به زبان‌های back end مانند node js, python, java, ruby,…
  • کارکردن با زیرساخت های سیستمی مانند سخت‌افزار ها و سیستم عامل ها
  • توانایی کار کردن با بخش‌های شبکه (تنظیمات dns ،httpو وب سرویس ها) و همچنین امنیت آن‌ها
  • مسلط بودن و ساختن کوئری های مختلف از دیتابیس
  • مدیریت پروژه و هدایت مشتری‌ها
 

دیگر مفاهیم مرتبط با Full-stack developer

علاوه بر مفهوم Full-stack developer مفاهیم دیگری مانند MEAN stack developer و MERN stack developer و حتی LAMP dveloper نیز وجود دارد که در ادامه هرکدام را توضیح می‌دهیم. اما به طور کلی می‌توان گفت که همه مفاهیمی که گفته شد به نوعی Full-stack developer هستند ولی با این تفاوت که تکنولوژی های مخصوصی را برای کار انتخاب کرده‌اند.

LAMP stack

 Lamp به تکنولوژی های open source اشاره می‌کند در واقع این تکنولوژی از یک سیتم عامل به نام Linux و یک وب سرور Apache و دیتابیس معروف MySQL و زبان سمت سرور PHP تشکیل شده است.
یکی از سایت‌هایی که از LAMP stack استفاده می‌کند Facebook است.

MERN stack

یک مجموعه از تکنولوژی هایی است که پایه و اساس آن‌ها زبان جاوااسکریپت می‌باشد که از بخش هایی چون دیتابیس: No SQL و یک فریم ورک سبک برای پردازش درخواست های تحت وب به نام Express و استفاده از یک کتابخانه جاوا اسکریپتی برای تولید رابط کاربری که به React معروف است و همچنین تکنولوژی سمت سرور که به کمک آن میتوان اپلیکیشن های تحت وب با زبان جاوا اسکریپت را نوشت که نام آن Node.js تشکیل شده است.

 

MEAN stack

مجموعه ای از تکنولوژی هایی است که پایه آن‌ها جاوا اسکریپت است و ازبخش هایی شبیه به MERN تشکیل شده با این تفاوت که حرف A آن مربوط به فریم ورک قوی Angular برای پیاده سازی بخش رابط کاربری است.
به غیر از این مجموعه از استک ها، Full-stack developer های مختلفی وجود دارند که با تکنولوژی های گفته شده کار نمی‌کنند. مانند برنامه نویسان .NET و یا django و ….

مهارت های یک برنامه نویس Full-stack developer

  • تکنولوژی های front-end
دراین بخش شما باید بر زبان هایی چون css3 ،HTML5 ،Javascript تسلط داشته باشید زیرا این ها زبان های طراحی ظاهر سایت شما برای کاربر است.
 
بیشتر بدانید:
اگر به دنبال آموزش html css هستید آن هم آخرین ورژن از این دو زبان، می توانید از دوره ای که برای شما عزیزان در سایت قرار داده ایم استفاده کنید. این دوره تمامی آموزش های لازم برای این دوزبان را پوشش داده است که برای اطمینان بیشتر می توانید ویدئو یا سرفصل های قرار داده شده در آن را شماهده کنید و نظراتتان را با ما در میان بگذارید.
 
علاوه براین ها یک برنامه نویس Full-stack باید اطلاعات کافی در مورد دانش طراحی داشته باشد و بتواند اصول UI/UX را پیاده سازی کند.
می توانید برای شناخت تفاوت این دو از هم کلمه طراحی ui را کلیک کنید تا درک بهتری از واژه های UX و UI کسب کنید.
  • تکنولوژی های back-end
در این بخش شما باید حداقل به یک زبان برنامه نویسی سمت سرور تسلط کامل داشته باشید. این زبان‌ها می‌توانند یکی از موارد Python ،Java ،Ruby ،.Net ،Node.js و .... باشند.
  • تکنولوژي های دیتابیس و کش کردن
ما باید برای برنامه نویس Full-stack شدن آشنایی با دیتابیس و انواع مدیریت داده های آن داشته باشیم که معروف ترین دیتابیس ها عبارت اند از:  .MySQL ،Oracle ،SQL Server ،MongoDB ،Postgresهمچنین باید مکانیزم های کش کردن مانندMemcached varnish ،Redis را بشناسیم.
  • سیستم کنترل نسخه (Version control system (VCS))
برنامه نویسFull-stack باید به همه جنبه‌های گفته شده در برنامه نویسی و تولید نرم‌افزار مسلط باشد اما وقتی که در یک تیم کار می‌کنید نیاز است که با دیگران تعامل داشته باشید و از کدهای همدیگر استفاده کنید که برای استفاده از کدها نیاز به یک سیستم source control داریم. حتی اگر به صورت تیمی هم کار نکند استفاده از VCS یکی از واجبات است چون سیستم‌های VCS تاریخچه تغییرات بر روی کد پروژه از ابتدای پروژه تا انتهای پروژه را به صورت کامل نگهداری می‌کنند و می‌توان مقدار خطا را کم کرد و اشتباهات را برطرف نمود. یکی از VCS های معروف، سیستم Git می‌باشد.
  • کار کردن با API
اگربرنامه نویس Full-stack در بخش موبایل هم کار می‌کند داشتن دانش کار با API های تحت وب مانند REST و SOAP یک امر ضروری است زیرا برنامه‌های موبایلی با استفاده از این API ها با برنامه‌های تحت وب و سرورها ارتباط برقرار می‌کنند.
علاوه بر مواردی که گفته شد یک برنامه نویس Full-stack باید از موارد زیر اطلاع داشته باشد مانند:
  1.  بتواند unit test های با کیفیت بنویسد.
  2.  اطلاعات کاملی در مورد مستندسازی و پکیج بندی پروژه داشته باشد.
  3.  اطلاعاتی در مورد تدابیر امنیتی هر لایه از نرم‌افزار داشته باشد و بتواند ضعف‌های امنیتی سیستم را بشناسد.
  4.  در مورد الگوریتم هایی چون مرتب سازی و جستجو و ساختار داده‌های برنامه اطلاع داشته باشد.

 

کلام آخر:
بر اساس قانون ۱۰ هزار ساعت گلادول، برای تسلط بر دانشFront-end ، Back-end، علم مشتری محوری و تبدیل شدن به یک توسعه‌ دهنده همه‌ کاره حدود ۱۰ سال زمان لازم است.

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