زیاد غیرعادی به نظر نمیرسد اگر تصور شود که انتظارات از یک دولوپر تازهکار بسیار متفاوتتر از آنچه که واقعاً هست باشد و چنین ذهنیتی عملکرد بسیاری از دولوپرها را در مصاحبههای استخدامی خراب میکند و این در حالی است که فکر کردن به اینکه موانع بلندتر از آنچه که هستند به نظر میرسند، باعث میشود تا شما در بیان مهارتهایتان در روز مصاحبه و حتی پس از آن مبالغه کنید و توان فنی خود را بهتر جلوه دهید!
ورود دولوپرهای تازهکار به بازار کار همواره با چالشهای متعددی همراه است به طوری که از روز مصاحبه گرفته تا شرکت در جلساتی که ممکن است دولوپرهای کهنهکاری در آن حضور داشته باشند، همه و همه کار را برای این قشر از نیروی کار سخت میکنند که در همین راستا، آنچه در ادامه خواهید خواند میتواند تاحدودی به منزلهٔ نقشهٔراهی باشد که اگر به درستی طی شود، چالشهای این برهه از زندگی کاری دولوپرهای تازهکار به حداقل خواهد رسید.
شروع یادگیری کدنویسی در دنیای واقعی
بیشتر شرکتهای نرمافزاری که مدیران واقعبینی دارند، از دولوپرهای تازهکار خود انتظار ندارند که کارهای عجیبوغریبی انجام دهند و یا برای چند ماه اول از آنها سؤالات چالشی نمیپرسند. حدود سه الی چهار ماه ابتدایی (یا بیشتر) برای یک دولوپر تازهوارد فقط زمان یادگیری است بدین صورت که بیاموزند که اعضای تیم چگونه با یکدیگر تعامل میکنند، چگونه باید در جلسات رفتار کنند و مهمتر از همه اینکه فرایند کدنویسی در دنیای واقعی چگونه است.
اپلیکیشنهایی که کمپانیهای بزرگ توسعه میدهند اغلب پیچیده هستند و حتی اجرای محیط توسعهٔ آن اپلیکیشنها بر روی کامپیوتر کارتان میتواند به منزلهٔ یکی از چالشهای پیشروی شما باشد به طوری که باید کامپایلر زبان برنامهنویسی مد نظر را بر روی سیستم خود نصب کنید، مسلماً به یکسری لایبرری هم نیاز خواهید داشت و همچنین احتمالاً دیتابیسها و سرویسهای مختلف تکمیلی را باید بر روی سیستم خود ران کنید. برای انجام این کار، کمپانیها به شما اجازهٔ دسترسی به کدهای اصلی در پلتفرم سورس کنترلی مثل گیت را میدهند و کار شما این است که با موفقیت برنامه را روی کامپیوتر خود دانلود و اجرا کنید که این فرایند میتواند بین چند ساعت و یا حتی چند روزی به طول انجامد!
نکتهٔ دیگری که حائز اهمیت است اینکه به عنوان یک دولوپر تازهکار از کمک گرفتن نهراسید و چنانچه هرگاه به مشکلی برمیخورید یا احساس میکنید که برای یک مدت طولانی درگیر تلاش برای انجام کاری هستید و متأسفانه به نتیجه نمیرسید، باید کمک بخواهید و اصلاً از این موضوع هراسی به خود راه ندهید و فکر نکنید که سایرین دانش شما را زیر سؤال خواهند برد (چرا که وقتی برچسب تازهکار روی شما میخورد، خواهناخواه برچسبدار شدهاید!)
شرکت در جلسات استندآپ
تیمهای توسعه که با متدولوژیهای اجایل مثال کانبال یا اسکرام کار میکنند، هر روز یک جلسهٔ کوتاه دارند که به این جلسه اصطلاحاً Standup (سرپایی) میگویند. در این جلسه، افراد حول یک دایره میایستند و هر شخصی شرحی از عملکرد خلاصهٔ خود در حدود 30 ثانیه تا 1 دقیقه به بقیهٔ اعضای تیم ارائه میدهد. در این جلسه شما توضیح میدهید که:
- دیروز چه کاری انجام دادید.
- امروز میخواهید چه کاری انجام دهید.
- و چه چیزهایی مانع انجام تَسکهای پیشروی شما میشوند.
از آنجا که همهٔ افراد تیم در جلسات استندآپ حضور دارند، این شرح عملکرد باید خلاصه باشد و بعد از جلسه هم افراد به گروههای کوچکتری تقسیم میشوند تا دربارهٔ موضوعات تخصصیتر صحبت کنند (برای مثال، دولوپری که یک فیچر ساخته است ممکن است بخواهد با دولوپر دیگری که همان فیچر را قرار است تغییر داده یا اصلاح کند گپ خواهد زد زیرا تجربیات و دیدگاهی دارد که شاید دولوپر دیگر از آنها بیاطلاع باشد.)
رفع باگهای کوچک به عنوان اولین مشارکت در کدنویسی
وظیفهٔ بعدی که تیم توسعه معمولاً به دولوپرهای تازهکار میسپارد، رفع کردن چند باگ کوچک میباشد و این در حالی است که در ابتدا رفع این باگها بسیار ساده خواهد بود و مواردی مثل اشتباهت تایپی در سورسکد و چیزهایی از این دست را شامل میشود. پس از اینکه تغییر کوچکی در اپلیکیشن انجام دادید، کد شما تحت یک فرایند بازبینی عادی قرار میگیرد که شامل حال کدهای نوشتهشده توسط سایر اعضای تیم هم میشود. به عبارتی، معمولاً یکی دیگر از دولوپرها خط به خط تغییرات را بررسی میکند و پیشنهاداتی در ارتباط با کدی که زدهاید ارائه میدهد (بازبینی کد این اطمینان را حاصل میکند که حتی اگر اجرای کد اصلی با باگ همراه بود، تنها شما مسئول بروز این مشکل نیستید و دولوپرهای دیگر که کد بررسی کردهاند نیز تا حدودی برای باگ ایجاد شده مسئول هستند.)
بسته به ماهیت شرکتی که در آن مشغول به کار شدهاید، میتوان این انتظار را داشت تا نهایتاً پس از یک الی دو ماه کدهای شما روی سرور اصلی دیپلوی شوند و به معنای واقعی کلمه وارد حوزهٔ کدنویسی شده و به مرور زمان هم اعضای تیم، بهخصوص مدیر فنی، به آرامی پیچیدگی فیچرهایی که از شما انتظار میرود بسازید را بالا میبرد تا در نهایت به سطح سایر دولوپرها برسید.
تجربهٔ کدنویسی به صورت دونفره
Pair Programming یا #برنامهنویسی دونفره مهارتی است که امروزه تأکید زیادی روی آن میشود بدین صورت که دولوپری حرفهای شروع به کدنویسی میکند و دولوپر تازهکار کنار دستش نشسته و صرفاً نگاه میکند. از نامگذاری متغیرها گرفته تا فراخوانی متدها و غیره، همه را میبایست به دقت نگاه کرد و هر کجا هم که سؤالی برایتان پیش آمد، میتوانید از همکار حرفهایتر خود بپرسید و به این شکل خواهید آموخت که خروجی سالها کدنویسی و کسب تجربه چگونه از حالت بالقوه به بالفعل درخواهد آمد.
مشارکت در اسپرینت
بیشتر تیمهای توسعهٔ نرمافزار برنامهریزی میکنند که کدام دولوپر بر روی کدام فیچر کار خواهد کرد که به این فرایند عموماً Sprint Planning میگویند که به طور کلی این فرایند به شکل زیر اتفاق میافتد:
- در ابتدا موارد باگداری که نیاز به اصلاح دارند و همچنین فیچرهای جدید نرمافزار مشخص میشوند سپس معلوم میشود که آنها ظرف چند روز کاری میبایست تکمیل شوند (این فرایند یک اسپرینت نام دارد.)
- سپس تیم توسعه به بررسی کارها میپردازد و هر کاری را به یک دولوپر محول میکند، وظایف را تقسیم میکند تا همهٔ کارها مابین همهٔ اعضا تقسیم شوند.
دولوپرهای قدیمیتر معمولاً دولوپرهای تازهکار را مجبور میکنند تا کارهای کوچکتر و آسانتر را بر عهده بگیرند! اما با گذشت زمان، پیچیدگی تغییراتی که باید اِعمال کنید به تدریج افزایش مییابد. برخی از دولوپرهای جاهطلب از افزایش تدریجی چالشهای کدنویسی به سرعت خسته میشوند و از آنجا که هر کسی میتواند برای انجام هر تَسکی داوطلب شود، دولوپرهای تازهکار جاهطلب میتوانند به دنبال کارهایی باشند که برای آنها مشکل است تا در سریعترین زمان ممکن حرفهای شوند اما در عین حال اگر یک دولوپر تازهکار برای کاری بسیار پیچیده که باید به سرعت به پایان برسد داوطلب شود، این کار احتمالاً به وی محول نشده و در عوض به دولوپر قدیمیتری داده میشود تا اطمینان حاصل گردد که تَسک مد نظر سریع و بدون اشتباه انجام میشود. در ضمن، اگر محدودهٔ زمانی برای یک فیچر یا تَسک خاص مطرح نباشد، به دولوپر تازهکار اجازه داده خواهد شد تا بر روی آن کار کند چرا که با خیال راحت و بدون استرس میتواند شروع به کد زدن کند.
پیشرفت شغلی با حذف برچسب «تازهکار» از روی خود
هفتههای ابتدایی اولین شغل شما احتمالاً کمی طاقتفرسا خواهد بود چرا که یک مهارت مهم خواهید آموخت و آن هم چیزی نیست جز اینکه چگونه در تیمی از دولوپرها کار کنید که به صورت حرفهای حداقل 40 ساعت در هفته کد میزنند؟ این بدان معنا است که درک روابط کاری و جلسات مختلف، فهمیدن این موضوع که چه کسی از برنامهنویسی گروهی لذت میبرد و چه کسی لذت نمیبرد و آموختن کار تیمی به معنای واقعی کلمه رخ خواهد داد.
معمولاً در تیمهای توسعهٔ نرمافزار اعضای تیم از ارتباطات خوبی با یکدیگر برخوردارند و عضو شدن در این تیم شامل برقراری ارتباط با سایر اعضاء خواهد بود اما پس از یک ماه یا بیشتر، اکثر دولوپرها در جریان همهچیز قرار میگیرند و شرایط خیلی آسانتر از روزهای ابتدایی خواهد شد که در این زمان احتمالاً خواهید فهمید که گام بعدی در شغلتان این است که دیگر مانند یک دولوپر تازهکار با شما رفتار نشود.
برای اینکه طرز برخورد با شما به جای یک دولوپر تازهکار به عنوان یک همکار واقعی صورت گیرد، باید مثل یک همکار واقعی هم کد بزنید، سولوشن ارائه دهید و در حل مشکلات سهیم شوید و از همین روی هم طی یک یا دو ماه، باید به این مهارتها دست یابید که در ادامه دو راهکار برای زودتر به نتیجه رسیدن ارائه خواهیم داد:
- همیشه کاری که به شما محول میشود را در چارچوب زمانی که مشخص کردید میتوانید انجام دهید، کامل کنید (حتی اگر زودتر از دِدلاین به انجام برسانید که به مراتب بهتر است.)
- برای کارهای برنامهنویسی بزرگتر داوطلب شوید و شروع به مالِ خود کردن بخشهای مشخصی از پروژههای باز شرکت کنید. به عبارت دیگر، بینشی نسبت به بخشهای مشخصی از کدها کسب کنید که شخصِ دیگری ندارد چرا که این انحصاری بودن دانش شما، شرکت را به خودتان نیازمندتر از گذشته میکند.
کارتان به عنوان یک دولوپر تازهکار چیزی نیست جز یادگیری، پیشرفت و در نهایت حذف برچسب تازهکار از روی خود به طوری که هدف شما باید رسیدن به سطحی باشد که قادر باشید به دولوپر تازهکار بعدی که شرکت استخدام میکند، کمک نمایید اما رسیدن به این سطح که شما همتراز با سایر دولوپرهای تیم شوید فرایندی است که معمولاً بسته به پشتکار افراد حدود سه تا شش ماه طول میکشد.
از آنجا که کمپانیهای نرمافزاری تمایل به سرمایهگذاری طولانی مدت روی نیروی کار خود دارند، در اکثر مواقع بهترین دولوپر جویای کار را برای یک پوزیشن توسعهدهندگی استخدام نمیکنند چرا که تجربه نشان داده است دولوپرها، چه در سیلیکونولی و چه در ایران، در هر شرکتی یک تاریخ مصرف دارند که چیزی مابین دو تا چهار سال است. حال هرچه دولوپری تازهکارتر باشد، این مدت زمان طولانیتر خواهد شد و شرکت میتواند متحمل ضرر کمتری به خاطر از دست دادن نیروی کار خود شود!
در پایان هم این نکته را به یاد داشته باشیم که اکثر مدیران منابع انسانی شرکتهای نرمافزاری به مهارت یادگیری سریع و دیگر مهارتهای غیرفنی به مراتب بیش از مثلاً تسلط به یک زبان برنامهنویسی خاص اهمیت میدهند؛ لذا سرمایهگذاری روی مهارتهای غیرفنی همچون هوش هیجانی، مهارتهای درست گوش دادن، صداقت، کار تیمی، مدیریت استرس و ... را هرگز فراموش نکنید.
سخن پایانی
مسیری که به سمت اولین جایگاه شغلی به عنوان یک دولوپر وجود دارد ممکن است آسانتر از چیزی باشد که شما تصور میکردید به طوری که این فرایند خیلی کمتر از آنچه از ابتدا تصور کردهاید ترسناک است و هرگز نیازی نیست که سعی کنید تا دیگران باور کنند شما خیلی از آنچه که هستید ماهرترید!
حال نوبت به نظرات شما میرسد. آیا وقتی که برچسب تازهکار روی شما بود، تجربیات مشابهی پس از ورود به بازار کار داشتید؟ علاوه بر این، چه توصیهای به دولوپرهای تازهکار دارید تا هرچه زودتر بتوانند این برچسب را از روی خود برداشته و به یک دولوپر به اصطلاح Senior (ارشد) تبدیل شوند؟ نظرات، دیدگاهها و تجربیات خود را با سایر کاربران سکان به اشتراک بگذارید.