شروع به کار به عنوان یک توسعهدهنده نرمافزار در یک تیم کاری میتواند استرسآور و البته هیجان انگیز باشد. حال ممکن است شما فردی باشید که مدتیست مشغول یادگیری توسعه نرمافزار هستید و شاید هم فردی باشید که به تازگی فارغ التحصیل شده و نمیدانید قدم بعدیتان چیست، در هر صورت من در این مطلب قصد دارم تا نکاتی را براساس تجربیات شخصی بیان کنم که به شما کمک میکند تا مسیر خود را بهتر طی کنید.
اشکالی ندارد که در دانشتان فقدانهایی وجود داشته باشد
بوتکمپهای کدنویسی، دورههای آنلاین و دورههای دانشگاهی همگی در تلاش هستند که به شما برنامهنویسی را یاد دهند و باید اعتراف کرد که برخی از آنها واقعا خوب هستند. اما واقعیت آن است که دنیای توسعه نرمافزار چیزی بیش از کدنویسی است. شما نیاز دارید که موضوعات زیر را نیز درک کنید:
- چه تکنولوژیهایی برای مشکلات متفاوت مناسب است
- کدهای نوشته شده توسط افراد دیگر
- الگوهای طراحی و رویکردهای مناسب الگوریتم نویسی
- تست نویسی
- سورس کنترل، CI/CD
- متدولوژیهای مختلف
- شیوه کار با تیمهای مختلف
ممکن است با برخی از این موارد آشنایی داشته باشید و همچنین ممکن است که برخی از آنها برایتان عجیب و غریب به نظر برسد. اما این موضوع اشکالی ندارد چرا که شما یک فرد تازهکار هستید و قطعا الزامی برای دانستن این موضوعات در ابتدای مسیر وجود ندارد.
بنابراین فقدانهایی در دانش تخصصی شما وجود دارد و این موضوع صرفا برای شما نیست بلکه بسیاری دیگر از توسعهدهندگان از جمله خود من در ابتدای کارم داشتم.
در حقیقت بخشی از زیبایی دنیای توسعه نرمافزار این است که به صورت مداوم تغییر میکند و شما نیاز دارید که مدام در حال خواندن باشید، فارغ از آنکه در چه سطحی از برنامهنویس بودن قرار دارید.
سوال بپرسید
شما اولین کار خود را گرفتهاید و کاملا مشتاق هستید که به صورت مستقیم وارد روند کدنویسی آن شوید. اما بعد از گذشت مدتی در قسمتی از کار به مشکل برمیخورید و کدهایتان آنطور که انتظارش میرود کار نمیکنند.
به ذهنتان میرسد که باید از یک توسعهدهنده دیگر سوال بپرسم اما فکر میکنید و به این نتیجه میرسید که:
«اگه فکر بکنه که من هیچی نمیدونم چی؟ یا شاید فکر کنه که من واقعا نمیتونم کدنویسی بکنم! بهم میخنده؟!»
اما در واقعیت چنین قضیهای هیچوقت اتفاق نمیافتد. چیزی که آنها در حقیقت فکرش را میکنند این است:
«خب، میرم یه نگاه سریعی بهش میندازم و اگه تونستم بهش کمک میکنم. اوه! منم با همچین مشکلی برخورد کردم قبلا، میتونی از متد x در پکیج y استفاده بکنی.»
ماهیت یک تیم این است که به همدیگر کمک کرده و از همدیگر پشتیبانی کنند. بنابراین اگر به مشکلی برخوردید از آنها سوال بپرسید.
از طرفی دیگر، اگر از سوالی که به شما داده شده متوجه نمیشوید برای واضح تر کردن آن سوال بپرسید.
بازبینی کردن کد
هیچوقت اولین باری که کدهایم را برای بازبینی به متخصص تیم فرستادم را از یاد نمیبرم. بعد از خواندن دیدگاههای وی متوجه شدم که کدهایم مشکلا زیادی دارند. اما این موضوع خود نکتهای مثبت است.
بازبینی کد جایی برای انتقاد و خُرد کردن طرف مقابل نیست، بلکه جاییست که فرد باید از اشتباهات خود درسهای جدیدی را یاد بگیرد.
از طرفی دیگر اگر زمانی کدهای دیگران را بازبینی کردید مشاهده میکنید که چقدر افراد مختلف از رویکردهای متفاوتی استفاده میکنند. شما حتی در این روند میتوانید به آنها کمک کرده و پیشنهاداتی را ارائه کنید.
تکه تکه کردن مسائل
اگر شما را مجبور کنند یک فیل را بخورید چه کار میکنید؟ مسلما نمیتوانید یکجا آن را قورت دهید باید آن را تکه تکه کنید!
در زمانی که به شما یک سوال داده میشود مطمئنا نمیتوانید یکجا آن را حل کنید. شما نیاز دارید تا رویکردی متفاوت داشته باشید. این رویکرد به تکه تکه کردن مسئله معروف است. شما باید یک مسئله را به مسائل کوچکتری تبدیل کرده و آنها را حل کنید. در نهایت میتوانید با کنار هم قرار دادن این مسائل، مسئله اصلی را حل کنید.
به کار بردن روشهای ساده الگوریتمی نیز میتواند کاربردی باشد. سعی کنید هر وظیفهای را به صورت یک To-Do List ساده بنویسید. قدم اول، دوم، سوم و… را تعیین کرده و پله پله جلو بروید.
ساده نگه داشتن
یک مشکل اساسی که اغلب برنامهنویسان تازهکار با آن روبرو هستند این است که سعی دارند تا چرخ را از ابتدا طراحی کنند. شاید حل کردن مشکلات با استفاده از تکنیکهای عجیب و غریب کار جالب و تاثیرگذاری باشد اما این موضوع سه مشکل اصلی را به وجود میآورد:
- استفاده نکردن از شیوههای استاندارد باعث میشود که نگهداری کردن از آن کدها سخت شود و دیگر اعضای تیم نتوانند از آن سر در بیاورند.
- ریسک آنکه مشکلات و باگهای بیشتری در کدتان بوجود بیاید زیاد است.
- زمان بیشتری برای کامل کردن مسائل نیاز است.
خب، دقیقا به چه صورتی کدها را ساده نگه دارید؟
- عمل کردن: در مرحله اول سعی کنید کدی را بنویسید که خروجی مورد نظر را به شما ارائه کند. مهم نیست که به چه صورتی این کار را انجام میدهید، صرفا کاری کنید که کدها کار بکنند.
- Refactor: بعد از آنکه کدها عمل کرد نیاز است که آنها را Refactor بکنید. کاری کنید که کدها راحتتر خوانده شوند، تمیزتر به نظر بیایند و قالبدهی مناسبتری داشته باشند.
- سرعت بخشی: بعد از Refactor کردن ممکن است متوجه شوید که در برخی از قسمتها میتوانید کارایی بیشتری را در اپلیکیشن داشته باشید. خب حال زمان آن است که کدها را بهینهسازی کنید. البته این کار را سرخود انجام ندهید تنها زمانی که مطمئن بودید دست به بهینهسازی بزنید.
کدنویسی تمیز
Martin Fowler میگوید: «هر سبک مغزی میتواند کدهایی بنویسد که کامپیوتر آنها را متوجه شود. اما برنامهنویس خوب کدهایی دارد که انسانها نیز میتوانند آن را درک کنند.
در روال Refactor کردن کدها در قسمت قبلی باید به یاد داشته باشید که کدهایی را بنویسید که خواندنشان آسان باشد و در یک قالببندی مناسب قرار بگیرند. کدنویسی به صورت تمیز یکی از موضوعاتی است که روی حرفهای بودن شما بسیار تاثیرگذار خواهد بود.
استفاده از کتابخانههای درست
ممکن است تا به حال از یک دوست سوالی کرده باشید و وی در جواب گفته باشد که «یه اپلیکیشن برای حل اون مشکل سراغ دارم.»
خب دنیای نرمافزار هم دقیقا به همین شکل است. در توسعه نرمافزار برای مشکلات موجود بستههای مختلفی بوجود آمده است که هر کدام آنها به شما در کامل کردن یک کار کمک میکنند. این بستهها را گاهی اوقات کتابخانه، فریمورک و یا قطعه کد مینامند.
برای آنکه بتوانید یکی از این موارد را پیدا کنید میتوانید مخازن گیتهاب را مشاهده بکنید و یا آنکه از طریق انجمنهایی چون StackOverflow دنبال پاسختان بگردید.
اما زمانی که از کدهای دیگران استفاده میکنید، سعی در پیدا کردن یک درک کلی از آن بکنید. ببینید که از چه الگوی طراحی استفاده کرده، با چه زبانی نوشته شده و آیا با کدهای موجود من سازگاری دارد یا خیر.
اگر نمیتوانید از طریق کدها این اطلاعات را پیدا کنید به دنبال یک فایل راهنما و یا مستندات بگردید. میتوانید از افرادی نیز سوال بپرسید.
شیوه کد خواندن را یاد بگیرید
مطمئنا همه ما آن دسته از فیلمهای هالیوودی را مشاهده کردهایم که در آن یک نفر با سرعت کدهای مختلف را مشاهده میکند و همزمان مراقب چند مانتیور است.
اما برنامهنویسی واقعی اصلا به این شکل نیست. در برنامهنویسی واقعی نوشتن و خواندن کدها واقعا زمان میخواهد.
زمانی که میخواهید ویژگی جدیدی به یک کد اضافه کنید و یا آنکه مشکلی از آن را حل کنید ابتدا نیاز است که کدبیس آن را به خوبی درک کنید. چگونه؟ با خواندن، خواندن و خواندن!
خواندن کدهای دیگران میتواند به شما در یادگیری تکنیکهای جدید نیز کمک کند. اما زمانی که شروع به انجام چنین کاری میکنید نیاز است که بیشتر تمرکزتان را روی موضوعات زیر بگذارید:
- الگوهای طراحی استفاده شده
- شیوه نامگذاری کلاسها، متدها و متغیرها
- شیوه استفاده از کامنتها
- ساختار فایلهای پروژه
- شیوه استفاده از تستها و ساختاربندیشان
میتوان کدهای برنامهنویسان دیگر را از طریق مخازن متن باز، سوالات StackOverflow و وبسایتهایی مانند codewars.com پیدا کنید.
لذت ببرید
اگر هیچکدام از نکات بالا را رعایت نکردید به این نکته توجه کنید. در زمان یادگیری، کار کردن، کدنویسی و… سعی کنید لذت ببرید. چرا که لذت بردن بهترین انگیزهدهندهای است که شما را به ادامه دادن تشویق میکند.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید