۶ چیزی که یک توسعه‌دهندهٔ حرفه‌ای وب باید بداند!

۶ چیزی که یک توسعه‌دهندهٔ حرفه‌ای وب باید بداند!

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

اولین کسی باشید که به این سؤال پاسخ می‌دهید

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

امروزه وب به عنوان مهم‌ترین ابزار ارائهٔ یک راه ارتباطی ساده و قابل‌استفاده شناخته می‌شود و این در حالی است که اغلب اپلیکیشن‌های به اصطلاح Native (موبایل و یا دسکتاپ)، به طور گسترده‌ای توسط فناوری‌های وب ایجاد می‌شوند. برای اینکه توسعه‌دهندگان بتوانند در دنیای مدرن وب در پروژه‌های خود موفق شوند، باید همواره اطلاعات خود را آپدیت نگاه دارند. در همین راستا، در ادامه شش چیزی که توسعه‌دهندگان، برنامه‌نویسان و طراحان وب برای بقاء در این صنعت رقابتی باید بدانند را ارائه خواهیم کرد.

تسلط به جاوااسکریپت
نیاز به توضیح نیست که زبان جاوااسکریپت تمامی وب‌سایت‌ها را به وب اپلیکیشن‌های تعاملی و کاربردی تغییر داده است. وب اپلیکیشن‌هایی همانند Facebook ،Pinterest و Netflix که مخاطب‌شان کاربران عامه هستند، از جاوااسکریپت برای ساده‌تر کردن تعامل یوزرها استفاده می‌کنند؛ اما به خاطر داشته باشیم که جاوااسکریپت به تنهایی کمک ناچیزی به توسعه‌دهندگان می‌کند! اگر قرار بود که توسعه‌دهندگان به تنهایی از جاوااسکریپت برای ایجاد هر اپلیکیشنی استفاده کنند، چنین کاری توسعه‌دهندگان را به شدت به زحمت می‌انداخت!

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

واقعیت امر آن است که ECMAScript را می‌توان به عنوان پدر جاوااسکریپت به حساب آورد. جاوااسکریپت با به‌کارگیری از مفهومی تحت عنوان Abstraction، قابلیت‌های کاربردی بیشتری در اختیار توسعه‌دهندگان قرار می‌دهد، اما شالودهٔ اصلی این زبان همان ECMAScript است که توسط سازمانی تحت عنوان EMCA International مدیریت می‌شود.

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

آشنایی با مفهوم PWA
کاربرها به راحتی می‌توانند به آخرین نسخهٔ وب اپلیکیشن‌های موجود در بستر وب دسترسی پیدا کنند. با این حال، وب اپلیکیشن‌ها همچنان نمی‌توانند انتظاراتی که اپلیکیشن‌های به اصطلاح Native ایجاد کرده‌اند را برآورده سازند؛ قابلیت‌هایی مانند پوش نوتیفیکیشن و دسترسی آفلاین، همچنان کاربران موبایل را به سمت استفاده از اپلیکیشن‌های نِیتیو سوق می‌دهد. اما یک گزینهٔ جدید وجود دارد که ممکن است این موضوع را تغییر دهد و آن هم چیزی نیست جز مفهوم Progressive Web Application یا به اختصار PWA که تجربهٔ استفادهٔ وب در موبایل را به تجربهٔ اپلیکیشن‌های نیتیو نزدیک‌تر می‌کند.

اصطلاح PWA در سال ۲۰۱۵ توسط گوگل معرفی شد؛ این اصطلاح به وب اپلیکیشن‌هایی که تجربهٔ پیشرفته‌تر و بهتری از استفاده از وب به کاربران می‌دهند اطلاق می‌شود. PWA چیزی است که با استفاده از سرویس ورکرها، قابلیت استفادهٔ آفلاین و یا قابلیت استفاده بر روی شبکه‌های اینترنتی با سرعت پایین را به همراهٔ تجربهٔ کاربری خوبی در اختیار کاربران قرار می‌دهد.

به لطف پروسهٔ به‌روزرسانی سرویس ورکرها، PWA‌ نیز همیشه به‌روز است؛ در دسترس بودن یک PWA و سهولت در استفاده از سرویس ورکرها، این قابلیت را به یک Progressive Web Application داده تا توسط موتورهای جستجو به راحتی ایندکس شوند. PWA همچنین به یوزر این امکان را می‌دهد تا بدون مراجعه به اپ استور، اپ مد نظر خود را نصب کند (تمامی این قابلیت‌ها در مرورگرهای معروف متعددی مانند Chrome ،Firefox و Edge قرار دارند).

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

Node.js محیطی است که بر پایهٔ موتور جاوااسکریپت گوگل کروم موسوم به V8 ساخته شده است و از یک مدل مبتنی بر رویداد (Event) استفاده می‌کند که آن را برای پروژه‌هایی که با دیتای عظیمی سروکار دارند (Data Intensive) و در لحظه (Real-time) باید آپدیت شوند، مؤثرتر کرده است. مهمترین مزیت Node.js این است که توسعه‌دهندگان می‌توانند اپلیکیشن‌هایی ایجاد کنند که یوزر و سرور به راحتی می‌توانند با یکدیگر ارتباط برقرار کنند و نیازی به استفاده از مدل Request/Response که همواره مورد استفاده می‌باشد،‌ نیست.

