برنامه نویس full stack کیست

برنامه نویس Full Stack موبایل چیست؟ چگونه فول استک شویم؟

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

این مقاله دارای قسمت های زیر است:
کلمه فول استک یعنی چه؟
برنامه نویس Full Stack کیست؟
شغل توسعه دهنده های Full Stack چیست؟
انواع توسعه دهنده های فول استک
توسعه دهنده فول استک موبایل
چرا باید Full Stack بشویم؟
مزایا و معایب برنامه نویسی فول استک
آشنایی با بک اند و فرانت اند
فرانت اند (Front-End) چیست؟
بک اند (Back-End) چیست؟
لایه های تکنولوژی در اپلیکیشن موبایل
سمت سرور در برنامه نویسی موبایل
تکنولوژی های بک اند
تکنولوژی LAMP
تکنولوژی MEAN
Python-Django
Ruby on Rails
کدام تکنولوژی را انتخاب کنیم؟
سمت کلاینت در برنامه نویسی موبایل
استک های تکنولوژی بومی موبایل
پلتفرم iOS
پلتفرم اندروید
اپلیکیشن های موبایل کراس پلتفرم
توسعه اپلیکیشن های هیبرید
مقایسه فریمورک های توسعه موبایل
مقایسه استک ها
چگونه یک توسعه دهنده Full Stack موبایل بشویم؟
گام اول: یادگیری زبان های برنامه نویسی
گام دوم: یادگیری الگوریتم های پایه و ساختار داده
گام سوم: استفاده از فریمورک و کتابخانه
گام چهارم: تکنولوژی فرانت اند
گام پنجم: تکنولوژی های بک اند
گام ششم: یادگیری کار با پایگاه های داده
گام هفتم: کار با REST و HTTP
گام هشتم: کار با سیستم های کنترل پروژه مانند Git
گام نهم: یادگیری طراحی گرافیک
گام دهم: توسعه فردی
نکاتی برای تبدیل شدن به یک توسعه دهنده فول استک
نکته اول: موقعیت مناسب خود را پیدا کنید
نکته دوم: یک زبان را یاد بگیرید، نه همه را
نکته سوم: همه چاله چوله ها رو پر کنید
نکته چهارم: از همه چیز باخبر باشید، اما در یک مورد مختصص شوید
نکته پنجم: از دوره های آموزشی استفاده کنید
نکته ششم: شبکه سازی کنید
نکته هفتم: یک اثر برای خودتان بسازید
جمع بندی
سوال؟ نکته؟
منابع بیشتر برای مطالعه


کلمه فول استک یعنی چه؟

کلمه full stack یعنی چه

اگر بخواهیم کلمه Full Stack را به زبان فارسی ترجمه مستقیم کنیم، می شود یک مجموعه کامل از پشته ها، که شاید این ترجمه زیاد قابل فهم نباشد. اما اگر با این مورد آشنا باشید که Stack به یک مدل از ساختمان های داده ای گفته میشود که همه چیز روی هم ریخته میشود، شاید فهمیدن این کلمه آنقدر هم سخت نباشد.

ساختار داده ای Stack را میتوانید مثلا مانند چیپس های Pringles که در قوطی ریخته میشوند در نظر بگیرید. اولین چیپسی که وارد قوطی شده، آخرین چیپسی است که از آن خارج میشود. ساختار داده ای Stack هم دقیقا به همین شکل عمل میکند.

اصطلاح فول استک به معنی یک پشته (بیاین برای فهم بهتر بگیم یه کوله بار) کامل است. Full Stack در دنیای برنامه نویسی، به کسی گفته میشود که یک کوله بار کامل از زبان ها و تکنولوژی های مورد نیاز برنامه نویسی، برای ساختن کامل یک پروژه داشته باشد. پس در حالت معمول، زمان و تمرین های زیادی برای تبدیل شدن به یک فول استک را باید پشت سر بگذارید. در این مقاله قصد داریم همه این موارد و راه های تبدیل شدن به Full Stack را با یکدیگر بررسی کنیم. پس تا انتهای این پست با ما همراه باشید.


برنامه نویس Full Stack کیست؟

برنامه نویس full stack چیست

برنامه نویس Full Stack به کسی گفته میشود که میتواند با همه تکنولوژی ها و سرویس هایی که برای ساختن یک اپلیکیشن کامل در یک پلتفرم به کار میرود کار کند و میتواند به تنهایی یک اپلیکیشن کامل را بسازد و اجرا کند. این برنامه نویس ها میتواند از بک اند تا فرانت اند، همه کارهای را بصورت انفرادی انجام بدهند. این مسئله شامل کار کردن با لایبرری ها، فریمورک ها، محیط های برنامه نویسی، زبان های برنامه نویسی و بقیه ابزارهای مرتبط با این حوزه ها میشود.

بصورت تخصصی تر یک برنامه نویس فول استک، یک مهندس نرم افزار است که میتواند همه کارهای دیتابیس ها، سرورها، مهندسی سیستم و سمت کلاینت را انجام بدهد.

برنامه نویس های فول استک میتوانند هم فرانت اند و هم بک اند یک پروژه را بصورت کامل بسازند. از آنجایی که برای پلتفرم های مختلف زبان ها و تکنولوژی های متفاوتی نیاز است، برنامه نویس ها هم بر اساس پلتفرم های خودشان میتوانند فول استک شوند. در حقیقت به تک تک این سرویس ها و تکنولوژی ها، یک Stack گفت میشود. کسی هم که همه تکنولوژی ها را بشناسد و بتواند با آنها کار کند، یک Full Stack است.

یعنی بصورت کلی و با توجه به خواسته پروژه (مشتری) فول استک های موبایل، وب و غیره وجود دارند. هر کدام از پلتفرم ها نیز دسته بندی های ریز تری در میان خود دارند که با آنها بصورت خلاصه آشنا میشویم.


انواع توسعه دهنده های فول استک

همانطور که گفته شد، هر پلتفرم تکنولوژی های متفاوتی برای خود دارد. تکنولوژی هایی که برای توسعه فرانت اند و بک اند نرم افزار ها به کار میروند. ما در این مقاله درباره دو پلتفرم که بیشترین سهم بازار برنامه نویسی را در اختیار دارند بحث و هرکدام را جداگانه بررسی میکنیم.


توسعه دهنده Full Stack موبایل

توسعه دهنده فول استک موبایل در این روزها پیوند عمیقی با تکنولوژی و محتوا دارد. گوشی های موبایل این روزها گسترش بسیار زیادی پیدا کرده اند. یعنی کاربران زیادی از اپلیکیشن ها استفاده میکنند و به همین دلیل هم برنامه نویسان این پلتفرم باید دانش بسیار خوبی در زمینه های مختلف داشته باشند.

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

برنامه نویس فول استک موبایل

بین این دو قسمت (یعنی سرور و کلاینت) یک فرآیند وجود دارد که آنها را به هم متصل میکند. این فرآیندها شامل تست کردن، یکپارچه سازی و توسعه مداوم، مقایس پذیر کردن و روند های دیگر میشوند. یک برنامه نویس Full Stack موبایل با همه این قسمت ها آشنا باشد و با آنها کار کند.

