برنامهنویس بکاند وب کیست؟
به نقل از کارینسو
در دنیای وب شما با سه عنوان شغلی برنامهنویس فرانتاند، بکاند و فولاستک سروکار دارید. البته فولاستک ترکیبی از دو حالت قبل است. اما یک برنامهنویس بکاند چه کسی است، چه مهارتهایی دارد و چگونه میتوان به یک برنامهنویس بکاند تبدیل شد؟
برنامهنویس بکاند کیست؟
یک برنامهنویس بکاند بر عملکرد داخلی برنامههای وب که در سمت سرور اجرا میشوند نظارت میکند تا اطمینان حاصل کند بانکهای اطلاعاتی به درستی کار کرده و سایت بدون مشکل به درخواستهای کاربران پاسخ میدهد. سمت سرور (Server-side) و کدنویسی سمت سرور به کدهایی اشاره دارد که در پشت صحنه روی وبسرور اجرا میشوند. در نقطه مقابل سمت-سرور، سمت-کلاینت (Client-Side) و توسعهدهندگان فرانتاند قرار دارند که روی تجربه کاربری و تعامل سادهتر کاربران با سایت متمرکز هستند.
حداقل و حداکثر دستمزد یک برنامهنویس بکاند در دنیا
میزان حقوق برنامه نویسان بکاند بهطور میانگین ۶۹ هزار دلار در سال است. در حالت عادی دستمزد یک برنامهنویس بکاند تازهکار از رقم ۳۵ هزار دلار آغاز شده و تا رقم ۱۰۸ هزار دلار در سال هم میرسد. ارقام یاد شده در سه سال گذشته تا تاریخ ۱۹ ژانویه ۲۰۱۹ نوسان خیلی کمی داشتهاند.
برنامهنویس بکاند چه وظایفی دارد؟
برنامه نویسان بکاند همسو با توسعهدهندگان فرانتاند سعی میکنند با پیادهسازی بهترین الگوهای برنامهنویسی منطق عملیاتی سمت سرور را به بهترین شکل پیادهسازی کنند. به عبارت دیگر، طراحان بکاند سعی میکنند با کمک گرفتن از زبانهای اسکریپتنویسی سمت سرور همچون روبی یا پیاچپی منطق یک برنامه وب را به بهترین شکل پیادهسازی کنند. در کنار ساخت برنامههای کاربردی تحت وب، توسعهدهندگان بکاند همچنین مسئولیت بهینهسازی برنامهها به لحاظ سرعت و کارایی را نیز عهدهدار هستند. این افراد همچنین راهکارهایی برای ذخیرهسازی دادهها در بانکهای اطلاعاتی ارائه میکنند تا از اطلاعات مهمی همچون مشخصات کاربران، نظرات، پستها و…. به بهترین شکل نگهداری شود. MySQL، MongoDB و PostgreSQL از جمله بانکهای اطلاعاتی پر استفاده از سوی توسعهدهندگان بکاند است.
چگونه میتوانیم یک برنامهنویس بکاند شویم؟
همانند دنیای فرانتاند در دنیای بکاند نیز شما باید با طیف گستردهای از ابزارهای کاربردی آشنا باشید، اما استاندارد دقیقی وجود ندارد و در یک آگهی ممکن است هر شرکتی به ابزارها و فناوریهای مختلفی اشاره کرده باشد. اما یکسری مهارتها و فناوریها در قلب دنیای بکاند قرار دارند که از آن جمله به موارد زیر میتوان اشاره کرد. مواردی که به شکل برجسته به آنها اشاره شده جزء ابزارها و فناوریهای کلیدی هستند که باید با آنها آشنایی داشته باشید، سایر موارد جنبه اختیاری داشته که اگر بر آنها تسلط داشته باشید، شانس استخدام شما افزایش پیدا میکند.
- یک برنامهنویس بکاند باید با فناوریهای حوزه فرانتاند همچون HTML، CSS و جاوااسکریپت آشنایی داشته باشد تا بتواند با افراد تیم فرانتاند تعامل کند.
- توانایی مدیریت محیط هاست، مدیریت بانکاطلاعاتی و توانایی بسط دادن برنامه کاربردی برای پاسخگویی به نیازهای آتی
- آشنایی با مفاهیم کلیدی دنیای برنامهنویسی ومتدولوژیهای نرمافزار همچون اسکرام
- تسلط کافی بر الگوریتمها و ساختارهای دادهای به اندازهای که درک درستی از پشته، صف، لیستهای پیوندی، درخت، گراف، هشینگ، الگوریتمهای جستوجو و مرتبسازی داشته باشید.
- باید با زبان برنامهنویسی پایتون و همچنین مدیر بسته (Pip)، ابزارهای آزمایش (unittest/pyUnit، py.test،)، doctest، nose، tox، چهارچوبهای همگام (Django، Pyramid، Flask)، غیرهمگام (aiohttp، gevent، Tornado، Sanic) آشنا باشید..
- آشنایی با زبان روبی که شامل مدیر بسته (RubyGems)، واحد آزمایش (RSpec) و چهارچوبهای (ruby On Rails) و ByeBug میشود.
- آشنایی با Node.JS که شامل واحد آزمایش (Jest، Mocha، Enzyme، Chai، Jasmine،، Ava)، چهارچوبهای (Express، Loopback، hapi، Koa، sails.js) و مدیربسته (npm، Yarn) میشود.
- آشنایی با PHP 7 که شامل واحد آزمایش (PHPUnit، phpspec، Codeception-> Mockery)، چارچوب (Laravel، Symfony-> Slim، Lumen)،PSRs، اشکالزدایی (xDebug، XHProf، New Relic، Blockfire) میشود.
- توسعهدهند بکاند باید به خوبی با مفاهیم وبسرور(Nginx، Apache، Coddy)، RESTful APIs، تصدیق هویت(JWT، OAuth 2.0)، SOLID، YAGNI، عبارات با قاعده، داکر و Graph) آشنایی داشته باشد.
- اگر به دنبال آن هستید در شرکتهای بزرگ داخلی که عملکردی شبیه به لینکدین یا سایر شبکههای اجتماعی دارند کار کنید باید با کارگزاران پیامها همچون RobbitMQ، Apache kafka، تکنیکهای ذخیرهسازی (بانکهای اطلاعاتی رابطهای اوراکل، PostgreSQL، MariaDB، MySQL، MSSQL ) و غیر رابطهای Redis، MongoDB، Cassandra، RethinkDB، Couchbase)، کش کردن (Memcached، Redis) آشنا باشید.
- یک برنامهنویس بکاند باید درک درستی از موتورهای جستوجو(ElasticSearch، Solr، Sphinx)، الگوهای طراحی GOF و الگوهای معماری داشته باشد.(بیشتر MVC درخواست میشود.) همچنین باید با تکنیکهای مختلف آزمایش نیز آشنایی داشته باشد.
- برخی از شرکتها از توسعهدهندگان بکاند انتظار دارند که با زبان سی شارپ، جاوا یا Go آشنا باشند.
همانگونه که مشاهده میکنید، زمانی که میگویید من یک برنامهنویس بکاند هستم، در حال گفتن این موضوع هستید که طیف گستردهای از مهارتها را کسب کردهاید و قادر هستید با ابزارها و فناوریهای مختلفی کار کنید.