در دنیای نرم افزار، Backend Development(?????) برای بسیاری از افراد جذاب هست و دوست دارند این حرفه رو شروع کنند اما چهطوری؟
شاید این جمله کلیشهای باشه که باید شغلتون رو دوست داشته باشین اما حقیقت اینه که اگر شغلتون رو دوست داشته باشین، هر روز که از خواب بلند میشید, خوشحال و با انگیزه هستید که کاری رو که دوست دارین میخواین انجام بدین. برای اینکه بدونین این شغل رو دوست دارین، میتونید قسمت اول سری قبل
Road Map CMD رو بخونین.
اینهم یه Road Map دیگهاس که بهصورت چارته و میتونه کمکتون کنه.
دانشگاه بکار میاد؟????
درسته که گفته میشه دانشگاه تاثیر چشمگیری در شغلتون نداره اما دانش ابتدایی و بیسیک رشته کامپیوتر میتونه به درک مسایلی که باهاشون روبرو هستید، کمک کنه اما اگر رشته مرتبط هم ندارید، با کمی مطالعه و تلاش بیشتر قابل جبرانه و خیلی از Backend Developer ها هستند که رشته دانشگاهی مرتبط نداشتند. درسهایی که از دانشگاه میتونه کمک کنه شامل: پایگاه داده، سیسم عامل، ساختمان داده، طراحی الگوریتم، معماری کامپیوتر و تجزیه و تحلیل سیستمها است، پس این درسها رو جدی بگیرید.
“برای نوشتن این مقاله از آرین شهریزاد(Head Of Backend Engineering الوپیک)، ایلیا وکیلی(CTO فناپ)، علیمحمد فروتننژاد(Software Engineer دیجیکالا)، احسان پور سعید(Backend Developer کافه بازار)، محسن رجبی(Backend Developer علی بابا)، امین رشیدبیگی(Backend Developer اسنپفود) و عرفان مرادیان(CTO جیبیمو) کمک گرفتم که همینجا از همشون تشکر میکنم."
چه ویژگیهایی، خوبه داشته باشیم؟
دوست داشتن حل مسأله یکی از مهم ترین ویژگیها است که چالش اصلی این حرفه است اما صبر و پافشاری هم باید چاشنی کار کنید.( اما بین خودمون بمونه که خیلیها، از Stack Over Flow کپی کاری میکنن و حتی به روش حلش هم توجه نمیکنن). با توجه به کامیونیتی مثل Stack، نگران حل مسأله نباشید چون بیشتر مسایل اونجا حل شده اما بهتره قبل از استفاده، توجه کنید که چهطوری مسأله رو حل کرده و منطقش رو درک کنید.
کدوم زبان؟
برای شروع Backend یک زبان اصلی باید انتخاب کنید. برای انتخاب زبان، معیارهای زیر میتونه کمکتون کنه:
۱ - کامیونیتی که در ایران و خارج از ایران داره، و میزان استفاده آن
۲- کراس پلتفرم بودن زبان: (یعنی در زمینههای مختلف کاربرد داشته باشه) مثل: پایتون? که در زمینههای مختلف از Big Data , ML تا Desktop Applicatio میشه ازش استفاده کرد.
۴- ساده بودن زبان
البته این موارد سلیقهای هست و میتونید زبانی مثل PHP رو شروع کنید که فقط در Backend استفاده میشه یا سایر زبانها
تواناییهای و مهارتهای مورد نیازش چیه؟ ?
با وجود افرادی مثل Sofware Architecture شاید معماری نرم افزار چندان توی مصاحبهها به چشم نیاد اما هرچه پیش میرید، کاربردیتری میشه( اما در ابتدا الویت زیادی نداره). پس معلوم میشه اونقدر هم که میگن دانشگاه بدون کاربرد نیست. درک مفاهیمی مثل شی گرایی(OOP), دیزاین پترن و دانش کافی در مورد انواع دیتابیسها مثل گراف، داکیومنت استور و… نیز ضروری است.
۵- چی یادبگیریم؟ ( + منابع)
بعد از یادگیری زبانی که انتخاب کردید، حالا شروع به یادگیری این موارد کنید:
البته ترتیب این موارد الزامی نیست ولی خوبه که رعایت بشه
دونستن تفاوت ورزنهای مختلف زبانی که انتخاب کردید هم خوبه.
منابع:
کتاب Clean Code یکی از کتابهای خوبی هست که خوندنش، خالی از لطف نیست
پس از یادگیری خودتون رو در گیر چلنجها کنید، چون بخش زیادی از تواناییهای Backend از تجربه به دست مییاد. هرچیز جدید هم که باهاش برخورد میکنید سعی کنید اطلاعات کافی رو درموردش بدست بیارید.
۶- چه گونه به روز بمانیم؟
دنیای نرم افزار مدام در حال تغییر هست پس شما هم باید خوره یادگیری داشته باشید و خودتون رو بهروز نگهدارید.
- میتونید بلاگها و پادکستهای زبانی رو که می خواهید توش پیشرفت کنید دنبال کنید، مثل:
PHP Podcasts(phppodcast.com مثل)
- کنفرانسهای زبان مورد نظر
- ویکلیها(مثل:php weekly)
- مدیوم
- ردیت
توئیتر هم فراموش نشه.?
البته Command Line Heroes هم پادکست جالبی هست که توسط Red Hat تولید میشه.
همونطور که در قسمت بالا ذکر کردم، حل مسأله مهارت مهمی هست پس در حل مسایل دریغ نکنید اما همین اول کار سراغ Stack نرید. برای حل مسأله میتونید از Quera.ir یا این لیست استفاده کنید.
اگر یه مشکل دارید مثلا دخل و خرجتون رو میخوایین هندل کنین اما هیج اپلیکیشنی براش پیدا نمیکنید، پس خودتون دست بهکارشید.
توصیه ایلیا: برای شروع به دنبال حقوق خوب نباشید و سعی کنید جایی کارکنید که همواره درحال یادگیری هستید، که در اصل سرمایهگذاری روی خودتون هست و درپی اون میتونه حقوق خوب باشه.