دستگاه های موبایل به سمتی پیشرفت میکنند که محتواهای چند رسانه ای بیشتر و بیشتر میان کاربران استفاده میشوند. یعنی کاربران امروز بیشتر دوست دارند اخبار و مطالب را از دستگاه هایی که در دستشان است ببینند، بشنوند و بخوانند. روش های قدیمی مانند تلویزیون و رادیو طرفداران خود را از دست داده و حتی بعضی از این دستگاه ها، مانند تلویزیون های هوشمند خودشان به یکی از هدف های برنامه نویس ها تبدیل شده اند.

دنیای موبایل های هوشمند، امروزه غول هایی مانند اپل، گوگل، فیسبوک و مایکروسافت دارد که سرمایه گذاری قابل توجهی در این زمینه انجام داده اند. در حالی که گوگل و اپل صاحب سیستم عامل هایی هستند که آنها را به ترتیب با نام های اندروید و iOS میشناسیم. اما فریمورک React Native و محیط برنامه نویسی Xamarin دو ابزاری هستند که توسط فیسبوک و مایکروسافت تولید شده اند و میتوانید با آنها اپلیکیشن هایی تولید کنید که تشابهات زیادی به نرم افزارهای بومی دارند. کمپانی های IT همه سعی خودشان را میکنند که به مارکت های مرتبط با موبایل وارد شوند تا رشد آنها ادامه پیدا کند.

mobile full stack developer

اگر میخواهید بیزینس خود را به سمت جهانی شدن جلو ببرید، ساختار بک اند باید مقیاس پذیر باشد زیرا ترافیک داده ها به زودی افزایش خواهد یافت. حتی برای محتوای استاتیک هم بهتر است که از CDN استفاده کنید. سرور های محلی برای پاسخ دادن به ریکوئست هایی که از همه جای دنیا فرستاده میشوند، بسیار آهسته هستند. اما CDN ها محتوای استاتیک را روی سرورهای پراکنده در جهان کش میکنند که از لحاظ جغرافیایی به کاربران اپلیکیشن های موبایل نزدیکترند. با این روش، CDN عملکرد سریع تر اپلیکیشن و همچنین تجربه کاربری بهتر را تضمین میکند.

با توسعه دهنده های موبایل و مواردی که باید یاد بگیرند، بصورت کامل آشنا میشویم.


شغل توسعه دهنده های Full Stack چیست؟

همانطور که گفتم برنامه نویس های فول استک هر دو قسمت نرم افزار را میتوانند خودشان انجام بدهند. یعنی هم توسعه دهنده بک اند هستند و هم توسعه دهنده فرانت اند. وقتی که یک برنامه نویس ارشد، هم مهارت های فول استک را داشته باشد، با عنوان Full Stack Engineer شناخته میشود. پس یک نفر با این سطح از مهارت در کنار تجربه های یک برنامه نویس ارشد، میتواند شغل هایی در حوزه های مدیریتی پروژه و مدیریت سیستم (پیکربندی، نگهداری و مدیریت شبکه ها و سیستم های کامپیوتری) را به عهده بگیرد.


چرا باید Full Stack بشویم؟

شاید به این مسئله فکر کرده اید که چرا باید اصلا به سمت این مدل از برنامه نویسی پیش برویم؟ چند عدد از مهمترین دلیل های این کار را در این لیست میتوانید ببینید:

  • فرصت شغلی: بر اساس آمارهایی که از فضای کاری برنامه نویس ها منتشر میشود، درخواست های کاری برای توسعه دهندگان Full Stack رو به افزایش است. زیرا کسب و کارها و شرکت ها تمایل دارند افرادی را استخدام کنند که با کمترین هزینه، بیشترین کارایی را داشته باشند.
  • حقوق: از لحاظ حقوق و دستمزد هم برنامه نویس های فول استک، تا چندین برابر برنامه نویس های معمولی که در بک اند و فرانت اند فعالیت دارند، حقوق دریافت میکنند.
  • کارآفرینی: همچنین اگر ایده ای در ذهن شما وجود دارد یا قصد راه اندازی یک استارتاپ در حوزه فناوری اطلاعات را دارید، اگر برنامه نویس فول استک باشید میتوانید خودتان بدون وابستگی به دیگران، سیستم را پیاده سازی کنید و مقدار زیادی از هزینه و زمان را ذخیره نمایید.
  • (چون حال میده: شاید مواردی که گفتم یه مقدار تکونمون بده که بریم فول استک بشیم. اما مطمئنم هیچی برای یه برنامه نویس باحال تر از این نیست که بتونه همه کارا رو خودش انجام بده ?. اصلا نصفمون فقط برا همین یه دلیل میایم یاد میگیریم).

مزایا و معایب برنامه نویسی فول استک

اکثر کارها مزایا و معایب خاص خود را دارند. این قانون برای تبدیل شدن به یک توسعه دهنده Full Stack هم صدق میکند. بیایید با هم مزایا و معایب فول استک شدن را بررسی کنیم.

مزایا:

  • شرایط کاری بهتر
  • حقوق بیشتر
  • توانایی تبدیل یک ایده به یک محصول کاربردی
  • عدم وابستگی به دیگران برای ساخت نرم افزار
  • درک بسیار خوب از همه جنبه های سیستم های نرم افزاری
  • پرتستیژ کاری بالا و برند خوب در دنیای برنامه نویسی

معایب:

  • نیازمند تلاش زیاد
  • نیاز به یادگیری تکنولوژی های زیاد

(البته “زمان بر بودن” و “سختی زیاد” از طبیعت های هر کار حرفه ای هستن و شاید درست نباشه اسم اون ها رو عیب بذاریم).


آشنایی با بک اند و فرانت اند

برای تبدیل شدن به برنامه نویس Full Stack، ابتدا باید با مفاهیمی مانند فرانت اند و بک اند در برنامه نویسی آشنا باشید. قبلا در مقاله ای جداگانه در باره فرانت اند و بک اند توضیحات کامل در وبسایت قرار داده شده است که میتوانید از طریق لینک زیر به آنها دسترسی داشته باشید. اما برای راحتی کار در این مقاله به صورت خلاصه این مفاهیم را دوباره بررسی میکنیم.


فرانت اند (Front-End) چیست؟

Front در اصطلاح به قسمتی از برنامه گفته میشود که کاربر با آن سر و کار دارد. یعنی وقتی که برنامه را باز میکنید و با محیط آن روبرو میشوید، در حقیقت در حال کار کردن با بخش فرانت یا همان (Front-End) هستید. فرانت اند به بخشی از نرم افزار گفته میشود که طراحی های گرافیکی، رابط کاربری، منوها، پس زمینه ها، رنگ ها و غیره را شامل میشود.


بک اند (Back-End) چیست؟

Backend را میتوان به زبان ساده، پشت صحنه ی اپلیکیشن تعریف کرد. یعنی در حقیقت در پس زمینه یا همان پشت صحنه اپلیکیشن شما اتفاقاتی در حال رخ دادن هستند که شما از آنها خبر ندارید. به عنوان مثال هنگامی که یک فرم اینترنتی را پر میکنید و دکمه ازسال را لمس میکنید، اپلیکیشن شروع به ارسال اطلاعات به سرور و نوشتن آنها روی دیتابیس های میکند. شما هیچکدام از مراحل این فرآیند را نمیبینید، فقط در انتها ممکن است یک پیغام برای شما ظاهر شود: اطلاعات با موفقیت ارسال شد.


لایه های تکنولوژی در اپلیکیشن موبایل

در تصویر زیر میتوانید لایه های تکنولوژی موجود در اپلیکیشن و همچنین ساختار سمت سرور و سمت کلاینت آنها را مشاهده کنید.

