فول استک چیست؟ + Full stack developer کیست؟
فول استک دولوپر یا Full stack developer اصطلاحی است که افراد فعال در حوزه IT و اینترنت حداقل یکبار آن را شنیده اند. برخی این اصطلاح را به برنامه نویسانی که هم به کدنویسی فرانت اند و هم بک اند مسلط هستند نسبت می دهند و برخی دیگر این اصطلاح را برای فردی که در حوزه های مختلف IT فعال است به کار می برند.
اما اگر بخواهیم پرکاربردترین تعریف این اصطلاح را بدانیم، باید بگوییم که یک Full stack developer، در واقع کسی است که می تواند در فرانت اند و بک اند یک وبسایت یا اپلیکیشن کدنویسی کند.
فرانت اند یا Front End عموما به بخشی از یک وبسایت یا اپلیکیشن گفته می شود که کاربر با آن برخورد می کند و با آن ارتباط دارد. همچنین بک اند یا Back End بخشی از یک وبسایت یا اپلیکیشن است که با سرور و پایگاه داده در ارتباط است.
Full stack developer بودن لزوما بدین معنا نیست که شما به تمامی زبان های مربوط به بخش فرانت اند و بک اند مسلط هستید بلکه به این معنی است که شما قادر به کار کردن در هر دو بخش هستید و هر دو بخش را به خوبی درک می کنید.
اگر می خواهید شما هم به یک Full stack developer تبدیل شوید در ادامه می توانید با لیستی از مهارت ها و مواردی که به شما در این راستا کمک می کنند، آشنا شوید. پس در ادامه با ما همراه باشید…
1. HTML / CSS
تقریبا تمام دوره های جامع آموزش برنامه نویسی، چه بصورت آنلاین و چه بصورت حضوری، با آموزش HTML و CSS شروع می شوند، زیرا این دو پایه های اصلی ساختمان وب هستند. در واقع HTML به شما اجازه می دهد به وبسایت خود محتوا اضافه کنید و CSS کمک می کند تا به این محتوا سبک و استایل ببخشید. که به شما اجازه می دهد مطالب خود را سبک کنید. مباحث زیر مربوط به HTML / CSS هستند که اغلب در مصاحبه های کاری و پروژه های عملی مطرح هستند :
- HTML معنایی (Semantic)
- آشنایی با مدل کاری CSS Box Model
- آشنایی با پیش پردازنده (preprocessor) های CSS
- آشنایی با CSS Media Queries برای نوشتن responsive دستگاه های مختلف
- آشنایی با بوت استرپ Bootstrap
2. JavaScript
زبان جاوا اسکریپت هر سال محبوب تر می شود و به طور مداوم کتابخانه ها، چارچوب ها و ابزارهای جدید برای آن منتشر می شود. براساس تحقیقی از سوی Stack Overflow، جاوا اسکریپت محبوب ترین زبان در هر دو طرف فرانت اند و بک اند است. این تنها زبانی است که بطور بومی و کاملا روان در مرورگرها اجرا می شود و می تواند به عنوان یک زبان سمت سرور به خوبی استفاده شود. در ادامه برخی از مباحثی را که نیاز دارید به عنوان یک Full stack developer بدانید مطرح خواهم کرد :
- نحوه کار با .DOM و همچنین JSON و چگونگی ایجاد تغییرات در آن
- ویژگی های مهم زبان برنامه نویسی مانند ترکیب عملکردی (functional composition)، ارثی اولیه، بستار یا closure، محدوده (scope) و event delegation
- جریان کنترل غیر مستقیم (Asynchronous control flow) و promise و فراخوان ها (callback)
- بیاموزید که ساختار کدهای خود را چگونه ایجاد کنید و بخش هایی از آن را ماژولار کنید و چیزهای دیگر مثل webpack و browserify
- کار با حداقل یکی از فریمورک های محبوب را بیاموزید (بسیاری از آموزش ها بر روی یادگیری یکی از فریمورک ها مانند React یا AngularJS تمرکز می کنند، اما در واقع مهم تر این است که درک عمیقی از زبان جاوا اسکریپت داشته باشید. اگر شما درک خوبی از جاوا اسکریپت داشته باشید، یادگیری فریمورک ها برای شما کار بسیار ساده ای خواهد بود).
- هرچند که برخی منابع می گویند jQuery کم استفاده است و یا در آینده نزدیک دیگر از آن استفاده نمی شود، اما همچنان در بسیاری از وبسایت ها و اپلیکیشن ها استفاده می شود و یادگیری آن مفید خواهد بود.
- در مورد برخی از ویژگی های مهم ES6 اطلاعاتی را بیاموزید.
3. زبان های Back-End
زمانی که شما HTML / CSS و جاوا اسکریپت را آموختید، احتمالا می خواهید به برخی از کارها در Back-End رسیدگی کنید. تمام وبسایت ها و اپلیکیشن های آنلاین معمولا بر روی یک زبان خاص در Back-End تمرکز دارند و در واقع مهم نیست که کدام یک از این زبان ها را شما تا به چه اندازه ای یاد می گیرید. در ادامه چند دسته از زبان های محبوب Back-End را برای شما آورده ایم که برای هر کدام از آنها شغل های فراوانی را می توانید بیابید :
1. Node.js : این گزینه بسیار مناسبی است چرا که Node.js در محیط و فضای جاوا اسکریپت است و این یعنی نیازی نیست شما یک زبان جدید بیاموزید. همین موضوع باعث شده تا Node.js یکی از پر طرفدارترین زبان ها برای بک اند باشد.
2. Ruby : برخی از فریمورک های محبوب برای توسعه در روبی، Rails و Sinatra هستند. بسیاری از کارگاه های آموزشی Ruby را به عنوان اولین زبان Back-end آموزش می دهند.
3. Python : بعضی از فریمورک های محبوب برای توسعه در پایتون، Django و Flask هستند.
4. Java : زبان جاوا این روزها خیلی آموزش داده نمی شود، اما برخی از شرکت ها از جاوا به عنوان زبان Back-end استفاده می کنند و هنوز هم یک زبان بسیار مورد نیاز است.
5. PHP : پی اچ پی در این روزها به ندرت در کارگاه های آموزشی تدریس می شود، اما دقیقا مانند جاوا، هنوز هم تقاضای زیادی دارد.
4. پایگاه داده ها و ذخیره سازی وب
زمانی که شما چگونگی توسعه یک وبسایت یا یک اپلیکیشن را آموختید، در برخی موارد احتمالا نیاز خواهید داشت تا داده ها را در جایی ذخیره کنید و به آن دسترسی داشته باشید. برای این کار نیاز دارید تا در مورد موضوعات زیر که مربوط به پایگاه های داده و ذخیره سازی هستند اطلاعاتی را کسب کنید :
- درک مزایای داده های ارتباطی، برای مثال SQL
- در مورد پایگاه داده های NoSQL مطالعه کنید، برای مثال MongoDB
- درک کنید که در چه شرایطی کدامیک از این دو بهتر خواهند بود.
- باید بدانید که چگونه می توانید یک پایگاه داده را به زبان مورد نظر خود متصل کنید. (مثلا Node.js + MongoDB).
- مزایای استفاده از In-memory ها مانند Redis یا Memcached را درک کنید.
- ذخیره سازی وب برای ذخیره بازدیدها، کوکی ها و کش های ذخیره شده در مرورگر.
- پایگاه داده های مقیاس پذیر، ACID و ORM (این موارد اختیاری هستند.)
5. HTTP & REST
HTTP یک پروتکل نرم افزاری در اینترنت می باشدکه به کلاینت ها اجازه می دهد با سرور ارتباط برقرار کنند. برخی از مباحث مهم که باید در مورد آنها یاد بگیرید عبارتند از :
- REST چیست و چرا در پروتکل HTTP و برنامه های وب مهم است.
- بهترین روش ها برای طراحی API های Restful و درخواست های POST / GET
- یادگیری نحوه استفاده از Chrome DevTools می تواند بسیار مفید باشد.
- گواهینامه SSL چیست؟
- HTTP / 2 و SPDY (اختیاری).
- WebSockets، Web Workers و Service Workers (اختیاری).
6. معماری Web Application
اگر می خواهید یک برنامه کاربردی چند منظوره ایجاد کنید، باید درباره چگونه ساختن کدها، نحوه جدا کردن فایل ها، جایی که فایل های رسانه ای سنگین خود را میزبانی می کنید، نحوه ساخت داده ها در پایگاه داده، جای لازم برای انجام وظایف محاسباتی (سمت سرور و سمت کلاینت) و خیلی موارد دیگر بدانید. در ادامه برخی از مباحثی که برای یادگیری معماری نیاز دارید را می توانید مشاهده کنید :
- درباره platforms as a service (پلتفرم به عنوان یک سرویس) مطالعه کنید.
- بهینه سازی عملکرد برای برنامه های کاربردی و مرورگرهای مدرن.
- طراحی برنامه های وب (Web Application) توسط مایکروسافت.
- MVC
- و مهم تر از همه این که شما باید سعی کنید با افراد دیگر بر روی پروژه ها کار کنید، به کدهای پروژه های محبوب در GitHub نگاه کنید و تا می توانید از توسعه دهندگان با تجربه اطلاعات کسب کنید.
7. Git
Git یک سیستم مدیریتی است که به توسعه دهندگانی که در در یک تیم کار می کنند اجازه می دهد تا بتوانند تمام تغییراتی که در یک کد ایجاد می شود را دنبال کنند. بهتر است کار با Git و Github را به طور کامل بیاموزید.
8. الگوریتم های اساسی و ساختار داده ها
بخشی از یک Full Stack Developer شدن و جلوگیری از نوشتن کدهایی اشتباه و یا استفاده از ابزارهایی غلط، نیازمند درک برخی از الگوریتم های اساسی و ساختار داده ها و توانایی تجزیه و تحلیل تجاری است که در ادامه به برخی از مواردی که باید حتما آنها را بیاموزید، اشاره خواهیم کرد :
- مهارت خود را در الگوریتم ها و ساختار داده ها افزایش دهید
- مطالعه جداول هش (Hash Tables)، سعی کنید آنها را عمیقا درک کنید. این ساختار داده ها به اشیاء در جاوا اسکریپت بستگی دارد. (لغت نامه ها در پایتون و هش ها در روبی هستند).
- درک اینکه چگونه درخت ها و نمودارها می توانند به عنوان ساختار داده مفید باشند.
- درک مبانی تجزیه و تحلیل Big-O
- باید بدانید چه زمانی از یک شی در مقابل یک آرایه استفاده کنید و همچنین مبادلات را درک کنید.
- بیاموزید که چرا کش کردن (Caching) در هنگام کار با مقدار زیادی از داده ها مهم است.
- تفاوت بین queue و stack را بیاموزید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.