استخدام برنامه نویس Full Stack
افرادی که با دنیای برنامه نویسی وب و اپلیکیشن آشنایی دارند، حتماً اصطلاح برنامه نویس Full Stack یا Full Stack Developer را حداقل یک بار شنیدهاند. ممکن است این افراد مفاهیمی همچون برنامه نویس بک اند، برنامه نویس فرانت اند، طراح وب و برنامه نویس فول استک را به اشتباه به جای یکدیگر استفاده میکنند. اما باید بگوییم که وظایف هر یک از این برنامهنویسان با دیگری متفاوت میباشد. هر چند که تمام آنها میتوانند برای تکمیل یک پروژه در حوزهی برنامهنویسی وب، به عنوان مکمل با یکدیگر همکاری داشته باشند. در ادامه، وظایف و مهارتهای برنامهنویسان فول استک را به طور دقیق مورد بررسی قرار خواهیم داد.
برنامه نویس Full Stack کیست؟
برای درک درست از وظایف و عملکرد یک برنامه نویس Full Stack ابتدا باید با عملکرد برنامه نویسان Front End و Back End آشنا شوید. برنامهنویسان فرانتاند در طراحی وبسایت و یا اپلیکیشن تحت وب، کدهای سمت کاربر و یا Client Side را مینویسند و بر روی ظاهر وبسایت کار میکنند. این برنامهنویسان با زبانهایی همچون Jquery، Javascript، CSS و HTML آشنایی دارند. از طرف دیگر برنامه نویسان بک اند کدهای سمت کاربر را به دیتابیس وصل میکنند و با استفاده از زبانهایی همچون PHP، ASP و یا Python، به نوشتن کدهای داینامیک میپردازند. در واقع فول استک کارها، کسانی هستند که به هر دو حوزهی بکاند و فرانتاند تسلط کافی دارند و به تنهایی میتوانند یک پروژهی تحت وب را به پایان برسانند. اما تبدیل شدن به یک برنامه نویس فول استک به این سادگیها نمیباشد و یک شبه نمیتوان به تمام مهارتهای لازم برای موفقیت در آن دست یافت.
یک برنامه نویس Full Stack باید از چه مهارتهایی برخوردار باشد؟
بر اساس قانون ۱۰ هزار ساعت گلادول برای آنکه به یک برنامه نویس Full Stack حرفهای تبدیل شوید، حدود ۱۰ سال زمان نیاز دارید. این بدان معناست که دستیابی به تخصص کافی و قابل قبول برای برنامهنویسان فول استک به سادگی امکانپذیر نمیباشد و تلاش و پشتکار زیادی را میطلبد. در واقع یک فول استک کار متبحر علاوه بر آنکه تجربهی چندین سال کار در زمینهی بکاند و فرانتاند را دارد، از مهارتهای بسیار دیگری نیز برخوردار میباشد. در ادامه برخی از این مهارتها را آوردهایم.
۱. توانایی طراحی در سطح پایه
یک برنامه نویس Full Stack باید به طراحی وب و طراحی رابط کاربری مسلط باشد. یعنی اینکه از مهارت کافی در ساخت و راهاندازی صفحات وب برخوردار باشد. علاوه بر آن با ذوق و سلیقه استانداردهای لازم جهت پیادهسازی یک طرح قابل درک و در عین حال جذاب را به کار بندد. مهارت طراحی برای یک فول استک کار حرفهای از اهمیت زیادی برخوردار است. پس لازم است تا این افراد با اصول و تواناییهای طراحی پایهای نمونهی اولیه، طراحی رابط کاربری و UX آشنایی داشته باشند.
۲. آشنایی با دیتابیس و حافظهی پنهان (Cache)
در برنامهنویسی پروژههای تحت وب، قدرت اصلی کدهای سمت سرور زمانی اتفاق خواهد افتاد که به یک دیتابیس وصل شوند. از طرفی حضور دیتابیسها برای ذخیرهی دادهها بسیار ضروری میباشد. بنابراین یک برنامه نویس Full Stack باید حداقل به یک یا دو دیتابیس آشنایی داشته باشد و شیوهی کار با آنها را بداند. در حال حاضر پرطرفدارترین پایگاه دادهها شامل MySQL، MongoDB، Redis، Oracle و SQL Server هستند. MongoDB که یکی از پایگاه دادههای سند محور میباشد، به طور گسترده در محصولات اینترنتی مورد استفاده قرار میگیرد. در پروژههای بزرگتر بهتر است از MySQL یا دیتابیس تجاری Oracle به عنوان پایگاه دادهی Back End استفاده شود. از دیتابیسهای In-Memory مانند Redis نیز میتوان برای ذخیرهسازی اطلاعات در حافظهی پنهان (Cache) و همچنین بهبود عملکرد سیستم استفاده نمود.
۳. آشنایی با مدیریت سرور (Server Management)
در مفهوم کلی مدیریت سرور به معنای وظایفی است که مربوط به مدیر سیستم می شود. این وظایف شامل مواردی همانند عملیات روی سرور، مانیتور سرویسها، بهینهسازی، نگهداری از سرور و امنیت میباشد. به عنوان یک برنامه نویس Full Stack حرفهای لازم است تا با مدیریت سرور در حد قابل قبول آشنایی داشته باشید و همچنین به کانفیگ کردن سرور مسلط باشید.
۴. توانایی کار با APIها
API مخفف واژهی application programming interface و به معنای رابط برنامهی کاربردی است. در واقع، یک API رابط بین دو نرم افزار میباشد که موجب میشود تا دو اپلیکیشن بتوانند به راحتی دادهها را با یکدیگر تبادل نمایند. به عبارت دیگر، رابطی که یک سرویس را در سرویس دیگر فراخوانی نماید به اصطلاح API گویند. به عنوان مثال، زمانیکه شما از اپلیکیشنهای درخواست تاکسی مانند اسنپ یا تپسی استفاده مینمایید، جهت مشخص نمودن مبدا و مقصد، نقشه ای از گوگل در دسترس شما قرار خواهد گرفت. این سرویس گوگل یعنی همان نقشهی گوگل، از طریق API در این اپلیکیشنهای تحت وب تعبیه شده است. بنابراین لازم است تا یک برنامه نویس Full Stack کار با APIها را به خوبی بداند و آنها را در پروژههای خود به کار گیرد.
۵. آشنایی با Version Control Systemsیا VCSها
یک برنامه نویس Full Stack تا زمانی که با مفهومی تحت عنوان Version Control System (سیستم کنترل نسخه) آشنایی نداشته باشد، هرگز نمیتواند خود را حرفهای تلقی نماید! در واقع، VCS سیستمی است که به توسعهدهندگان نرمافزار کمک میکند تا علاوه بر امکان مشارکت بر روی پروژههای نرمافزاری، بتوانند به یک تاریخچهی مدون از کدهایی که قبلاً نوشتهاند نیز دست یابند. این ویژگی به برنامهنویسان کمک میکند تا نسخههای مجزا و اختصاصی خود را در صورت نیاز به اشتراک بگذارند. از دیگر اهداف استفاده از سیستمهای ورژن کنترل (VCS)، فراهم آوردن فرصتی برای توسعهدهندگان جهت کار کردن به صورت همزمان میباشد.
۶. آشنایی با زبانهای برنامهنویسی
یک برنامه نویس Full Stack حرفهای باید با زبانهای برنامهنویسی وب، هم در سمت سرور و هم در سمت کاربر به خوبی آشنایی داشته باشد. همانطور که پیش از این هم گفتیم از جمله این زبانها میتوان به CSS3، HTML5، ASP.Net، PHP، Javascript و...، اشاره کرد. البته در یادگیری هر کدام از زبانها، نیازی به تسلط در تمامی زمینهها نمیباشد. اما برنامهنویس باید با گرامر زبان، نحوهی ساختار بندی، طراحی، پیادهسازی و تست پروژهها بر اساس یک یا چند زبان، آشنایی کامل داشته باشد.
۷. آشنایی با کتابخانهها و فریمورکهای توسعه
زبانهای برنامهنویسی معمولاً با فریمورکها و کتابخانههای کاربردی، همراه میباشند. به عنوان مثال از جمله فریمورکهای زبان PHP میتوان به Laravel (لاراول)، Symphony (سیمفونی)، Phalcon (فالکون) و Cake PHP (کیک پی اچ پی)، اشاره کرد. همچنین محبوبترین و پرطرفدارترین فریمورک زبان پایتون، Django میباشد. از طرف دیگر یک برنامهنویس Full Stack متخصص لازم است تا با کتابخانههای زبانهای برنامهنویسی نیز آشنایی داشته باشد. برای مثال، کتابخانهی instant.page، سرعت زمان بارگذاری را با استفاده از لینکهای پیش فرض، افزایش میدهد. اینکار باعث میشود که وقتی کاربری بخواهد با کلیک بر روی لینکها از صفحهای به صفحهی دیگر برود، از سرعت بارگذاری بالاتری برخوردار باشد. برنامهنویسان برای استفاده از کتابخانههایی از این قبیل، کافی است تا آنها را در پروژهی مورد نظر خود، نصب و راهاندازی نمایند.
تواناییهای فردی برای تبدیل شدن به یک برنامه نویس Full Stack حرفهای
یک برنامه نویس Full Stack، علاوه بر مهارتهای تخصصی که در بخشهای قبلی به آنها اشاره شد، باید از قابلیتهای فردی برای استخدام نیز برخوردار باشد. برای مثال اگر قرار باشد که شما به عنوان یک برنامهنویس فول استک، در سازمانی مشغول فعالیت شوید و یک سرویس تحت وب را به تنهایی راهاندازی نمایید، باید از مهارتهای مدیریتی برخوردار باشید. همچنین گاهی برای پیشبرد پروژههای بزرگتر، نیاز به کار در یک تیم تخصصی میباشد و لازم است که روحیهی تیمی بالایی داشته باشید. برخی دیگر از ویژگیهای فردی مورد نیاز برای فولاستک کارهای حرفهای، تفکر منطقی، مهارتهای ارتباطی، خلاقیت، کنجکاوی و توانایی مدیریت زمان میباشد.
برنامه نویس Full Stack یا تیم مجزا؟
یک برنامه نویس Full Stack هرچقدر هم که در کار خودش متبحر و متخصص باشد، ممکن است در یکی از زمینهها بهتر عمل نماید. چرا که مغز هر انسانی به دو نیمکرهی راست و چپ تقسیم میشود که یکی از نیمکرهها فعالتر از دیگری میباشد. قسمت ویژوال یا راست مغز رنگها را به خوبی میشناسد و مختص انجام کارهای هنری و گرافیکی میباشد. ذهن منطقی و یا قسمت چپ مغز، به استدلال، تحلیل و بررسی موضوعات مختلف میپردازد و در انجام امور ریاضی و درک الگوریتمهای پیچیده، بهتر عمل میکند. معمولا این افراد در برنامهنویسی سمت سرور نتایج بهتری را رقم خواهند زد. برعکس افرادی که نیمکرهی راست مغزشان فعالتر میباشد، در طراحی گرافیک و بخشهای هنری خلاقانهتر عمل خواهند کرد و UIها و جذابیتهای ظاهری فوقالعادهای را خلق خواهند کرد.
با توجه به موارد گفته شده، معمولاً برای حصول بهترین نتیجه بهتر است از دو شخص یا دو تیم مجزا در هر زمینهی نویسانFront End و Back End استفاده شود. اینکه هر دو بخش مربوط به کاربر و سرور در راهاندازی پروژههای تحت وب، توسط یک نفر کدنویسی شود، هرگز اشتباه نیست. اما گاهی ممکن است نتیجه به طور صد درصد مورد رضایت قرار نگیرد. زیرا همانطور که توضیح دادیم، هر شخصی در یک حوزه نسبت به سایر حوزهها بهتر عمل خواهد کرد. در هر حال، موارد مذکور همیشه صادق نمیباشند و ممکن است شخصی بتواند در هر دو زمینهی سرور و کاربر با قدرت و خلاقیت بسیار بالایی ظاهر شود. اشخاص با تجربه که معمولاً با تلاش زیاد موفق به کسب مهارتهای کافی شدهاند، به عنوان یک برنامه نویس Full Stack جهت هدایت و مدیریت تیم پروژه، بسیار مناسب هستند.
میانگین درآمد برنامه نویس Full Stack چقدر است؟
یک برنامه نویس Full Stack فارغ از اینکه زیرسیستمها چگونه جدا شدهاند، تصویر کلی را به خوبی درک میکند. به عنوان مثال ممکن است که امروز بر روی UI یک صفحهی فرود کار کند و روز بعد APIهای لازم را در سمت سرور ایجاد نماید. با تمام اینها در روز بعدی هم به سراغ دیتابیسها برود! داشتن چنین مهارتی نه تنها باعث میشود که یک پروژه را به تنهایی و با وابستگی کمتری پیش ببرید، بلکه موجب افزایش درآمد و ثبات کاری شما خواهد شد. به نقل از وبسایت معتبر Indeed.com متوسط حقوق یک فولاستک کار حرفهای، به طور سالانه ۱۱۳.۴۶۵ دلار میباشد. سانفرانسیسکو، نیویورک، مکلین و سیاتل از جمله شهرهایی در ایالات متحدهی آمریکا هستند که بالاترین پرداختی را به توسعهدهندگان فول استک، اختصاص دادهاند.