لایه های تکنولوژی در موبایل

سمت سرور در برنامه نویسی موبایل

برنامه نویسی سرور در اپلیکیشن های موبایل، شباهت زیادی به سمت سرور در برنامه های ویندوز یا نرم افزارهای تحت وب دارد. آخرین اپلیکیشن ها مانند گوگل پلی استور و اپ استور iOS روی گوشی های موبایل نصب میشوند. توابع سمت سرور آنها نیز به یک سیستم عامل واحد محدود شده است. اپلیکیشن های روی دستگاه ها میتوانند با استفاده از سرویس های مشخصی مانند Ionic یا Meteor آپدیت بشوند. دیتا با استفاده از API ها با سرور تعامل میکنند، با استفاده از Version Control هم میتوانیم محتوا را به روز کنیم و از مقایس پذیری و ماندگاری محصول مطمئن بشویم.

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

تکنولوژی های بک اند

سمت سرور یا بک اند، اصطلاحات یکسانی هستند که از آنها برای توصیف لایه ای از اپلیکیشن استفاده میکنیم که منطق بیزینس (Business Logic) و داده ها به هم میرسند تا عملکرد های اصلی اپلیکیشن را بسازند. بک اند به درخواست های کاربران پاسخ میدهد، به پایگاه های داده دسترسی دارد و میتواند دستور های Create/Read/Update/Delete (که بصورت مخفف به آنها دستورات CRUD میگوییم) را اجرا کند.

در این قسمت قصد داریم محبوبترین استک های تکنولوژی که برای قسمت بک اند اپلیکیشن های موبایل استفاده میشوند را معرفی کنیم. این لیست محدود به همین موارد نمیشود، اما بیشتر توسعه دهندگان Full Stack از این موارد استفاده میکنند:


تکنولوژی LAMP

اسم این تکنولوژی، یک مخفف از مجموعه استک هایی است که این تکنولوژی را تشکیل میدهند. این اجزا عبارتند از Linux به عنوان سیستم عامل سرور، Apache به عنوان سرور وب، MySQL برای پایگاه داده و PHP یا Python به عنوان زبان برنامه نویسی، برای نوشتن اسکریپت ها. این تکنولوژی کاملا بر روی اجزای متن باز (Open- Source) و رایگان تکیه دارد. همچنین میتوانید این استک ها را با تکنولوژی های رایگان و متن باز دیگر ادغام کنید. با در نظر داشتن این که این روش منعطف، قابل شخصی سازی و برای استفاده آسان است، باید گفت LAMP یکی از تکنولوژی های خوب و قابل اعتماد برای بک اند اپلیکیشن های موبایل است.


تکنولوژی MEAN

کلمه MEAN مخفف MongoDB به عنوان یک پایگاه داده NoSQL، ExPress.js که یک فریمورک برای اپلیکیشن های مبتنی بر وب است، AngularJS یک فریمورک MVC زبان جاوا اسکریپت است که رابط گرافیکی را میسازد و در نهایت Node.js که یک دامنه قابل اجرا است، میباشد. این مورد هم به صورت متن باز در دسترس قرار دارد. Node.js به توسعه دهنده ها کمک میکند که یک ساختار مبتنی بر ایونت (Event-Deriven) بسازند که تجربه کاربری را بهبود میبخشد و زمان لود شدن اپلیکیشن را کاهش میدهد. دسترسی به کتابخانه ماژول های جاوا اسکریپت هم امکان ساخت اپلیکیشن های مقیاس پذیر و همچنین توسعه سریع را برای ما مهیا میکند.

به دلیل اینکه برنامه های پشتیبانی به زبان جاوا اسکریپت نوشته میشوند، توسعه دهنده ها میتوانند هم برای سمت سرور و هم برای سمت کلاینت کدنویسی کنند. همچنین میتوانند کدهای همکارانی که روی قسمت های دیگر کار میکنند را بسیار راحت تر متوجه بشوند. AngularJS هم انعطاف خوبی دارد و میتواند با فریمورک های تست جاوا اسکریپت به راحتی کار بکند. همه این موارد میتوانند MEAN را به یک انتخاب خوب برای اپلیکیشن های MVP تبدیل کند.


Python-Django

این مورد یک تکنولوژی فول استک، مانند دو موردی که در بالا معرفی کردیم نیست. زیرا شما باید خودتان دنبال تکنولوژی های وب سرور و دیتابیس بگردید تا مجموعه را کامل کنید. اما باز هم دجانگو میتواند برای ساختن بک اند اپلیکیشن مورد استفاده قرار بگیرد. این فریمورک که چندین کاربرد دارد متن باز بوده، قابل اطمینان است، به بلوغ رسیده است، پایداری دارد و یک داکیومنتیشن بسیار عالی برای آن موجود است. این مورد هم برای ساخت نمونه های اولیه کاربردی از اپلیکیشن و همچنین برای ساخت سریع اپلیکیشن های پیچیده کارایی دارد.


Ruby on Rails

Ruby on Rails (که بصورت مخفف RoR هم بهش میگن) یکی دیگر از فریمورک های متن باز است. این فریمورک توسعه سریع وب را به لطف لایبرری های قدرتمند و کامل خود، ممکن میسازد. این ویژگی ها باعث شده اند که RoR یک فریمورک محبوب برای ساخت اپلیکیشن های پیچیده و چند کاره است. RoR با MySQL سازگار است و دیتابیس درونی مخصوی به خودش را دارد.


کدام تکنولوژی را انتخاب کنیم؟

اپلیکیشن های قدرتمند با استفاده از تکنولوژی های LAMP و MEAN ساخته میشوند. هنوز هم LAMP با پایتون محبوب ترین انتخاب توسعه دهندگان Full Stack است. اگر همه کمپانی هایی که رشد زیادی داشته اند را بررسی کنیم، متوجه میشویم PHP، Python، Node.js و Ruby on Rails مواردی هستند که بیشتر از همه توسط آنها استفاده شده اند.

بک اند یا فرانت اند

اپلیکیشن های موبایل در برابر کش کردن داده ها آسیب پذیرند. شاید استفاده از یک شبکه مجازی خصوصی، به مدیریت و امنیت اپلیکیشن کمک کند. برای امنیت بیشتر، شرکت ها ممکن است دسترسی به منابع حیاتی را فقط از طریق این شبکه ها میسر کنند یا دسترسی از طریق شبکه های غیر ایمن را مسدود نمایند.


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

اگر بخواهیم کلی به این قضیه نگاه کنیم میتوانیم سمت سرور را به قسمت های مختلف هیبرید و بومی تقسیم کنیم. معمولا هم اگر دنبال کارایی و Performance بیشتر باشیم، باید تا جایی که میشود روش بومی (Native) را انتخاب کنیم. مزایای روش هیبرید هم این است که میتوانید از ابزار های شناخته شده طراحی وب در توسعه موبایل استفاده کنید. معمولا برای توسعه دهنده ها این مسئله، انتخاب بین این است که یک زبان جدید مانند سوییفت یا کاتلین را یاد بگیرند، یا اینکه با استفاده از زبان هایی که قبلا می شناخته اند، مانند جاوا اسکریپت و CSS، کار را جلو ببرند.

سمت کلاینت برنامه نویسی فول استک

