برنامه نویس ها انواع مختلفی دارند که یک نوع از آن ها برنامه نویس همه کاره یا Full-Stack Developer هستند. اما به چه برنامه نویس هایی برنامه نویس فول استک گفته می شود؟ فرق Full-stack developer با یک برنامه نویس معمولی چیست؟ در این مطلب سعی میکنیم به این سؤالات جواب بدهیم و همچنین مشخصات یک Full-stack developer را نیز توضیح دهیم.
اگر بخواهیم به طور ساده این مفهوم را بیان کنیم به برنامه نویسی که هم بخش Back end و هم بخش Front end یک پروژه را انجام میدهند Full-stack developer نام دارند. برنامه نویسی وب به سه لایه تقسیم میشود.
یک Full-stack developer همه مراحل برنامه را از ابتدا(یعنی زمانی که از پروژه فقط یک مفهوم وجود دارد) تا محصول واقعی قابل استفاده را انجام میدهد.همچنین Full-stack developer هم بر روی بخش موبایل و هم بر روی بخش وب کار میکند که باید مهارت های زیر را داشته باشد
علاوه بر مفهوم Full-stack developer مفاهیم دیگری مانند MEAN stack developer و MERN stack developer و حتی LAMP dveloper نیز وجود دارد که در ادامه هرکدام را توضیح میدهیم. اما به طور کلی میتوان گفت که همه مفاهیمی که گفته شد به نوعی Full-stack developer هستند ولی با این تفاوت که تکنولوژی های مخصوصی را برای کار انتخاب کردهاند برای مثال MEAN stack در سه لایه گفته شده از زبان جاوا اسکریپت استفاده می کند. حال با تکنولوژی های مختلف. در ادامه مفاهیمی را که گفته بودیم را توضیح میدهیم.
lamp به تکنولوژی های open source اشاره میکند و مخفف کلمات زیر است:
سایتهای معروف زیادی هستند که بر پایه LAMP stack کار میکنند و در تمام جهان استفاده از LAMP stack امروزه رایج است. یکی از سایتهایی که از LAMP stack استفاده میکند Facebook است.
یک مجموعه از تکنولوژی هایی است که پایه و اساس آنها زبان جاوااسکریپت میباشد. کلمه MERN مخفف کلمات زیر میباشد.
دقت داشته باشید که MERN stack امروزه یکی از پرکاربرد ترین استک تکنولوژی ها میباشد و بسیاری از برنامه نویسانی که در شرکت های مختلف مشغول هستند MERN stack developer هستند.
این هم یک مجموعه از تکنولوژی هایی است که پایه آنها جاوا اسکریپت است و مخفف همه کلمات شبیه به MERN میباشد با این تفاوت که A موجود در این کلمه مخفف Angular است که یک فریمورک قوی برای پیادهسازی رابط کاربری و front end میباشد که توسط گوگل پشتیبانی میشود.دقت داشته باشید که استک هایی را که توضیح دادیم تنها استک های موجود نیستند و Full-stack developer های مختلفی وجود دارند که با تکنولوژی های گفته شده کار نمیکنند. مانند برنام نویسان .NET و یا django و …. ریز مهارت هایی که باید یک Full-stack developer داشته باشد
در بخش front-end یک Full-stack developer باید به تکنولوژي های برنامه نویسی وب مانند css3 ,HTML5, Javascript تسلط داشته باشد. همانطور که میدانید HTML و css بین همه سایتهای وب مشترک است و زبان جاوا اسکریپت هم در بیش از 90 درصد سایتهای موجود مورد استفاده قرار گرفته است. همچنین برخی از کتابخانههای مفید مانند Jquery و LESS و حتی Angular, React js نیز میتوانند کار را آسانتر کنند.
در بخش front-end باید به حداقل یک زبان برنامه نویسی سمت سرور تسلط کامل داشته باشید. این زبانها میتوانند یکی از موارد Python , Java, Ruby, .Net, Node.js, …. باشند.
اینکه دانشی در مورد دیتابیس ها داشته باشیم و با انواع مدیریت دادهها آشنا باشیم هم یکی از نیازهای Full-stack developer است. از دیتابیس های پر استفاده میتوان به MySQL, Oracle, SQL Server, MongoDB, Postgres اشاره کرد. علاوه بر آن با توجه به وب سایتهای امروزی یک Full-stack developer باید با مکانیزم های کش کردن مانند Memcached , varnish, Redis نیز آشنا باشد.
یک Full-stack developer موفق اطلاعات کافی در مورد دانش طراحی را دارد. همچنین بهتر است که با اصول UI/UX نیز آشنا باشد و اطلاعاتی در مورد طراحی prototype هم داشته باشد.
بسته به اینکه زبان سمت سرور چه چیزی باشد Full-stack developer باید اطلاعات مناسبی در مورد سرور مورد استفاده خود هم داشته باشد و بتواند سرور مورد نظر را پیکربندی کند و برای میزبانی محصول آماده نماید. برای مثال اگر Full-stack developer از .Net استفاده میکند باید اطلاعاتی در مورد کار با IIS و پیکربندی آن داشته باشد و یا اگر برنامه نویس LAMP stack است باید در مورد nginx و یا آپاچی اطلاعات کاملی داشته باشد.
با وجود اینکه Full-stack developer باید به همه جنبههای برنامه نویسی و تولید نرمافزار مسلط باشد ولی خب وقتی که در یک تیم کار میکنید نیاز است که با دیگران تعامل داشته باشید و از کدهای همدیگر استفاده کنید. در این مرحله نیاز به یک سیستم source control احساس میشود. حتی اگر یک برنامه نویس به صورت تیمی هم کار نکند استفاده از VCS یکی از واجبات است. سیستمهای VCS تاریخچه تغییرات بر روی کد پروژه را از ابتدای پروژه تا انتهای پروژه را به صورت کامل نگهداری میکنند و میتوان با کمک آنها مقدار خطا را کم کرد و اشتباهات را برطرف نمود. یکی از VCS های معروف که به شکل گسترده در کل جهان استفاده میشود سیستم Git میباشد. همچنین سایت Github نیز از این VCS بهره می برد.
اگر Full-stack developer در بخش موبایل هم کار میکند داشتن دانش کار با API های تحت وب مانند REST, SOAP یک نیاز حیاتی است. زیرا که برنامههای موبایل با استفاده از این API ها با برنامههای تحت وب و سرور ها ارتباط برقرار میکنند و بدون آنها یک تکه از پازل کم است.
علاوه بر مواردی که گفته شد برخی آیتم ها هم هستند که یک Full-stack developer باید از آنها اطلاع داشته باشد و آن موارد عبارتند از
علاوه بر مهارتهایی که گفته شد یک Full-stack developer یک سری ویژگیهای شخصیتی دارد که او را کمک میکند این ویژگیها عبارتند از: ذهن آنالیزگر، صبرو انگیزه، عاشق یادگیری بودن، دقت کردن در جزئیات، خلاق بودن و نظم داشتن در کارها. توصیه میکنم که اگر میخواهید یک Full-stack developer خوب شوید این ویژگیها را در خودتان تقویت کنید.
دوستان دقت داشته باشید که Full-stack developer بودن به این معنی نیست که به همه تکنولوژی های موجود مسلط باشید. اگر شما بخواهید به همه تکنولوژی ها مسلط شوید قبل از اینکه تکنولوژی ها تمام شود عمر شما تمام خواهد شد. زیرا که هر روز تکنولوژی های جدیدی عرضه میشوند. کار درست این است که از هر مورد از موارد گفته شده یکی را انتخاب کنید و در آن عمیق شوید. دقت داشته باشید که مواردی که انتخاب میکنید با همدیگر تضاد و مشکل نداشته باشند و بتوان آنها را کنار همدیگر قرار داد. با وب سایت tosinso همراه باشید.
نویسنده: مهدی عادلی فر
منبع: tosinso.com
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.
بنیانگذار توسینسو و برنامه نویس
مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود