تبریک میگم، بعد از پشت سر گزاشتن مصاحبههای مختلف بالاخره اولین موقعیت شغلی خودتون رو به عنوان توسعهدهنده جونیور بدست آوردین! این یک شروع تازه و هیجانانگیز در مسیر کاری شما به عنوان توسعهدهنده هست. اما شما در اولین موقعیت شغلی خودتون به عنوان یک توسعهدهنده با چالشهایی مواجه خواهید شد. در این مقاله قصد داریم با هم به چهار مورد از چالشهای شایعی که برنامهنویسای جونیور در اولین شغل خودشون تجربه میکنن بپردازیم و راه های غلبه بر اون ها رو بررسی کنیم.
1. کار با تکنولوژیهای جدید
شما بر اساس مهارتهاتون در جاوااسکریپت مصاحبه و استخدام شدین اما چند روز بعد از شروع کار، متوجه میشین که تنها با قسمتی از کدهایی که باید با اون کار کنید آشنا هستین؛ تعداد زیادی از کتابخانهها و زبانها وجود داره که با اونها آشنا نیستین. مثلا در حالیکه همه کدهای پروژه جاوااسکریپت هستن، بخش بزرگی از اون فراتر از مهارت فعلی شماست. استرس از اینجا شروع میشه! مدام فکر میکنین آیا برای این شغل به اندازه کافی خوب هستین؟ یا میتونین تو این شغل پیشرفت کنین؟
اینجاست که سندروم ایمپاستر (imposter syndrome) میتونه براتون رخ بده، اما از اونجایی که شما مصاحبه رو با موفقیت پشت سر گذاشتین و کار رو بدست آوردین، مسئول یا مدیر استخدام شما مهارت های فنی و نرم شما رو به طور کامل ارزیابی کرده و تصمیم گرفته که شما برای این موقعیت شغلی مناسب هستین. تیم و مدیرفنیتون از شما، به عنوان توسعهدهنده جونیور، انتظار ندارن تا با همهی تکنولوژیهایی که تیم از اونها استفاده میکنه آشنا باشید؛ با این حال از شما انتظار دارن بتونین مهارتهای جدید رو یاد بگیرید.
وقتی با کتابخانه یا تکنولوژی جدیدی روبرو میشین، اولین کاری که باید انجام بدین مطالعه داکیومنت اون تکنولوژیه. این کار به شما یک چکیده از اون تکنولوژی میده و باعث میشه راحتتر نقطه شروع رو پیدا کنین. یکی از منتورهای با تجربه جملهای داره که میگه: "مهم نیست چقدر با یک کتابخانه غریبه هستید، شما در نهایت دست کم متوجه خواهید شد که چگونه کار میکند".
بعد از نگاه کلی به داکیومنت و مطالعه اصول اولیه، به سراغ پروژههای منبعبازی که بقیه افراد با استفاده از اون تکنولوژی انجام دادن برین، درباره اون سوال بپرسین و سعی کنید خودتون مشابه اونها رو انجام بدین. یک راه سریعتر هم میتونه کمک گرفتن از افراد سنیور که همکاران شما در شرکت هستن باشه. اونها با نحوه کار تکنولوژی و مخصوصا نحوه استفاده اون در پروژههای شرکت آشنایی کامل دارن و میتونن به سوالات شما پاسخ مناسبی بدن.
2. نوشتن کدی سازگار با سایر کدهای پروژه
شما یک pull request برای بررسی کدتون باز کردید و کاملا درباره کدی که نوشتید مطمئن هستین، اما با تعدادی کامنت که حتی نمیتونید بشمارید برگشت میخوره! خب، مشخص شد کد شما با باقی کدهای موجود در پروژه شرکت سازگار نیست. شما به کدتون اطمینان داشتین و الان بخاطر انتقادات نسبت به اون، دلسرد شدین.
این یه چالش متداوله که برنامهنویسها هنگام پیوستن به یک کمپانی جدید، بدون در نظر گرفتن میزان مهارتشون، با اون روبرو میشن. هرچند سنیورها با توجه به سابقه بیشتری که دارن، انتظار روبرو شدن با این چالش رو دارن و برای اون آماده هستن. در شرایط ایدهآل شرکتی که در اون کار میکنین یک راهنمای code style کامل داره که شما میتونین اون رو بررسی و دنبال کنید تا کدهایی سازگار با سبک کد تیم بنویسید. اگرچه تو دنیای واقعی همه شرکتها مستندات جامعی ندارن.
صرف نظر از اینکه شرکت شما مستنداتی داره یا نه، همهی منتورها در پاسخ به این سوال که توسعهدهندههای جونیور در مواجهه با این چالش چه کاری انجام بدن، پاسخ مشابهی دادن: سوال بپرسید!
دومینیک سیفرت (Dominik Seifert) یکی از منتورهای Codementor در این باره میگه: "من بزرگترین مانع برای جونیورها را، جدای از کمبود مهارت و اعتماد به نفس، ناتوانی در برقراری ارتباط و پرسیدن سؤالات درست را میدانم، زیرا میترسند بد به نظر برسند."
از توسعهدهندههایی که تجربه بیشتری درباره محصول و کدهای پروژه دارن سوالات "مرتبط" زیاد و مواردی که باید هنگام نوشتن کد مدنظر قرار بدین رو بپرسید.
با سوال پرسیدن چیزهایی که نمیدونین رو به اشتراک میذارین و به توسعهدهندههای دیگه اجازه میدین بدونن چطور میتونن به شما کمک کنن تا در مسیر موثرتری حرکت کنین.
در عین حال حواستون باشه که به وقت دیگران احترام بذارین. حتی اگر هم تیمیهای شما خوشحال باشن که به شما کمک کنن، زمان محدود و مسئولیتهای خودشون رو هم برای انجام دادن دارن.
بردلی کالی (Bradley Culley) یک منتور باتجربه توصیه میکنه: " علاوه بر اطمینان از اینکه سؤالات درستی میپرسید، اولویت دیگر شما این است که تا جایی که میتوانید مستقلتر شوید، اما عجله نکنید. برای مثال، اگر 30 دقیقه گیر کرده اید، کمک بخواهید. به طور خلاصه: به دنبال کمک باشید، اما سعی کنید تا جایی که می توانید مستقل تر شوید. به احتمال زیاد نمی توانید اوایل شروع به کار به تنهایی کارهایی را انجام دهید."
اگه ایدهای در این باره که code style به چه شکلی هست بدست بیارین، میتونین فرایند کدزدن خودتون رو با ابزارهایی مثل “ESLint” سادهسازی کنین که میتونه کدهای شما رو طبق یک سبک مشخص قالببندی کنه.
3. تغییر مسیرهای ناگهانی پروژه
فرض کنین ساعتها وقت صرف کدنویسی یک ویژگی خاص کردین اما در جلسه بعدی بهتون اطلاع داده میشه که پروژه قراره مسیر جدیدی رو در پیش بگیره. برای انطباق کدتون باید به عقب برگردید و تغییراتی روی اون ایجاد کنین یا حتی دوباره از اول شروع به انجامش کنین! با خودتون میگین "خب؛ امیدوارم همین یه بار باشه" اما اینطور نیست:) در طی هفتهها و ماههای بعدی مسیر پروژه پیوسته تغییر میکنه و ممکنه به نقطهای برسین که دیگه مطمئن نباشین چرا کاری که دارین انجام میدین رو انجام میدین!
برخلاف تکالیف مدرسه و دانشگاه که هدف نهاییشون مشخصه، در محیط کاری بسیاری از پروژه ها بر حسب پیشرفت و توسعه شرکت، تغییر میکنن و تنظیم میشن. اگر در مورد جهتدهی واضح پروژه احساس سردرگمی میکنیند، یکی از اولین قدمها اینه که بررسی کنید آیا از حلقه اصلی دور موندید یا هدف کلی رو درک نمیکنید.
ممکنه اواسط یک پروژه به تیم ملحق بشین. گاهی پیش میاد مدیران و سایر اعضای تیم که هدف اصلی پروژه رو میدونن، فراموش کنن اعضای جدید رو آپدیت کنن. در این موقعیت، از مدیر پروژهتون درخواست کنین تا هدف و مسیر پروژه رو براتون به صورت شفاف توضیح بده. این کار بهتون تصویر کلی واضح تری میده و کمک میکنه بهتر درک کنین که هر تصمیم چطور با هدف بلند مدت تیم تناسب داره.
با این حال این مشکل همیشه بخاطر عدم ارتباط با مدیر یا سایر اعضا نیست. گاهی بخاطر تغییرات شرکت، درخواستهای مشتری، یا عوامل دیگه ای هست که به زبون ساده خارج از کنترل شما هستن.
اگه احساس سردرگمی میکنین سعی کنید یه استراحت کوتاه داشته باشین. یک قدم زدن کوتاه یا یک لیوان قهوه به شما کمک میکنه خودتون رو از نظر جسمی و فکری بازیابی کنید. همچنین خوبه که در پایان روز، نگرانیهای خودتون درباره این موضوع رو با مدیرتون در میون بذارین. مهمه که یاد بگیرین این تغییرات و عدم قطعیتها اغلب «فقط یک مسیر طبیعی کسبوکار» هستن.
4. همگام شدن و پیش رفتن با فناوریهای جدید
مدتی به کارتون ادامه دادین و زمانی که احساس آرامش میکنید یک پروژه جدید وارد میشه و از نسخههای بهروز تر فریمورک یا کتابخانه استفاده میکنه. برخلاف زمانی که دانشجو یا کارآموز بودین، نمیتونین زمان زیادی رو برای یادگیری فناوریهای جدید اختصاص بدین.
بهروز موندن و پابهپای فناوریهای جدید پیشرفتن، بخشی از کار شما به عنوان یک توسعهدهنده هست. به عنوان یک توسعهدهنده جونیور، پیش میاد که فناوریهایی رو در دنیای واقعی هنگام کار یاد بگیرید. این ممکنه استرسزا باشه چون باید روش یادگیری خودتون رو با زمان محدود تنظیم کنید. زمانی رو برای یادگیری به روز رسانیها برنامه ریزی کنید. اگه ابزار یا بهروزرسانی جدید به طوریه که فکر میکنید میتونین نسبتاً سریع اون رو یاد بگیرین، 30 دقیقه یا یک ساعت در روز رو به تحقیق و یادگیری نحوه استفاده از فناوری جدید اختصاص بدین. همچنین خوبه که از توسعهدهندگان ارشد تیم راهنمایی بخواهید که آیا با این فناوری آشنا هستن یا نه.
اما اگه این بروزرسانی یا تکنولوژی کاملا جدید باشه بطوریکه یادگیری اون زمان زیادی رو میطلبه چی؟ بین حجم زیاد کارها و مسئولیتها اختصاص دادن زمانی نسبتا زیاد برای یادگیری دشواره. بقیه اعضای تیم هم اوقات بیکاری زیادی برای آموزش شما ندارن.
راه های مختلفی وجود داره از جمله “crash course”ها که از طریق ویدیوهای یوتیوب، یا جوامعی مثل GitHub یا Dev.to در دسترس هستن. این آموزشها عموما کوتاه هستن ولی سعی شده تا در طی اونها نکات کلیدی و پایه مطرح بشن.
اگه راهنمایی بیشتری می خواهید، می تونین با یک توسعه دهنده ارشد یا مربیان خارج از سازمان خودتون کار کنید. اونها می تونن شما رو در فناوری جدید با روشهای کارآمد بهروز کنن. مربیان می تونن به شما کمک کنند تا بر اساس پروژه یا الزامات خودتون، فناوری هایی را که باید یاد بگیرید، اولویتبندی کنید و شما رو از طریق به روز رسانیها به موقع راهنمایی کنن.
Bradley یکی از منتورها، به توسعهدهندههای جوانی که تازه فعالیت خودشون رو شروع کردن توصیه میکنه: " در انتخاب زمینه (stack) فنی که قرار است حوزه مورد علاقه شما هم باشد، بسیار دقیق باشید. به افرادی که می گویند یادگیری یک حوزه دیگر آسان و پولساز تر است، باور نکنید. یادگیری اصول اولیه آسان است. اما اگر می خواهید به فردی ارشد تبدیل شوید و نرم افزاری کارآمد و مؤثر تولید کنید، باید بسیار فراتر از اصول اولیه بروید که این کار زمانبر و دشوار خواهد بود."
جمعبندی
تغییراتی که با تبدیل شدن از یک کارآموز به یک توسعهدهنده فعال ایجاد میشه ، فقط تغییر عنوان نیست. برای غلبه به چالشهایی که در محیطهای کاری جدید با اونها روبرو هستید و پیشرفت به عنوان یک توسعهدهنده، باید طرز فکر، رویکرد و سبک یادگیری خودتون رو تغییر بدین. هر مانع جدید فرصتی برای شماست تا از نظر فنی ماهرتر و از نظر حرفه ای بالغتر بشین. یادگیری اینکه چه زمانی تقاضای کمک کنید، پرسیدن سوالات مناسب و یافتن منابع مناسب، با رشد شما به عنوان یک توسعه دهنده به مرور زمان آسونتر میشه.
شما با چه چالشهایی روبرو شدین و چطور بر اونها غلبه کردین؟ برامون بنویسین.