یکی دیگر از مزایای روش هیبرید این است که میتوانید یک سورس برای نرم افزار بنویسید و آن را برای دستگاه ها یا پلتفرم های مختلف منتشر کنید. با اینکه هر پلتفرم نیازها و موارد مختلفی برای خود دارد، اما میتوانید با استفاده از یک ریشه، برای همه آنها نرم افزار تولید کنید.


استک های تکنولوژی بومی موبایل

یک اپلیکیشن موبایل بومی، طراحی میشود تا روی یک سیستم عامل خاص موبایل اجرا بشود. در کنار عملکرد بهتر و امنیت بالاتر، این اپلیکیشن ها پاسخ دهی بسیار بهتری دارند و میتوانند از کنترل Gesture، ناتیفیکیشن های دستگاه، دسترسی به دوربین دستگاه، GPS، مخاطبان و بقیه نرم افزارها و سخت افزارها استفاده کنند. همچنین (در مقایسه با وبسایت ها) اپلیکیشن ها را میتوان در حالت آفلاین هم مورد استفاده قرار داد.

در حال حاضر، پلتفرم های پیشروی دنیای موبایل اندروید و iOS هستند. بیاید با هم نگاهی به هردو بیاندازیم.


پلتفرم iOS

پلتفرم iOS

تکنولوژی های استفاده شده برای اپلیکیشن های بومی این پلتفرم، Objective C و Swift هستند. زبان متن باز Swift هنوز جوان است اما به سرعت در حال پیشرفت و توسعه میباشد. کدنویسی با آن برای تازه کارها و برای کدنویس های با تجربه ای که با زبان های دیگری کار میکرده اند، ساده و آسان است. به همین دلیل تعداد توسعه دهنده ها و کمپانی هایی که از Swift برای تولید اپلیکیشن های iOS و macOS استفاده میکنند در حال بیشتر شدن است.

محیط های برنامه نویسی (IDE) های پیشنهادی برای آن را در ادامه مشاهده میکنید:


Apple Xcode

این محیط برنامه نویسی از داکیومنت کردن یکپارچه، Git Repository، ویرایشگر سورس کد برای تولید دوباره و ویرایش هرچه بهتر کدها، یک رابط کاربری گرافیکی برای ساخت اپ و یک موتور تست کننده قدرتمند که برای تولید اپلیکیشن های iOS و macOS بهره میبرد. این نرم افزار برای استفاده رایگان است.


IntelliJ Appcode

این محیط برنامه نویسی کاملا با Xcode سازگار است و از Objective C، Swift، C و سی پلاس پلاس، جاوا اسکریپت، XML، HTML، CSS و XPath پشتیبانی میکند. این IDE دارای ویرایشگر کد قدرتمند، آنالیز کد مداوم، توانایی اشکال یابی و پشتیبانی از فریمورک های تست متفاوت است. قیمت اشتراک های این نرم افزار از ماهیانه ۸۹ دلار شروع میشوند، اما AppCode پایداری بسیار بیشتری از Xcode دارد و همچنین قابلیت تولید و ویرایش سریع کد، باعث صرفه جویی در زمان میشود.


پلتفرم اندروید

پلتفرم اندروید

تکنولوژی مورد استفاده برای اندروید، جاوا و کاتلین است. قابلیت های زبان کاتلین که به تازگی معرفی شده است، مانند زبان Swift میباشد. گوگل بصورت رسمی از کاتلین پشتیبانی میکند، پس ممکن است این زبان آینده برنامه نویسی اندروید باشد. ابزارهایی که برای اندروید استفاده میشوند عبارتند از:


Android Studio

این محیط برنامه نویسی قدرتمند، تنها گزینه رسمی و پشتیبانی شده توسط گوگل برای برنامه نویسی اندروید است. این IDE دارای قابلیت هایی مانند تکمیل خودکار کدهای جاوا، کاتلین، C و سی پلاس پلاس، ویرایشگر قدرتمند دیداری برای ساخت رابط کاربری اپلیکیشن، ویزارد های مبتنی بر Template برای کارها و کامپوننت های مختلف اپلیکیشن، یک شبیه ساز سریع برای تست کردن اپلیکیشن های اندروید، توانایی اشکال یابی کردن، یکپارچه شدن با سیستم های Version Control مانند گیت، استفاده از همه سرویس های گوگل و خروجی گرفتن از اپلیکیشن های نوشته شده با حجم بهینه و ساختار مورد قبول Play Store گوگل میباشد. این مجموعه ویژگی ها، اندروید استودیو را به یکی از قدرتمندترین IDE های موجود برای برنامه نویسی در جهان تبدیل کرده است که با استفاده از آن میتوانید برای همه دستگاه های اندرویدی (موبایل، تلویزیون، گجت های پوشیدنی و غیره) اپلیکیشن های مناسب تولید کنید.


Android NDK

کیت توسعه بومی اندروید با نام NDK (Native Development Kit) شناخته میشود. این کیت توسعه دهندگان را قادر میکند با استفاده از زبان های سی و سی پلاس پلاس، اجزای اپلیکیشن اندروید را تولید کنند. این زبان ها، زبان های سطح پایین و بومی اندروید هستند و به همین دلیل توانایی های بیشتری در استفاده از منابع سخت افزاری و نرم افزاری دستگاه را در اختیار شما قرار میدهند. برنامه نویس هایی که روی این مدل از اپلیکیشن ها با عملکرد های بالا کار میکنند، میتوانند از لایبرری هایی که به این زبان ها نوشته شده اند استفاده نمایند. توسعه بومی در اندروید نیاز به مهارت های کدنویسی بالاتری دارد و در زمان اجرا پایداری و سرعت بیشتری برای اپلیکیشن به ارمغان می آورد. این ابزار برای استفاده رایگان است و توسط اندروید استودیو پشتیبانی میشود.


ADT برای Eclipse (منسوخ شده)

محیط برنامه نویسی Eclipse قبل از اندروید استودیو برای ساخت اپلیکیشن های اندروید استفاده میشد. با استفاده از یک افزونه به نام ADT (Android Development Tools) قابلیت پشتیبانی از ساخت اپلیکیشن های اندروید به آن اضافه میگردید. این قابلیت ها شامل ویرایش XML، ویرایشگر دیداری رابط کاربری، شبیه ساز و پشتیبانی از اتوماتیک کردن تست ها میشوند. برای استفاده از این IDE رایگان، باید پلاگین گفته شده و همچنین Android SDK را روی آن نصب کنید.


اپلیکیشن های موبایل کراس پلتفرم

cross platform app development

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


Adobe Flex

Flex یک فریمورک نرم افزاری متن باز است که توسعه سریع اپلیکیشن ها موبایل را با استفاده از کامپوننت های رایج میسر میسازد. اپلیکیشن های تولید شده روی پلتفرم های اندروید، iOS و تبلت های BlackBerry اجرا میشوند. این اپلیکیشن ها همچنین میتوانند به منابع دستگاه مانند GPS، دوربین، پایگاه های داده محلی و غیره دسترسی پیدا کنند. Adobe Flash Builder یک محیط برنامه نویسی بر پایه Eclipse است که روند توسعه اپلیکشن ها را با تمپلیت های کد، ابزار Signature، اشکال یابی روی دستگاه و شبیه ساز های موبایل، ممکن کرده است. قیمت این محیط برنامه نویسی ۲۴۹ دلار است.


Corona

کرونا پیشرفته ترین پلتفرم دوبعدی توسعه اپلیکیشن های موبایل است. این مورد برای داشتن بهترین عملکرد در هر سطحی از کار، بهینه شده و برای استفاده رایگان است. این پلتفرم بر پایه زبان اسکریپت نویسی سبک، سریع و قدرتمند Lua ساخته شده است. توسعه دهندگان میتوانند با استفاده از کرونا، همه لایبرری ها و API های بومی (یعنی C، سی پلاس پلاس، Objective C، جاوا) را فراخوانی کنند. با استفاده از این ابزار میتوانید یکبار پروژه را ایجاد کرده و آن را تقریبا روی همه موبایل ها و تبلت ها (حتی Apple TV، Fire TV و Android TV) منتشر کنید. Corona همچنین به شما این امکان را میدهد برای اپلیکیشن های خودتان بتوانید کاربر جذب کنید.


Godot

با استفاده از Godot میتوانید برای هر سیستم عاملی که روی دسکتاپ اجرا میشود، بازی تولید کنید. این موتور بازی سازی رایگان و متن باز است. Godot از یک زبان اسکریپت نویسی که شباهت زیادی به پایتون دارد استفاده میکند و ورژن هایی نیز دارد که C و سی پلاس پلاس در آنها پشتیبانی میشوند. یک ویرایشگر درونی با قابلیت های Syntax Highlighting، تکمیل کننده کدها و غیره درون آن وجود دارد. همچین یک Debugger درونی برای اشکال یابی درون آن قرار گفته که میتواند روی دستگاه های موبایل این کار را انجام بدهد.


Unity

موتور بازی سازی قدرتمند یونیتی، به شما اجازه میدهد برای پلتفرم های زیادی اپلیکیشن بسازید. این محیط برنامه نویسی بصورت بهینه شده از صوت، انیمیشن و فرمول های فیزیکی پشتیبانی میکند. همچنین در Asset Store میتوانید قسمت های اماده و از پیش تولید شده از اپلیکیشن ها را دانلود کنید. در ابتدا شما میتوانید بصورت رایگان از این موتور بازی سازی استفاده کنید، اما برا نسخه پیشرفته و استفاده کامل از همه امکانات آن، باید ماهیانه ۳۵ دلار پرداخت نمایید.


Xamarin

زامارین با استفاده از فریمورک .NET و استفاده از ابزارها و لایبرری های مختلف، میتواند برای اندروید، iOS، macOS و دیگر پلتفرم ها نرم افزار تولید کند. این ابزار دارای فریمورک هایی است که اجازه میدهد اپلیکیشن ها به روش بومی تولید بشوند. از ساختار های XAML پشتیبانی میکند و با استفاده از زبان سی شارپ میتوانید اپلیکیشن بسازید. همچنین برای الگوهای معروف مانند MVVM هم کتابخانه های درونی دارد، قابلیت ویرایش کد، کامل کردن کد و بقیه کاربرد های لازم نیز میباشد.

باید تاکید کنم ابزارهایی مانند Corona SDK، Godot، Unity و Unreal Engine به شما در ساختن گرافیک های سه بعدی، انیمیشن های رابط کاربری و واقعیت افزوده برای اپلیکشن های خودتان بسازید.


توسعه اپلیکیشن های هیبرید

hybrid application development

اپلیکیشن های هیبرید مانند نرم افزارهای بومی موبایل به نظر میرسند، اما با استفاده از HTML5، CSS و جاوا اسکریپت تولید شده اند. برای یک توسعه دهنده Full Stack حیاتی است که با همه روش های ساخت اپلیکیشن آشنا باشند. بعد از تولید شدن، این اپلیکیشن در یک Wrapper قرار میگیرد که به آن اجازه میدهد بصورت بومی روی موبایل اجرا شود. در تصویر زیر میتوانید ببینید ساختار این اپلیکیشن ها چگونه است.

مقایسه اپ های بومی و هیبرید

برای توسعه این اپلیکیشن ها ابزارهایی وجود دارد که محبوب ترین آنها را در ادامه مشاهده میکنید:


Adobe PhoneGap

یک فریمورک متن باز که توسط تیم Apache Cordova توسعه داده شده و شما را قادر میکند از مهارت های توسعه وب برای ساخت اپلیکیشن های هیبرید موبایل هم استفاده کنید. قابلیت های بومی نرم افزار با استفاده از API های جاوا اسکریپت فراخوانی میشوند. Cordova به عنوان هسته اصلی PhoneGap استفاده شده است، یعنی توسعه دهندگان میتوانند در فضای ابری و بدون نصب یک SDK هم شروع به تولید اپ بکنند. با استفاده از پلاگین های مختلف هم میتوانید قابلیت های زیادی را به اپلیکیشن اضافه کنید. همه قابلیت های پایه Cordova و PhoneGap بصورت رایگان قابل استفاده هستند.


AppGuyver Steroid.js

Steroid.js برای این ساخته شد که راه حل های PhoneGap را با دسترسی به کامپوننت های رابط کاربری بومی، ناوبری و انمیمیشن ها ترکیب کند. این ابزار میتواند برای ساخت اپلیکیشن هایی که بر پایه HTML5 استفاده شود که کارایی بالا و امکانات مناسبی دارند و تجربه ای نزدیک به اپلیکیشن های بومی ارائه میدهند. Apache Cordova در این مورد هم به عنوان هسته اصلی استفاده شده است، پس برای استفاده رایگان است اما بعضی از قابلیت های مبتنی بر کلود آن باید خریداری شوند.


React Native

این فریمورک متن باز که توسط فیسبوک طراحی شده، برای طراحی رابط کاربری به کار میرود و یکی از بهترین فریمورک های ساخته شده از جاوا اسکریپت است. این فریمورک بسیاری از قابلیت های React که برای توسعه وب اپلیکیشن ها به کار میرود را برای ساخت اپ های موبایل در اختیار ما قرار میدهد. بخش هایی به نام native component در این فریمورک وجود دارند که مستقیما به همتاهای بومی خود در اندروید و iOS تبدیل میشوند. همچنین اگر بخواهید یک اپلیکیشن را بدون اینکه دوباره نویسی کنید بهبود دهید، میتوانید این کامپوننت ها را به کد اصلی اضافه کنید. علاوه بر اینها، با استفاده از پلاگین های جداگانه میتواند به شما اجازه دسترسی به منابع سیستم با استفاده کمتر از مموری و بارگذاری سریعتر را بدهد. کتابخانه React Native شامل استایل دهی های Flexbox CSS، استایل دهی inline، اشکال یابی و همچنین پشتیبانی از انتشار اپلیکیشن در گوگل پلی استور و اپ استور میشود.


Ionic

آیونیک یک فریمورک مبتنی بر AngularJS است. به همین دلیل مجموعه ابزارهای کامل و یک جامعه خوب برای پشتیبانی از آن وجود دارد. همچنین میتوانید با استفاده از آن اپلیکیشن هایی بسازید که عملکر خوبی دارند و در عین حال بومی به نظر میرسند. به عنوان مثال، Ionic از المان های DOM دوباره استفاده میکند تا عملکرد خوبی را در اپلیکیشن پیاده سازی نماید.


مقایسه فریمورک های توسعه موبایل

