مهدی عادلی فر
بنیانگذار توسینسو و برنامه نویس

FullStack Developer چیست؟ بررسی مفهوم برنامه نویس همه کاره

برنامه نویس ها انواع مختلفی دارند که یک نوع از آن ها برنامه نویس همه کاره یا Full-Stack Developer هستند. اما به چه برنامه نویس هایی برنامه نویس فول استک گفته می شود؟ فرق Full-stack developer با یک برنامه نویس معمولی چیست؟ در این مطلب سعی می‌کنیم به این سؤالات جواب بدهیم و همچنین مشخصات یک Full-stack developer را نیز توضیح دهیم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

full stack developer 

تعریف Full-stack developer

اگر بخواهیم به طور ساده این مفهوم را بیان کنیم به برنامه نویسی که هم بخش Back end و هم بخش Front end یک پروژه را انجام می‌دهند Full-stack developer نام دارند. برنامه نویسی وب به سه لایه تقسیم می‌شود.

  • Presentation layer (بخش front end که با کاربر و واسط کاربری سروکار دارد.)
  • Business logic layer(بخش back end که با مدیریت داده و اعتبارسنجی داده‌ها و منطق برنامه سرو کار دارد.)
  • Database layer

یک Full-stack developer همه مراحل برنامه را از ابتدا(یعنی زمانی که از پروژه فقط یک مفهوم وجود دارد) تا محصول واقعی قابل استفاده را انجام می‌دهد.همچنین Full-stack developer هم بر روی بخش موبایل و هم بر روی بخش وب کار می‌کند که باید مهارت های زیر را داشته باشد

  • نوشتن کد بهینه 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 هستند ولی با این تفاوت که تکنولوژی های مخصوصی را برای کار انتخاب کرده‌اند برای مثال MEAN stack در سه لایه گفته شده از زبان جاوا اسکریپت استفاده می کند. حال با تکنولوژی های مختلف. در ادامه مفاهیمی را که گفته بودیم را توضیح می‌دهیم.

LAMP stack

lamp به تکنولوژی های open source اشاره می‌کند و مخفف کلمات زیر است:

  • L=Linux یک سیستم عامل open source است.
  • A=Apache: یک وب سرور open source که استفاده بسیار زیادی در تمام جهان دارد.
  • M=MySQL: دیتابیس open source معروف
  • P=PHP: زبان اسکریپتی سمت سرور open source

سایت‌های معروف زیادی هستند که بر پایه LAMP stack کار می‌کنند و در تمام جهان استفاده از LAMP stack امروزه رایج است. یکی از سایت‌هایی که از LAMP stack استفاده می‌کند Facebook است.

MERN stack

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

  • M=MongoDB : دیتابیس No SQL معروف که یک دیتابیس غیر رابطه‌ای و پرکاربرد است.
  • E=Express : فریمورک سبک و قابل حملی است برای پردازش درخواست های تحت وب.
  • R=React : یک کتابخانه جاوااسکریپتی معروفی است که برای تولید رابط کاربری استفاده می‌شود.
  • N=Node.js : یک تکنولوژی سمت سرور که می‌توان به کمک آن اپلیکیشن های تحت وب را با زبان جاوا اسکریپت نوشت.

دقت داشته باشید که MERN stack امروزه یکی از پرکاربرد ترین استک تکنولوژی ها می‌باشد و بسیاری از برنامه نویسانی که در شرکت های مختلف مشغول هستند MERN stack developer هستند.

mean stack 

MEAN stack

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

تکنولوژی های front-end

در بخش front-end یک Full-stack developer باید به تکنولوژي های برنامه نویسی وب مانند css3 ,HTML5, Javascript تسلط داشته باشد. همانطور که می‌دانید HTML و css بین همه سایت‌های وب مشترک است و زبان جاوا اسکریپت هم در بیش از 90 درصد سایت‌های موجود مورد استفاده قرار گرفته است. همچنین برخی از کتابخانه‌های مفید مانند Jquery و LESS و حتی Angular, React js نیز می‌توانند کار را آسان‌تر کنند.


TOSINSO

تکنولوژی های back-end

در بخش front-end باید به حداقل یک زبان برنامه نویسی سمت سرور تسلط کامل داشته باشید. این زبان‌ها می‌توانند یکی از موارد Python , Java, Ruby, .Net, Node.js, …. باشند.

programming languages 

تکنولوژي های دیتابیس و کش کردن

اینکه دانشی در مورد دیتابیس ها داشته باشیم و با انواع مدیریت داده‌ها آشنا باشیم هم یکی از نیازهای Full-stack developer است. از دیتابیس های پر استفاده می‌توان به MySQL, Oracle, SQL Server, MongoDB, Postgres اشاره کرد. علاوه بر آن با توجه به وب سایت‌های امروزی یک Full-stack developer باید با مکانیزم های کش کردن مانند Memcached , varnish, Redis نیز آشنا باشد.

اصول اولیه طراحی

یک Full-stack developer موفق اطلاعات کافی در مورد دانش طراحی را دارد. همچنین بهتر است که با اصول UI/UX نیز آشنا باشد و اطلاعاتی در مورد طراحی prototype هم داشته باشد.

Server

بسته به اینکه زبان سمت سرور چه چیزی باشد Full-stack developer باید اطلاعات مناسبی در مورد سرور مورد استفاده خود هم داشته باشد و بتواند سرور مورد نظر را پیکربندی کند و برای میزبانی محصول آماده نماید. برای مثال اگر Full-stack developer از .Net استفاده می‌کند باید اطلاعاتی در مورد کار با IIS و پیکربندی آن داشته باشد و یا اگر برنامه نویس LAMP stack است باید در مورد nginx و یا آپاچی اطلاعات کاملی داشته باشد.

سیستم کنترل نسخه (Version control system (VCS))

با وجود اینکه Full-stack developer باید به همه جنبه‌های برنامه نویسی و تولید نرم‌افزار مسلط باشد ولی خب وقتی که در یک تیم کار می‌کنید نیاز است که با دیگران تعامل داشته باشید و از کدهای همدیگر استفاده کنید. در این مرحله نیاز به یک سیستم source control احساس می‌شود. حتی اگر یک برنامه نویس به صورت تیمی هم کار نکند استفاده از VCS یکی از واجبات است. سیستم‌های VCS تاریخچه تغییرات بر روی کد پروژه را از ابتدای پروژه تا انتهای پروژه را به صورت کامل نگهداری می‌کنند و می‌توان با کمک آن‌ها مقدار خطا را کم کرد و اشتباهات را برطرف نمود. یکی از VCS های معروف که به شکل گسترده در کل جهان استفاده می‌شود سیستم Git می‌باشد. همچنین سایت Github نیز از این VCS بهره می برد.


git 

کار کردن با API

اگر Full-stack developer در بخش موبایل هم کار می‌کند داشتن دانش کار با API های تحت وب مانند REST, SOAP یک نیاز حیاتی است. زیرا که برنامه‌های موبایل با استفاده از این API ها با برنامه‌های تحت وب و سرور ها ارتباط برقرار می‌کنند و بدون آن‌ها یک تکه از پازل کم است.

سایر قسمت‌های پازل

علاوه بر مواردی که گفته شد برخی آیتم ها هم هستند که یک Full-stack developer باید از آن‌ها اطلاع داشته باشد و آن موارد عبارتند از

  1. برنامه نویس بتواند unit test های با کیفیت بنویسد.
  2. برنامه نویس باید اطلاعات کاملی در مورد مستندسازی و پکیج بندی پروژه داشته باشد.
  3. برنامه نویس باید اطلاعاتی در مورد تدابیر امنیتی هر لایه از نرم‌افزار داشته باشد و بتواند ضعف‌های امنیتی سیستم را بشناسد.
  4. در مورد الگوریتم ها و ساختار داده‌های برنامه نیز باید اطلاع داشته باشد همچنین در مورد الگوریتم های ساده مثل مرتب سازی و جستجو نیز اطلاعاتی داشته باشد.

ویژگی‌های شخصیتی یک Full-stack developer

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

سخن آخر

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

نویسنده: مهدی عادلی فر

منبع: tosinso.com

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.


مهدی عادلی فر
مهدی عادلی فر

بنیانگذار توسینسو و برنامه نویس

مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.

نظرات