عناوین
یک متخصص فولاستک در حوزه توسعه وب در سال جاری به چه مهارتیهایی نیاز دارد و چگونه میتواند این مهارتها را به ترتیب یاد بگیرد تا روند یادگیری مهارتها و فناوریهای بعدی برای او ساده شود.
این روزها به وفور اصلاح فول استک را میشنویم یا در رزومههای مختلف آنرا مشاهده میکنیم. اصطلاحی که برخی از کاربران با آگاهی کامل آنرا به کار میبرند و برخی دیگر برای آنکه بتوانند شغل مناسبی پیدا کنند این اصطلاح را در رزومه خود وارد میکنند، به این امید که ابتدا استخدام شوند و در آینده مهارتهای یک متخصص فول استک را به دست آورند. اما پرسش مهمی که ممکن است بسیاری از کاربران و به ویژه مدیران استخدامی مطرح کنند این است که اساسا یک متخصص فولاستک در حوزه وب چه کسی است و این فرد چه مهارتهای زیربنایی و مهمی را فراگرفته است؟
برای آنکه بتوانید به یک توسعهدهنده وب تبدیل شوید باید مهارتهای زیادی را فرا گرفته باشید. به عبارت دقیقتر، یک توسعهدهنده وب فردی است که به راحتی با زیر و بم طراحی و ساخت پروژههای وب آشنا است. حال اگر در نظر دارید به یک متخصص فوقاستک در این زمینه تبدیل شوید کار شما دوچندان میشود، به واسطه آنکه در دنیای واقعی شما تعداد بسیار کمی از متخصصان را پیدا میکنید که در حوزه کاری خود یک فولاستک هستند. در حالت کلی یک توسعهدهنده فولاستک باید درک درستی از مهارتهای مختلفی داشته باشد که در دنیای فناوریاطلاعات وجود دارد. فردی که به راحتی بتواند یک نرمافزار را از ابتدا تا انتها طراحی کرده و پیادهسازی کند. استارتآپها جزء اولین مقاصد توسعهدهندگان فولاستک هستند. استارتآپها به واسطه آنکه یک طراح واقعی فولاستک با مباحثی همچون مدیریت پروژه و مفاهیم مرتبط با Agile آشنا است به شدت علاقهمند هستند تا چنین فردی را استخدام کنند.
در دنیای وب نیز توسعهدهندگان فولاستک افراد ارزشمندی به شمار میروند. اما برای افراد تازهکار پیدا کردن مسیر درستی که بتواند آنها را به یک متخصص واقعی تبدیل کند، در اغلب موارد کار چندان سادهای نیست. همین موضوع باعث میشود تا این افراد موفق نشوند در سریعترین زمان ممکن آنچه را که میخواهند به دست آورند. در نگاه اول کمی سخت و البته پیچیده به نظر برسد که بتوانیم به چنین سطحی از مهارتها دست پیدا کرده و مهمتر از آن در انتها بتوانیم این مهارتها را با یکدیگر هماهنگ سازیم، بهطوری که در نهایت بتوانیم از واژه فول استک برای توصیف خود استفاده کنیم. اما واقعیت این است که تنها شروع راه ممکن است کمی سخت باشد، به محض آشنا شدن با مهارتهای مختلف مشاهده خواهید کرد که مهارتها با یکدیگر در ارتباط بوده و بسیاری از آنها زیربنای دیگری هستند. در نتیجه اگر از همان ابتدا راه را به درستی انتخاب کنید در ادامه با مشکل چندان خاصی روبرو نخواهید شد. در ادامه این مقاله مرور کلی بر فناوریهایی خواهیم داشت که ممکن است به عنوان یک توسعهدهنده فولاستک در سال ۹۷ و سالهای آتی به آنها نیاز پیدا کنید. در ابتدا نگاهی به زبانهای برنامهنویسی پایه خواهیم داشت و در ادامه موضوعات پیشرفتهتر، چهارچوبها و ابزارهایی را که در کار حرفهای خود به آنها نیاز پیدا خواهید کرد، مورد بررسی قرار میدهیم. شما میتوانید به این مقاله همانند نقشه راهی نگاه کنید که ابزارهای مهم و کلیدی این حوزه را به شما معرفی میکند.
ملزومات زیربنایی برای توسعهدهندگان فولاستک
اگر به دنبال آن هستید تا به یک توسعهدهنده حرفهای وب تبدیل شوید، در نخستین قدم باید دو فناوری زیربنایی وب یعنی HTML و CSS را به خوبی یاد بگیرید. یادگیری زبان نشانهگذاری ابرمتن اچتیامال از آن جهت ضروری است که این زبان زیربنای سایتها را تشکیل میدهد. در نتیجه یادگیری HTML در اولویت قرار دارد. اچتیامال به شما اجازه میدهد از طریق بهکارگیری یک ترکیب نحوی نشانهگذاری ساده محتوای موردنیاز یک سایت را تعریف کرده و آنرا ساختاربندی کنید. CSS (سرنام Cacading Style Sheets) سادهترین راهکاری است که برای اضافهکردن سبکها در ارتباط با عناصر یک سایت همچون اضافه کردن فونتها، رنگها، لایهها و…. در اختیار شما قرار دارد. پیشنهاد ما این است که ابتدا به سراغ یادگیری اچتیامال رفته و پس از آنکه درک و شناخت درستی از آن به دست آورید به سراغ CSS بروید. باید اطمینان حاصل کنید که اصول اولیه را به درستی درک کردهاید. یادگیری درست و عمیق HTML و CSS برای هر توسعهدهنده وبی ضروری است، به واسطه آنکه دو فناوری یاد شده محدود به زمان نیستند و اینطور نیست که بگوییم در سالهای آتی این دو فناوری به دست فراموشی سپرده خواهند شد.
زبانهای برنامهنویسی لازم برای توسعهدهندگان فولاستک
جاوااسکریپت
جاوااسکریپت یکی از مهمترین زبانهای برنامهنویسی مرتبط با وب است که تقریبا یادگیری آن اجتنابناپذیر است. این زبان به شما اجازه میدهد تا قابلیتهای پویایی را به سایت خود اضافه کنید. زبان برنامهنویسی جاوااسکریپت در اصل پیادهسازی ویژگیهای مهم ECMAScript است. یادگیری جاوااسکریپت به شما اجازه میدهد تا پروژههای کاملا حرفهای ایجاد کنید. اگر به دنبال آن هستید تا آنگولار، React، Vue.js را در حوزه فرانتاند و در سمت بکاند Node.js فرابگیرید چارهای ندارید جزء اینکه به خوبی پیش شرط این زبانها را که همانا جاوااسکریپت است، یاد بگیرید. اصول اولیه جاوااسکریپت ساده بوده و به راحتی میتوانید آنها را یاد بگیرید. اما فراموش نکنید که این زبان به مرور زمان پیشرفت کرده و قابلیتهای بیشتر وب بیشتری به آن اضافه شدهاند. بهطور مثال در سال ۲۰۱۷ ویژگیهایی همچون توابع غیرهمزمان، حافظه اشتراکی و انجام عملیات اتمی (atomic operations) به این زبان افزوده شدهاند. پیشنهاد ما این است که ابتدا روی مفاهیم اولیه متمرکز شوید و در ادامه به سراغ مفاهیم پیشرفتهتر بروید.
TypeScript
با افزایش محبوبیت و اشتیاق برنامهنویسان به آنگولار جای تعجبی نیست که TypeScript نیز نگاههای زیادی را به سمت خود جلب کرده باشد. اگر در نظر دارید آنگولار را یاد بگیرید ابتدا باید بر TypeScript مسلط شوید. TypeScript همراستا با جاوااسکریپت به شما کمک میکند تا قابلیتهای بیشتری به برنامههای کاربردی خود اضافه کنید.TypeScript به شما اجازه میدهد تا برنامههای تحت جاوااسکریپت را در مقیاس بزرگتر به گونهای ایجاد کنید که با هر مرورگر و پلتفرمی سازگاری داشته باشد. کدهای TypeScript پس از کامپایل به شکل ساده و روشنی به جاوااسکریپت تبدیل میشوند. همچنین فراموش نکنید که از TypeScript در پروژههای ASP.Net و همچنین برنامهنویسی چندسکویی موبایل نیز میتوانید استفاده کنید.
Python
پایتون یکی از برترین زبانهای برنامهنویسی سال ۹۶ و البته سال ۹۷ است. اگر هنوز زبان برنامهنویسی پایتون را به مجموعه مهارتهای خود اضافه نکردهاید اکنون زمان مناسبی است که اینکار را انجام دهید. با استفاده از پایتون شما این توانایی را دارید تا طیف گستردهای از وظایف مختلف را انجام دهید. شما میتوانید اسکریپتهای خط فرمان، برنامههای مبتنی بر رابط گرافیکی و برنامههای وب را ایجاد کنید. علاوه بر این فراموش نکنید که زبان برنامهنویسی پایتون به شکل گستردهای در ارتباط با محاسبات علمی مورد استفاده قرار میگیرد. اگر در نظر دارید پایتون را در ارتباط با توسعه وب فراگیرید، در ادامه باید به سراغ چهارچوبهای قدرتمندی همچون Django یا Flask نیز بروید. چهارچوبهایی که در زمینه توسعه وب قدرت بسیار بالایی دارند.
چهارچوبهای فرانتاند
چهارچوبها در هر دو حوزه فرانتاند و بکاند فرآیند توسعه برنامههای وب را سریعتر کرده و به توسعهدهنده وب اجازه میدهند قابلیتها و گزینههای مدنظر خود را به شکل سادهتری به برنامه خود وارد کند. با این حال، قبل از آنکه تصمیم بگیرید از یک چهارچوب استفاده کنید، ضروری است تا در اولین گام درک عمیقی از فناوری که در حال استفاده از آن هستید به دست آورید. اینکار به شما کمک میکند تا مفاهیم مرتبط با یک چهارچوب را به خوبی یاد بگیرید. بر همین اساس، اجازه دهید در ابتدا به بررسی مهمترین چهارچوبهایی که در زمینه توسعه وب در بخش فرانتاند در اختیار شما قرار دارند، نگاهی داشته باشیم.
Angular
آنگولار چهارچوبی است که فرآیند ساخت برنامههای تحت وب را ساده میکند. این چهارچوب الگوهای اعلانی، تزریق وابستگی و ابزارهای نقطه پایانی را با یکدیگر ترکیب کرده و در نهایت بهترین الگو برای حل مشکلات و غلبه بر چالشهای توسعه را در اختیار توسعهدهندگان قرار میدهد. در سال ۲۰۱۷ آنگولار یکی از محبوبترین چهارچوبها (نسخه ۴ و نسخه ۵) برای ساخت برنامههای وب تک صفحهای لقب گرفت. قابلیتهای جدید و متعددی به آنگولار اضافه شدهاند و انتظار میرود بازهم قابلیتهای جدیدی به آن افزوده شود. آنگولار ضمن آنکه به شما اجازه میدهد از اچتیامال برای طراحی قالب استفاده کنید، همچنین این قابلیت را در اختیار شما قرار میدهد تا ترکیب نحوی اچتیامال را به گونهای بسط دهید تا جزییات برنامههای تحت وب به وضوح بیان شوند. یکی از این قابلیتهای کلیدی که در سال ۲۰۱۷ به چهارچوب آنگولار اضافه شده در ارتباط با زمان کامپایل بود. به این معنا که ویوها به جای آنکه در زمان رندر کردن کامپایل شوند، در زمان ساخت کامپایل میشوند. همین موضوع باعث میشود تا برنامههای وب به میزان قابل توجهی سریعتر شوند. کامپایلر AOT (سرنام The Ahead-of-Time) در آنگولار همه فایلهای HTML/ TypeScript و CSS را پیش از بارگیری مرورگر کامپایل کرده و اجرا میکند. البته آنگولار برای کامپایل کدهای HTML/CSS/StypeScript کامپایلر JIT سرنام (Just-In-Time) را نیز در اختیار توسعهدهندگان قرار میدهد. اگر به دنبال آن هستید تا در سال جدید یک چهارچوب توسعه جدید وب مبتنی بر JS را یاد بگیرید، پیشنهاد ما این است که نگاه عمیقی به آنگولار داشته باشید. با توجه به اینکه شرکتهای بیشتر و بیشتری تصمیم گرفتهاند از آنگولار استفاده کنند، تیم توسعهدهنده آنگولار نیز تصمیم گرفته قابلیتهای متنوع و کاربردی را در سال جدید به آنگولار اضافه کند.
React
React یک کتابخانه جاوااسکریپت بوده که برای ساخت رابطهای کاربری مورد استفاده قرار میگیرد. React باعث شده تا توسعهدهندگان دیگر رنج فراوانی را از بابت ساخت رابطهای کاربری تعاملی متحمل نشوند. در نتیجه توسعهدهندگان به راحتی میتوانند یک رابط کاربری تعاملی قدرتمند را ایجاد کنند. React به توسعهدهندگان اجازه میدهد تا برنامههای کاربردی وبمحوری را که از دادهها استفاده میکنند، به گونهای طراحی کنند که صفحات در طول زمان بدون آنکه به بارگذاری مجدد نیازی داشته باشند، تغییر پیدا کنند. الگوی اعلانی به کار گرفته شده در React خوانایی کدها را دوچندان کرده که همین موضوع فرآیند اشکالزدایی کدها را بیش از پیش ساده میکند. همچنین به این نکته توجه داشته باشید که React بهطور کامل مؤلفهمحور است. شما میتوانید مؤلفههای ایجاد شده را کپسوله کرده و آنها را بر مبنای نیاز خود مدیریت کرده و سپس از این مؤلفهها برای ساخت رابطهای کاربری پیچیده در آینده استفاده کنید. React نگارش ۱۶ در سپتامبر ۲۰۱۷ میلادی ارائه شد. با انتشار این نسخه تیم React تصمیم گرفتند تا معماری اصلی را موردبازبینی قرار دهند. این تیم در نظر دارد در آینده ویژگی رندر غیرهمزمان را به این چهارچوب اضافه کند. قابلیت فوق به توسعهدهندگان اجازه میدهد تا سرعت و زمان بارگذاری برنامههای وب سنگین را بهبود ببخشند. به واسطه آنکه دیگر ریسمان اصلی برنامه (main thread) بیش از اندازه قفل نخواهد شد. React همچنین به شما اجازه میدهد برنامههای قدرتمند تک صفحهای ایجاد کنید. اگر قبلا چنین کاری را انجام ندادهاید، قطعا باید به دنبال یادگیری این مهارت مرتبط با React باشید. اگر در نظر دارید تا برنامههای وب پیچیده را از طریق React ایجاد کنید، باید همچنین به سراغ یادگیری Redux بروید. با استفاده از Redux شما این توانایی را دارید تا از یک مدیریت مرکزی در برنامه خود استفاده کنید، رویکردی که اجازه میدهد تا فرآیند مدیریت دادهها در همه مولفهها بیش از پیش ساده شود.
Vue.js
سال ۹۶ یک سال عالی برای چهارچوب پیشرو جاوااسکریپتی Vue بود. سالی که یک رشد انفجاری را برای این چهارچوب ساخت رابطهای کاربری رقم زد. یادگیری Vue بسیار ساده بوده و بیشتر برای انجام پروژههای کوچک که اندازه کوچکی دارند مناسب است. منحنی یادگیری این چهارچوب بهگونهای است که اجازه میدهد در کوتاه مدت نکات زیادی را یاد گرفته، اما در مقابل به دستاوردهای بزرگی نائل شوید. به واسطه ساده اما کاربردی و قدرتمند بودن، تعداد ستارههای این چهارچوب روی سایت گیتهاب از ۳۷ هزار به ۷۸ هزار عدد در پایان سال ۲۰۱۷ میلادی و ۸۹ هزار در زمان نگارش این مقاله (۱۵ فروردین ماه) رسیده است. آمارها نشان میدهند که شرکتهای بیشتر و بیشتری به دنبال آن هستند تا توسعهدهندگانی را که به Vue.js مسلط هستند، استخدام کنند. روندی که بهطور مداوم در حال رشد است.
چهارچوبهای بکاند
زمانی که در حال ساخت یک پروژه وب هستید، گزینههای مختلفی در ارتباط با چهارچوبهای بکاند پیش روی شما قرار دارند. با وجود این پیشنهاد ما این است که شما تمرکز خود را روی دو گزینه مهم Node.js در دنیای جاوااسکریپت و Django در دنیای برنامهنویسی پایتون معطوف کنید. همانگونه که از نام این چهارچوبها مشخص است، چهارچوبهای بکاند در پسزمینه یا به عبارت دقیقتر روی سرور اجرا میشوند و HTML ،JSON و… را به صورت پویا برای سایت شما تولید میکنند. اگر فقط به دنبال طراحی سمت فرانتاند روی پروژه خود هستید، در نتیجه نیازی ندارید تا یک چهارچوب بکاند را به مجموعه مهارتهای خود اضافه کنید. با این حال، یک درک عمیق از چگونگی هماهنگ شدن مولفهها در کنار یکدیگر حداقل دانش فنی است که شما در ارتباط با چهارچوبهای بکاند باید به دست آورید.
Node.Js
Node.js به شما اجازه میدهد تا کدهای جاوااسکریپت را در بکاند اجرا کرده و به شکل قابل توجهی از آنها استفاده کنید. اگر Node.js را همراه با میانافزار Express استفاده کنید، قدرت شما دوچندان میشود. برای شروع یادگیری Node.js ابتدا باید اطمینان حاصل کنید که در درک دسترسی از زبان برنامهنویسی جاوااسکریپت به دست آوردهاید. شناخت دقیق و درست جاوااسکریپت به شما کمک میکند تا مفاهیم Node را به سرعت درک کنید.
Django
Django بهطور کامل با زبان پایتون نوشته شده است. اگر تمایل دارید تا زبان برنامهنویسی پایتون را یاد بگیرید به احتمال زیاد Django را نیز دوست خواهید داشت. Django یک چهارچوب قدرتمند بوده که برای مدیریت طیف گستردهای از وظایف مورد استفاده قرار میگیرد. فراموش نکنید که اگر درک عمیق و درستی از پایتون به دست آورده باشید، در عمل یادگیری Django برای شما ساده خواهد بود و به راحتی میتوانید قابلیتهای پنهان آنرا به سرعت یاد بگیرید. اگر به یادگیری پایتون علاقهمند هستید و در نظر دارید از پایتون در سمت بکاند پروژه خود استفاده کنید، در نتیجه باید زمانی را برای یادگیری Django اختصاص دهید.
ابزارها
Git
Git یکی از پر استفادهترین سیستمهای کنترل نسخه متنباز حال حاضر به شمار میرود. گیت به اعضای یک تیم اجازه میدهد به شکل همزمان و بدون آنکه در کار یکدیگر خللی وارد کنند، روی یک پروژه کار کرده و وظایف خود را به سرانجام برسانند. نرمافزار کنترل نسخه گیت این قابلیت را در اختیار شما قرار میدهد تا نسخههای مختلفی از پروژه خود را داشته باشید. همچنین هر زمان تغییری روی یک پروژه به وجود آمد، گزارشی در این ارتباط در اختیار شما قرار میدهد. به عنوان یک توسعهدهنده دیر یا زود با گیت و گیتهاب در تماس قرار خواهید گرفت. به عنوان یک سیستم کنترل نسخه (version control system) گیت از سوی شرکتهای بسیاری مورد استفاده قرار گرفته است. برای کامل کردن مجموعه مهارتهای خود به عنوان یک طراح وب باید زمانی را صرف یادگیری گیت کنید.
Webpack
Webpack یک ماژول باندلر (module bundler) قدرتمند برای برنامههای کاربردی جاوااسکریپت است. اما Bounder به چه معنا است؟ در دنیای برنامهنویسی جاوااسکریپت شما نیاز دارید تا فایلهای جاوااسکریپت را به یکدیگر متصل کرده و با یکدیگر ادغام کنید. در این حالت مرورگر فقط یک درخواست برای دریافت همه فایلها ارسال کرده و در مقابل تنها یک فایل را دریافت میکند. فایلی که در برگیرنده همه اسکریپتهای مورد نیاز است. به این فرآیند Bundling گته میشود. مهمترین مشکلی که در ارتباط با تکنیک Bundling وجود دارد در ارتباط با فایلها و ماوژلهای جاوااسکریپت است که در اغلب موارد به یکدیگر وابسته هستند و در نتیجه ترتیب اجرا و قرارگیری آنها اهمیت زیادی دارد. بر همین اساس ما به یک ابزار باندلینگ هوشمند نیاز داریم که قادر باشد به درستی این وابستگیها را کشف کرده و مدیریت کند. Webpack یک ماژول قدرتمند است که برای برنامههای جاوااسکریپت در اختیار شما قرار دارد. زمانی که Webpack برنامه شما را پردازش میکند، به صورت بازگشتی گرافی از وابستگیها ایجاد میکند که شامل هر ماژولی است که برنامه شما به آن نیاز دارید. در ادامه همه این ماژولها را درون یک تعداد باندل کوچک بستهبندی کرده (در اغلب موارد یک عدد) تا مرورگر بتواند آنها را بارگذاری کند. در سال ۲۰۱۷ نگارش ۲ و ۳ این ابزار منتشر شدند.
در نهایت
واقعیت این است که در حال حاضر مجموعه مهارتهای توسعه وب به شدت مورد نیاز است و اگر هنوز مهارتهای مربوط به توسعه وب را یاد نگرفتهاید، اکنون زمان مناسبی برای انجام این کار است. حتی اگر یک توسعهدهنده حرفهای هستید، پیشنهاد ما این است که وقت بیشتری را صرف یادگیری جدیدترین فناوریها و چهارچوبهایی کنید که با شغل شما در ارتباط است. برای افرادی که در نظر دارند تازه به دنیای توسعه برنامههای وب وارد شوند مقاله فوق میتواند به عنوان نقشه راهی برای یادگیری زبانها و چهارچوبهایی تفسیر شود که به آنها نیاز دارند.
منبع: ماهنامه شبکه