معایبمزایاWebAndroidiOSهسته نرم افزاری
بزرگ و اختصاصی، انحصار طلبی برای توسعه دهندگانتنها متد برای نوشتن اپ های iOS و macOS*Xcode
شباهتی به ایکلیپس ندارد چون بسیاری از برنامه نویسان جاوا با آن آشنا هستندشبیه ساز اندروید، پلاگین های زیاد و جامعه بزرگ*Android Studio
مقاله ها و منابع آنلاین همیشه به روز نیستندتبدیل مستقیم WebView ها به موارد بومی*** Apache Cordova
تعصب مایکروسافت در کدنویسیاستفاده از ویژوال استودیو و سی شارپ که برای توسعه دهندگان مایکروسافت آشناست**Xamarin
اپلیکیشن های هیبرید به اندازه اپ های بومی سریع نیستنداکوسیستم و جامعه بزرگ**React Native
اپلیکیشن های هیبرید به اندازه اپ های بومی سریع نیستند، جامعه بزرگی به اندازه Angular ندارددارای ویژگی های توسعه سمت سرور در نسخه Pro***Ionic
LanguagesOSCLIIDEهسته نرم افزاری
Swift, ObjectiveCOSXxcodebuildXCodeXcode
Java, KotlinOSX, Linux, WindowsgradlewAndroid StudioAndroid Studio
Node, JavaScript OSX, Linux, WindowscordovaPhoneGap, Builder, others Apache Cordova
C#, F#, VisualBasicWindows, OSXmsbuild, othersVisual StudioXamarin
Node, JavaScript OSX, Linux, Windowsreact-native, expo, othersAtom, Sublime, othersReact Native
Node, TypeScript, JavaScript OSX, Linux, WindowsionicVisual Studio, Atom, othersIonic

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

برای اینکه یک برنامه نویس Full Stack موبایل بشوید، باید یک تصویر بزرگ و کلی از توسعه اپلیکیشن های موبایل در ذهن خودتان داشته باشید. این تصویر شامل موارد زیر میشود:

  • روندها، اتفاقاتی که درون دستگاه موبایل رخ میدهند
  • سرور ها و فضاهایی که برای تولید محتوا و تحلیل داده ها بکار میروند
  • فرآیندهای توسعه مانند تست کردن و اشکال یابی
  • دلایل و استدلال هایی که باید قبل از انتخاب روش تولید اپلیکیشن، بلد باشید
چگونه تبدیل به یک برنامه نویس full stack شویم

به نظر من بهترین صفتی و قابلیتی که یک برنامه نویس فول استک باید داشته باشد، توانایی رهبری پروژه و ایجاد ارتباط میان فرآیند های قابل فهم آن است. برنامه نویس های Full Stack باید بتوانند برای پروژه Repository درست کنند، از ابزارهای مدیریت پروژه مانند Jira استفاده کنند، ابزارهای ارتباطی مانند Slack را به کار ببرند و همچنین باید با تکنولوژی هایی مانند فریمورک های متنوع سمت کلاینت، دیتابیس ها، API و میکرو سرویس ها آشنا باشد. علاوه بر این موارد، این افراد باید بتوانند تاثیرات خوب و مثبتی در هدایت پروژه داشته باشند و از آن حمایت کنند. یعنی برنامه نویس های Full Stack صفات زیادی را از طراح یا مدیر پروژه باید درون خود داشته باشند.


۱۰ گام برای فول استک شدن

خب، حالا که تصمیم گرفته اید این راه سخت را طی کنید، نیاز به یک راهنما و نقشه مسیر دارید که بتوانید برای کارها برنامه ریزی کنید. در این قسمت از مقاله این نقشه راه را با چند گام برای شما توضیح دادم. میتوانید آنها را یادداشت کنید که فراموش نشوند:


گام اول: یادگیری زبان های برنامه نویسی

یادگیری زبان های برنامه نویسی

شما باید در زبان های برنامه نویسی متفاوتی، ماهر بشوید. زبان هایی مانند جاوا، کاتلین، پایتون و غیره. زیرا بسیاری از کارهای پروژه های شما باید با استفاده از این زبان ها نوشته شوند. شاید هم همه آنها همیشه مورد نیاز نباشند. اما شما باید به گرامر این زبان ها تسلط داشته باشید و با مواردی مانند ساختار، طراحی، استفاده و تست کردن پروژه با آنها کاملا آشنا باشید. زیرا ممکن است پروژه با یک یا چند زبان نوشته شود.

به عنوان مثال اگر زبان جاوا را انتخاب کرده اید، باید به طراحی و برنامه نویسی شی گرا (Object Oriented)، الگوهای طراحی یا Design Pattern ها، کامپوننت های J2EE برای توسعه و بقیه موارد تسلط داشته باشید.

از کجا یاد بگیریم: میتوانید از سایت برنامه چی، دوره آموزش جاوا را دریافت کنید. همچنین سایت هایی مانند گیت هاب هم در این زمینه میتوانند کمک زیادی کنند.


گام دوم: یادگیری الگوریتم های پایه و ساختار داده

ساختار زبان های برنامه نویسی

این قسمت شاید یک دوقطبی بین برنامه نویس ها به وجود بیاورد. زیرا بسیاری از کدنویس ها هستند که معتقدند نیازی نیست علوم کامپیوتر و ساختار داده را یاد بگیرند و زیاد روی آن تمرکز داشته باشند. مباحثی مانند ساختار درختی، مرتب سازی، آنالیز الگوریتم، داده های ماتریکسی و غیره (که انصافا هم خسته کننده و حوصله سر بر هستن). اما به هرحال کمپانی هایی مانند گوگل هستند که برای استخدام و در مصاحبه ها این سوال ها را زیاد میپرسند. یکی از کارمندان گوگل در مورد مصاحبه های مهندسی فرانت اند میگوید:

ما انتظار داریم همه مهندس های فرانت اند گوگل، مانند همه مهندس های دیگر این مجموعه، دانش خوبی درباره علوم کامپیوتر داشته باشند. رایان مک گراث

پس بسیاری از شرکت ها هستند که مدارک علوم کامپیوتر را از شما درخواست میکنند. در مقابل هم کمپانی هایی هستند که اگر بتوانید ثابت کنید که قادر به توسعه اپلیکیشن هستید و دید خوبی به این حوزه دارید، شما را استخدام میکنند. اما یکی از پیش نیاز های Full Stack شدن این است که در مورد آنالیز الگوریتم ها و ساختار داده ها دانش خوبی داشته باشیم. حتی گاهی اوقات برنامه نویس ها به دلیل کمبود این دانش ها، ابزارهای اشتباهی انتخاب میکنند و کدهای خوبی نمی نویسند. پس پیشنهاد میکنم این موارد را حتما یاد بگیرید:

  • الگوریتم ها و ساختار داده (Data Structure)
  • در مورد جدول های هش مطالعه کنید و سعی کنید آن ها را عمیقا یاد بگیرید (از این ساختار داده ای در برنامه نویسی استفاده زیادی میشود).
  • ساختار درخت ها و گراف ها را بفهمید و یاد بگیرید که چطور میتوانند برای شما سود آور باشند
  • مبانی آنالیز Big-O را یاد بگیرید تا کارهای اشتباهی مانند ساخت یک حلقه تو در تو سه تایی را تا زمانی که مجبور نشدید، انجام ندهید.
  • یاد بگیرید چه زمانی باید آرایه ها و آبجکت ها را استفاده کنید
  • نحوه ذخیره سازی داده ها در رم (RAM) و حافظه داخلی را یاد بگیرید
  • تفاوت میان صف (Queue) و استک را بفهمید

گام سوم: استفاده از فریمورک و کتابخانه

فریمورک و کتابخانه در برنامه نویسی