کانتینرها (Containers)
یکی از چالش‌های بزرگ در هر پروژهٔ نرم‌افزاری (چه رسد به توسعهٔ وب) نبود ثبات در محیط‌های توسعه است چرا که توسعه‌دهندگان ابتدا در محیط به اصطلاح Development کد می‌زنند سپس کدهای خود را از طریق محیط‌های به اصطلاح Test آزمایش کرده و در نهایت در محیط Production (همان چیزی که یوزرها می‌بینند) دیپلوی می‌کنند. کانتینرها راهی جدید برای مدیریت محیط‌های کدنویسی -با تمامی زیرمجموعه‌ها و متعلقات- به همراه تمامی ملزومات منابع، به شیوه‌ای ثابت، خلل‌ناپدیز و مقیاس‌پذیر هستند (برای کسب اطلاعات بیشتر، توصیه می‌کنیم به مقالهٔ Container کانتینر چیست و چه تفاوت‌هایی با Virtual Machine دارد؟ مراجعه نمایید).

کانتینرها کمک می‌کنند تا به‌ راحتی تمامی کدهای اپلیکیشن، کانفیگ‌ها و تنظیمات، زیرمجوعه‌ها و موارد دیگر را در قالب یک پکیج آماده کنید و بدون توجه به محیط توسعه، به شما این اجازه را می‌دهند تا کار توسعه را به راحتی و با سرعت انجام دهید. در حالی که تیم‌های پیشرو در زمینهٔ فناوری کانتینرها Docker ،Kubernetes و Mesos می‌باشند، شرکت‌های دیگری مانند مایکروسافت و آمازون نیز این خدمات را ارائه می‌دهند، چرا که کانتینرها هزینه‌های ایجاد زیرساخت‌ها و محیط توسعه را به طرز قابل‌توجهی کاهش می‌دهند.

گیت (کنترل نسخه)
استفاده از سیستم‌های کنترل نسخه در توسعهٔ نرم‌افزار، کار تازه‌ای نیست. سیستم‌های کنترل نسخه، تغییرات در سورس‌کد را دنبال می‌کنند تا هر وقت که موردی بهم ریخت و یا توسعه‌دهنده نیاز به نسخه‌‌ای قدیمی‌تر از سورس‌کد فعلی خود داشت، بتواند به راحتی به حالت یا نسخه قبلی کار خود بازگردد. در حال حاضر، Git به مهم‌ترین و مشهورترین سیستم مدیریت کنترل نسخه در دنیای توسعهٔ نرم‌افزار تبدیل شده است. نیاز به توضیح نیست که چگونگی کار با گیت برای هر توسعه‌دهنده‌ای یک باید است، به‌خصوص توسعه‌دهندگان وب که در کار خود هر روز شاهد تغییرات بسیاری هستند (برای آشنایی بیشتر با این نوع سیستم‌ها، توصیه می‌کنیم به مقالهٔ سیستم ورژن کنترل چیست؟ مراجعه نمایید).

طراحی‌های تطبیقی و ریسپانسیو
در دنیای امروز، کاربرانی که از طریق گوشی موبایل و یا تبلت خود به وب دسترسی دارند، به مراتب بیش از کاربران دسکتاپ هستند! رابط کاربری گوشی‌های موبایل اساساً با رابط کاربری دسکتاپ تفاوت دارد به طوری که نه‌ تنها از نظر اندازه، بلکه از نظر حالت و جهت پیش‌فرض (Landscape و Portrait) هم تفاوت‌هایی مشاهده می‌شود.

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

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

نتیجه‌گیری
امروزه صنعت توسعهٔ وب به مراتب از آنچه چند سال پیش وجود داشت متفاوت‌تر شده و کسی که توانایی کار با زبان‌هایی همچون CSS، HTML و JS را دارا است، هرگز نمی‌تواند امید داشته باشد که در بازار کار کنونی ماندگار باشد! برای برون رفت از این چالش، به نظر می‌رسد که طراحان، توسعه‌دهندگان و برنامه‌نویسانی که تمرکزشان روی توسعهٔ وب است باید خود را به آخرین دستاوردهای مدرن وب مجهز سازند تا علاوه بر داشتن امنیت شغلی، بتوانند بهترین #تجربهٔ کاربری را برای یوزرهایی که از محصولات ایشان استفاده می‌کنند به ارمغان بیاورند.

حال نوبت به نظرات شما می‌رسد. به نظر شما علاوه بر موارد فوق، یک توسعه‌دهندهٔ وب به چه مهارت‌های دیگری نیاز دارد تا بتوان برچسب یک «توسعه‌دهندهٔ حرفه‌ای» روی وی زد؟ نظرات و دیدگاه‌های خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.