زبان های برنامه نویسی مشهور، معمولا با فریمورک های خوبی همراه شده اند. مثل JAVA Spring، MyBatis، Hibernate، Python Django، PHP Laravel، yin، Nodejs و غیره. میتوانید با این فریمورک ها آشنا شوید و در صورت نیاز از آنها استفاده کنید. همچنین برای هر زبانی کتابخانه هایی وجود دارد که میتواند بسیاری از کارهای شما را آسان کند.برای پیدا کردن آنها باید در گوگل و سایت هایی مانند گیت هاب جستجو کنید. همچنین نحوه استفاده از آنها نیز معمولا همراه با خود آنها وجود دارند.


گام چهارم: تکنولوژی فرانت اند

فرانت اند توسعه دهنده full stack

در دنیای برنامه نویسی و توسعه اپلیکیشن های امروز، تکنولوژی های فرانت اند به یکی از مباحث مهم تبدیل شده اند. در کنار همه قابلیت هایی که اپلیکیشن شما دارد، برای کامل کردن یک تجربه کاربری خوب، باید به ظاهر و طراحی اپلیکیشن هم توجه کنید. یعنی این مسئله کاملا به استفاده درست از تکنولوژی های فرانت اند بستگی دارد. پس توسعه دهنده Full Stack باید به مواردی مانند XML، React، Flutter و غیره تسلط داشته باشد.


گام پنجم: تکنولوژی های بک اند

بک اند برنامه نویس فول استک موبایل

زمانی که تسلط خوبی روی طراحی و پیاده سازی فرانت اند پیدا کردید، میتوانید به سمت یادگیری بک اند جلو بروی تا المان های اپ را مدیریت کنید. مواردی که در بک اند مدیریت میشوند شامل عملیات های پایگاه داده، اعتبار سنجی کاربران و منطق های اپلیکیشن است. نکته ای که در اینجا وجود دارد این است که اگر درک خوبی از بک اند و اتفاقاتی که در آن رخ میدهند داشته باشید، زیاد فرقی نمیکند که کدام زبان را یاد بگیرید.

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

زیاد مهم نیست برای Full Stack شدن کدام تکنولوژی را انتخاب میکنید، فقط باید روی آن تمرکز داشته باشید و تا میتوانید موارد جدید درباره آن یاد بگیرید.


گام ششم: یادگیری کار با پایگاه های داده

پایگاه های داده

بسیار اتفاق می افتد که در هنگام ساخت اپلیکیشن، نیاز دارید داده هایی را در حافظه ذخیره کنید و بعدا دوباره به آن دسترسی داشته باشید. در حقیقت میتوانیم بگوییم همه پروژه ها به محلی برای ذخیره داده ها نیاز دارند. شما باید به عنوان برنامه نویس Full Stack، یک یا دو دیتابیس را بلد باشید و بدانید چگونه باید با آنها کار کنید. برای این کار باید فهم و درک خوبی از پایگاه های داده و ذخیره سازی در حافظه داشته باشید. بنظر من پایگاه داده MySQL میتواند برای شروع و برای استفاده در بک اند بسیار مناسب باشد. حتما درباره موارد زیر هم تحقیق کنید:

  • در مورد داده های رابطه ای مانند SQL اطلاعات کسب کنید
  • در مورد پایگاه های داده NoSQL مانند MongoDB یاد بگیرید
  • تفاوت این دو مورد و کارایی آنها را در عمل بشناسید
  • نحوه وصل کردن دیتابیس به زبانی که انتخاب کرده اید را یاد بگیرید
  • درباره ذخیره داده ها در حافظه محلی مطالعه کنید

گام هفتم: کار با REST و HTTP

api در برنامه نویسی

http یک پروتکل ارتباطی است که روی اینترنت پیاده سازی شده است. از طریق این پروتکل، کلاینت ها میتوانند با سرور ارتباط برقرار کنند. شما باید با نحوه کار این پروتکل ها آشنایی کامل داشته باشید. پیشنهاد میکنم این موارد را برای یادگیری بهتر بررسی کنید:

  • API چیست و چه استفاده هایی دارد
  • REST چیست و چرا در توسعه اپلیکیشن ها کاربرد دارد
  • با بهترین راهکارها برای طراحی RESTful API آشنا شوید
  • گواهینامه SSL چیست
  • {لینک RESTfu API}

گام هشتم: کار با سیستم های کنترل پروژه مانند Git

کار با git برنامه نویس فول استک

Git یکی از سیستم های کنترل پروژه است که به شما اجازه میدهد بصورت همزمان و تیمی روی یک پروژه کار کنید و همه میتوانند کلیه تغییرات را بصورت زنده پیگیری کنند. باید نکات کلی و جزئی را درباره گیت یاد بگیرید تا بتوانید کدهای خودتان را به بهترین شکل ممکن و بدون اشکال با بقیه تیم به اشتراک بگذارید، کدهای آنها را دریافت کنید، قسمت هایی از نرم افزار را آپدیت کنید و کدهای دیگران را بدون اینکه خرابی به وجود بیاید ویرایش کنید. شما باید مفهوم و نحوه کار گیت را درک کنید و دستورات آن را نیز استفاده کنید.


گام نهم: یادگیری طراحی گرافیک

طراحی گرافیک برنامه نویس full stack

بسیاری از مقاله هایی که درباه Full Stack شدن توضیح میدهند، به سختی به مهارت های طراحی گرافیکی و نیازی که به آنها وجود دارد بحث میکنند. اما به نظر من مهارت های طراحی گرافیکی برای یک توسعه دهنده فول استک بسیار مهم و حیاتی است. یعنی شما برای تکمیل شدن مهارت هایتان باید مواردی مانند مهارت های پایه ای طراحی پروتوتایپ، طراحی رابط کاربری و طراحی تجربه کاربری را یاد بگیرید.

برنامه نویس full stack و طراحی گرافیک

گام دهم: توسعه فردی

self development

برای تبدیل شدن به یک برنامه نویس Full Stack موفق، در کنار تسلط، استفاده از ابزارها، یادگیری مداوم و همه مواردی که در این مقاله درباره آنها صحبت کردیم، شما باید یک سری توسعه های فردی هم برای خودتان داشته باشید. این مهارت ها به شما کمک میکنند بتوانید سیستم هایی را بسازید که توانایی تبدیل شدن به غول های صنعت نرم افزار را داشته باشد. مهمترین ها را در این لیست مشاهده میکنید:

  • جهانی فکر کنید
  • مهارت های ارتباطی خودتان را بهبود بدهید
  • خلاق باشید
  • کنجکاو باشید
  • مهارت های مدیریت زمان را یاد بگیرید

نکته هایی برای تبدیل شدن به یک توسعه دهنده فول استک

همانطور که میدانید تبدیل شدن به یک برنامه نویس Full Stack کار زیاد آسان و سریعی نیست. اما میتوانید با استفاده از تجربه دیگران، این مسیر را با اطمینان بیشتری طی کنید. برای همین در این قسمت توصیه هایی از این افراد را برای شما جمع آوری کردم که با یکدیگر بررسی میکنیم:


نکته اول: موقعیت مناسب خود را پیدا کنید

نقطه مناسب را پیدا کنید

معمولا اکثر تلاش ها برای موفق شدن، از جایی شروع میشود که نمیدانیم کجا هستیم و قرار است کجا برویم. شاید هم شما بگویید Full Stack شدن یعنی همه چیز را باید یاد گرفت. اما باید به شما بگویم که دقیقا اینجا، جایی است که شما اشتباه میکنید. فول استک شدن یعنی شما بدانید دقیقا میخواهید در کدام زمینه پیشرفت کنید و قرار است چه کارهایی انجام بدهید. سپس باید برای رسیدن به این هدف، یک مسیر را برای خودتان مشخص کنید. میتوانید در دومرحله این کار را انجام بدهید:

  • نیازهای مشتری ها و بیزینس های مختلف را بشناسید
  • نقطه فوکوس خودتان را انتخاب کنید

وقتی نمیدانید میخواهید کجا بروید، همه راه ها بیراهه هستند.


نکته دوم: یک زبان را یاد بگیرید، نه همه را

یک زبان را یاد بگیرید

بعد از اینکه نقطه تمرکز خودتان را پیدا کردید، باید دنبال تکنولوژی هایی بگردید که به آنها نیاز دارید. کاری که اکثر برنامه نویس ها در این قسمت انجام میدهند، این است که شروع میکنند به یادگیری همه چیز هایی که وجود دارد. این کار علاوه بر اینکه وقت زیادی را هدر میدهد و باعث خستگی زیادی میشود، با توجه به گستردگی تکنولوژی هایی که موجود هستند تقریبا نزدیک به غیرممکن است.

کاری که باید در این شرایط انجام بدهید این است که یک سری تکنولوژی هایی که نیاز دارید را یاد بگیرید. مثلا نباید برای شما مهم باشد که آیا همه زبان های برنامه نویسی را بلد هستید یا نه. میتوانید یکی از تکنولوژی هایی که در این مقاله معرفی کردیم را انتخاب کنید و آنها را یاد بگیرید و در آن عمیق شوید (به اصطلاح Deep Dive بزنید).


نکته سوم: همه چاله چوله ها را پر کنید

راه خودتان را بسازید

چیزی که همه ما احتمالا میدانیم و تجربه کردیم، این است که اگر اصول و پایه ها مشخص و واضح باشند، بقیه کارها و جزئیات بسیار آسان تر حل میشوند. برنامه نویس های Full Stack باید با توسعه فرانت اند و بک اند راحت باشند و مشکلی نداشته باشند.

در برنامه نویسی موبایل، تکنولوژی هایی معرفی شدند و شما باید علاوه بر آشنایی بر آنها که اصول هستند، دانش شما در موارد دیگری مانند سرورها، شبکه ها، الگوریتم ها، ساختارهای داده، زبان های برنامه نویسی و پایگاه های داده قبل از Full Stack شدن باید واضح و درست باشد.

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


نکته چهارم: از همه چیز باخبر باشید، اما در یک مورد مختصص شوید

متخصص شوید

وقتی که دانش شما در این زمینه بیشتر میشود و با این فضای گسترده بیشتر آشنا میشوید، متوجه خواهید شد که نمیشود در همه آنها به تخصص برسید.

شاید این نقطه جایی باشد که برنامه نویس ها شکست میخورند. چرا؟ چون سعی کردند به همه چیز تسلط داشته باشند.

کاری که شما باید انجام بدهید این است که با همه تکنولوژی های مهم به راحتی کار کنید. سطح این راحتی با تمرین های عملی بهبود پیدا میکند. زمانی که این تمرین ها را انجام میدهید، یکی از تکنولوژی ها را بصورت تخصصی برای خود انتخاب کنید. این کار یک برگ برنده در میان رقیب ها به شما میدهد و باعث میشود نتیجه های بسیار بهتری بگیرید. همیشه با دقت تخصص خود را انتخاب کنید. باید برای این کار علاقه خود و چیزی که مشتری ها بیشتر نیاز دارند را انتخای کنید.


نکته پنجم: از دوره های آموزشی استفاده کنید

از دوره های آموزشی استفاده کنید

حتی اگر کاملا آماده باشید، همیشه باید خودتان را برای یادگیری موارد جدید آماده نگه دارید. به عبارت ساده تر، باید برای یادگیری هرچیزی که سر راه شما قرار میگیرد آماده باشید. برای اینکار میتوانید از دوره های آنلاین استفاده کنید.

در مورد دوره های برنامه نویسی هم یک نکته را در نظر داشته باشید: همیشه گران بودن دوره، دلیل بر بهتر بودن آن نیست. همیشه هم نیاز نیست برای یادگیری بهتر، بیشتر هزینه کنید. در حقیقت باید دوره هایی را انتخاب کنید که خدمات پشتیبانی بهتری داشته و بیشتر روی انجام پروژه ها تمرکز داشته باشد.


نکته ششم: شبکه سازی کنید

شبکه سازی کنید

برای اینکه همیشه در بازار و رقابت باقی بمانید، باید خودتان را به روز نگه دارید. تنها راه همین است. برای اینکار میتوانید یک شبکه از همکاران خودتان به صورت آنلاین بسازید. راه های زیادی برای پیوستن به جامعه های آنلاین وجود دارد. شبکه های اجتماعی آنلاین، فروم ها، چت روم ها و گروه های پیام رسان ها یکی از بهترین راه ها هستند. مثلا یکی از جامعه های برنامه نویسی، SlashRocket است. (هیچوقت هم لینکدین و توییتر رو فراموش نکنین).


نکته هفتم: یک اثر برای خودتان بسازید

یک اثر بسازید

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

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

یک اثر برای خودتان درست کنید. یکی از ایده هایی که دارید را با تمرکز تولید کنید. اگر ایده خوبی داشته باشید و یک اثر خوب به جای بگذارید، میتوانید استفاده های بسیار زیادی از آن داشته باشید که شاید الان اصلا به ذهن شما خطور نمیکنند.

مسیری که باید برای Full Stack شدن طی کنید، زمان بر است. فقط یاد گرفتن تکنولوژی های فرانت اند و بک اند کافی نیست. مهمترین کار این است که این دو قسمت را کامل بفهمید و بتوانید ارتباط میان آنها را به بهترین شکل ممکن برقرار کنید. هیچوقت یادگیری را متوقف نکنید.


جمع بندی

در این مقاله که توسط برنامه چی تولید شده است، درباره معنی و مفهوم برنامه نویس های Full Stack مطالب کاملی را بررسی کردیم و در ادامه هم گام ها و نکته های عملی برای فول استک شدن را یاد گرفتیم. به عنوان جمع بندی باید گفت که این مسیر نیازمند صبر و حوصله، یادگیری مداوم و شاید حتی سالها تجربه باشد.

جمع بندی برنامه نویس full stack

اگر هنوز اول کار هستید و فکر میکنید راه بسیار زیادی مانده تا حرفه ای شوید، درست فکر میکنید. این راه سخت و طولانی است، اما غیر ممکن نیست. فقط کافیست شروع کنید، راهنمایی ها را در ذهن داشته باشید و نکات مهم را رعایت کنید. در اینصورت میتوانید بسیار زودتر از چیزی که فکر میکنید به یک برنامه نویس Full Stack تبدیل بشوید.

زیاد روی سختی های کار تمرکز نداشته باشید. فرمول پیروزی اینجاست: به روز بمانید، با روحیه ادامه بدهید و شروع به کار کنید.


سوال؟ نکته؟

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


منابع بیشتر برای مطالعه

میتوانید از منابع زیر برای مطالعه بیشتر در این زمینه استفاده کنید:

درباره نویسنده

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

اسکرول به بالا