بهترین افراد در هر حوزه، کسانی هستند که همیشه از یادگیری مطالب جدید استقبال میکنند. برنامهنویسی یک رشته پویا بوده و هرروز در حال تکامل است؛ بنابراین افراد شاغل در آن باید بدانند که جدای از پیدا کردن یک شغل مناسب، موظف هستند تا روزانه اطلاعات خود را بهروز کرده و در این صنعت نگاه رو به جلویی داشته باشند.
علاوه بر اینکه روی زبانهای برنامهنویسی مختلف تسلط پیدا میکنید، باید بتوانید در هر یک آنها نیز تبدیل به یک برنامهنویس بهتری شوید.
در این مقاله قصد داریم تا به شما مواردی را که کمک میکند تا برنامهنویس بهتری باشید را توضیح دهیم، پس تا پایان با ما همراه باشید.
یادگیری مداوم
اولین قدم برای اینکه به یک برنامهنویس بهتر تبدیل شوید این است که بدانید چه چیزهایی را نمیدانید. شاید در ظاهر این جمله بسیار کلیشهای به نظر برسد اما حتی برنامهنویسان حرفهای نیز سالها زمان نیاز دارند تا بهطور کامل این مفهوم را بپذیرند. باید بدانید با تمام اطلاعات و دانشی که دارید هنوز هم نیازمند یادگیری هستید.
بسیاری از دانشجویان نرمافزار و علوم کامپیوتر با جسارت جمله "من بهترین هستم" را تکرار میکنند فارغ از اینکه این نگرش میتواند مانع یادگیری هر دانش جدیدی شود.
استفاده از تکنیک فاینمن (Feynman)
تکنیک فاینمن یک مدل ذهنی بوده که به نام ریچارد فاینمن فیزیکدان برنده جایزه نوبل نامگذاری شده است. این تکنیک اساساً به شناسایی شکافهای دانش شما میپردازد. به این صورت که وقتی متوجه یک شکاف در سطح دانش خود شدید، باید دوباره به کتابها و منابع آموزشی بازگشته تا با جنبههای دیگر آن مفهوم بیشتر آشنا شوید. سپس آن مفهوم را چندین بار تکرار کنید تا بهطور کامل یاد بگیرید. بعداز این کار ناگهان متوجه میشوید که در اجرای کد بسیار مطمئنتر عمل کرده و اشتباهات کمتری دارید. برای یادگیری این تکنیک میتوانید هم بهصورت خود خوان عمل کرده و هم در دورههایی مانند Stack Overflow شرکت کنید. در این دورهها با سؤالها و پاسخهایی که دیگران ارائه میدهند درک عمیقترین از کاری که انجام میدهید، پیدا خواهید کرد.
بهبود مهارتهای نرم
مهارتهای نرم به مهارتهایی گفته میشود که اولاً غیر فنی بوده و ثانیاً بر چگونگی کار شما تأثیر میگذارد. بهعنوانمثال نحوه تعامل شما با کارفرما، همکاران و مشتری بخشی از مهارتهای نرم به شمار میرود. پس اینطور به نظر میرسد که مهارتهای نرم نقطه مقابل برنامهنویسی به شمار میروند. بااینحال برای پیشرفت حرفهای شما در این حوزه، فاکتور حیاتی هستند.
اگر بتوانید با مشتریان و کارفرمایان خود بهطور یکسان با شیوهای صحیح در ارتباط بوده و ایدههای خود را با روشی جذاب و دلنشین ارائه دهید متوجه خواهید شد که بسیاری از جنبههای حرفهای زندگی شما آسانتر میشود. اگر نگران این هستید که هیچ اطلاعی از مهارتهای نرم ندارید، جای نگرانی نخواهد بود. بهراحتی با شرکت در وبینارها و مطالعه مقالات مرتبط میتوانید مهارتهای نرم خود را بهبود ببخشید.
تکرار کدنویسی
اغلب کد نوشتن را با نگارش رمان مقایسه میکنند. در نوشتن یک رمان هم نباید اولین چیزی که به ذهنتان میرسد همانی باشد که در انتها منتشر میشود؛ به همین شکل هرگز نباید اولین پیشنویس خود را بهعنوان محصول نهایی عرضه کنید.
وقتی اولین بار نوشتن یک کد به اتمام رسید، چک کنید که آیا این کد بهخوبی عملکرد خود را نشان میدهد؟ ممکن است کاربردی باشد اما مطابق روز است؟ اگر میخواهید ظرافت داشته باشد باید تقریباً سه بار نوشتن این کد را تکرار کنید. اولین باری که مینویسید بهعنوان اثبات مفهوم بوده، بار دوم ایرادات آن را برطرف کنید و دفعه سوم بررسی کنید که به درستی کار کند.
تمرین زیاد
"تمرین، تمرین، تمرین" اصل اساسی نهتنها در دنیای برنامهنویسی بلکه در تمام حوزهها است. کدنویسی مانند هر مهارت دیگری بوده بنابراین بهترین راه برای پیشرفت در آن این است که کدهای زیادی بنویسید. بدون توجه به اینکه هر چیزی را چقدر میدانید، بارها و بارها آن را تمرین و مرور کنید.
میتوانید از پلتفرمهایی مانند GitHub استفاده کرده و با نوشتن کدهای خود از دیگر توسعهدهندگان بخواهید تا کار شما را نقد کرده و راهنمایی لازم برای بهبود را ارائه دهند. سپس بهترین پروژههای خود را در پورتفولیو جمعآوری کرده تا سطح رزومه خود را بالا ببرید.
برای بهبود مهارتهای خود میتوانید در برنامههای منتورشیپ شرکت کرده و یا به همراه یک برنامهنویس بهصورت همکار شروع به تصحیح ایرادات خود کنید.
مشارکت در پروژههای منبع باز راه مناسبی برای ایجاد ارتباط در حوزه کاری و به دست آورد بینش مناسب در مورد روشهای حل مسئله به شما میدهد.
یونیت تست
یونیت تست یک مرحله از تست نرمافزار بوده که در آن بخشهای کوچکی از یک کامپوننت نرمافزار مورد آزمایش قرار میگیرد. بسیاری از برنامهنویسان از این تست برای مشاهده بازدهی و عملکرد کدنویسی خود استفاده میکنند.
Unit Test برای برخی از توسعهدهندگان کار ترسناکی است؛ چرا که آنها را با خطاهای کار روبرو میکند. بااینحال استفاده از آن برای کدنویسی این اطمینان را به وجود میآورد که هر جز کار شما دقیقاً همانطور که انتظار دارید عمل میکند.
این آزمون یک جز کلیدی طراحی آزمایش محور است. این کار باعث میشود کل فرآیند کمی وقتگیرتر شود اما نتیجه نهایی کدی باکیفیت بهتر را به شما میدهد. به یاد داشته باشید که هیچ جایگزینی برای فکر کردن در طول یک فرآیند وجود ندارد؛ پس از تجزیهوتحلیل، طراحی و توسعه، یونیت تست فرصت دیگری برای فکر کردن به سناریوها و شکافهای کدتان است. این را به یک قانون تبدیل کنید که همیشه یک یونیت تست برای کد خود انجام دهید.
اگر میخواهید یونیت تست در جاوا را یاد بگیرید پیشنهاد میکنیم که JUNIT و Mockito را که دو فریم ورک ضروری برای یونیت تست جاوا بوده یاد بگیرید. در صورت نیاز میتوانید در دوره Ranga Karnan در یودمی شرکت کنید.
مطالعه کتاب
تا زمانی که شما کدهای خوب ندیده باشید چطور میتوانید تفاوت بین یک کدنویسی بد و خوب را تشخیص دهید؟
در این قسمت باید به سراغ کتاب و مقاله بروید. اغلب نویسندگان کتابها، خود برنامهنویسان حرفهای به شمار میروند. آنها تجربیات خود را در قالب یک کتاب برای دیگر برنامهنویسان تازهکار به رشته تحریر درمیآورند.
کتابهای زیادی در این زمینه وجود دارد اما یکی از بهترینها کتاب Clean Code نوشته رابرت سسیل مارتین است. با مطالعه این کتاب متوجه ایرادات خود در برنامهنویسی شده و راحتتر میتوانید برای اصلاح آنها قدم بردارید.
توصیه میشود که چنین کتابهایی را خریده تا بتوانید در طی سالها بارها و بارها آنها را مطالعه کنید.
کتاب دیگری که به شما در این زمینه کمک میکند، Effective Java نوشته جاشوا بلوخ بوده که مملو از توصیههای خوب و کاربردی است.
تنها دو راه برای بهبود مهارتها وجود دارد اول اینکه از تجربیات دیگران استفاده کنید و دوم اینکه بهشخصه دست به اشتباه بزنید تا بهمرور یاد بگیرید. مطالعه کتاب به شما کمک میکند تا سریعتر از تجربه دیگران درس گرفته و سطح خود را بالا ببرید.
البته فراموش نکنید که همیشه بیشتر خواندن مفید نیست بلکه بهتر است بجای کمیت، کیفیت کتابهای خود را بیشتر کرده و با مطالعه چندینباره آنها به بهبود خود کمک کنید.
تمرین ساختار دادهها، الگوریتمها و مسائل طراحی سیستم
شاید یکی از مهمترین کارها برای تبدیل شدن به یک برنامهنویس بهتر، این است که ساختار دادهها، الگوریتمها و مسائل طراحی سیستم را تمرین کنید. اکثر برنامهنویسان خوبی که میشناسید، در ساختار دادهها و مبانی علوم کامپیوتر واقعاً خوب هستند. با یادگیری این موارد میتوانید از آن چیزی که در دسترس شما بوده بهره بهتری ببرید. ازآنجاییکه ساختار دادهها یک قطعه کلیدی از برنامه به شمار میرود، دانش کامل درباره آنها در حل مسئله به شما کمک میکند.
به همین ترتیب داشتن دانش درباره اصول کلیدی برنامهنویسی، الگوریتمهای جستجو و مرتبسازی و سایر الگوریتمهای شناخته شده مهارتهای برنامهنویسی شما را افزایش میدهد. میتوانید در کلاسها و دورههای جامعی مانند ساختار دادهها و الگوریتمها شرکت کرده تا اطلاعات بیشتری درباره ساختار دادههای پایه، ویژگیهای آنها و زمان استفاده از آنها در برنامهنویسی را بهخوبی کسب کنید.
اگر مطالعه کتاب را بیشتر از شرکت در دورههای آنلاین دوست دارید برای بهبود دانش خود میتوانید کتابهای مربوط به آن را مطالعه کنید. مورد مهم دیگری که به شما در تبدیل شدن به یک توسعهدهنده بهتر کمک میکند، یادگیری در مورد طراحی سیستم و معماری نرمافزار است. این چیزی است که بین یک برنامهنویس با 10 سال تجربه کاری و یک برنامهنویس تازهکار تفاوت ایجاد میکند.
شما باید با نحوه کار سیستم، نحوه همکاری بخشهای جداگانه آنها، معماریهای مختلف مانند Microservices و Monolith و مزایا و معایب آنها بیشتر آشنا شوید. اگر به منابع آموزشی نیاز دارید دورههای Grokking System Design Interview را به شما توصیه میکنیم.
مطالعه وبلاگهای خوب
علاوه بر مطالعه کتاب، میتوانید وبلاگهای خوب در این زمینه را نیز مطالعه کنید. اگر سؤال شما این بوده که چگونه با خواندن وبلاگ میتوانید به برنامهنویس بهتری تبدیل شوید باید به شما بگوییم که اغلب نویسندگان وبلاگها، خود کد نویسان ماهری هستند. این افراد تجربیات و نظرات خود را در وبلاگ شخصیشان به اشتراک میگذارند.
همچنین حجم اطلاعات در وبلاگ زیاد نبوده بنابراین مطالعه و درک آنها سادهتر است. وبسایتهایی مانند Dev.to، FreeCodeCamp و Medium مقالات بسیار خوبی را به علاقهمندان ارائه میدهند.
بررسی کد
درست مانند یونیت تست، بررسی کد نیز یکی دیگر از روشهای توسعه است که به شما کمک میکند تا به یک برنامهنویس خوب تبدیل شوید. بررسی کد وقتی توسط فرد دیگری انجام میشود هم به نویسنده کمک میکند تا توصیههای خوبی دریافت کرده و هم از اشتباهات درس بگیرد. اغلب افراد با این بررسیها، اشتباهات کدی را که فکر میکردند کاملاً بینقص بوده بهبود میبخشند.
اگر جز آن دسته از افراد خوششانس بوده و در شرکتی کار میکنید که واحد بررسی کد دارند، حتماً از آنها بخواهید که به شما کمک کنند. این کار بهشدت به بهبود مهارتهای برنامهنویسی شما کمک میکند. اگر نمیدانید که در بررسی کد چه فاکتورهایی را مورد تست قرار دهید پیشنهاد میکنیم که بررسی کنید آیا کد ازنظر عملکردی درست است یا خیر، آیا از روشهای استاندارد مانند اصول طراحی SOLID و قراردادهای جاوا پیروی میکند. اینها بخشی از مواردی بوده که میتوانید موردبررسی قرار دهید.
مشورت با همکاران برنامهنویس
مطالعه کردن به شما کمک میکند اما صحبت کردن و مشورت میتواند نتیجه بهتری داشته باشد. بهتر است تا با یک برنامهنویس درباره بخشهای مختلف کار صحبت کرده و از ذهنیت و نظرات او آگاه شوید. هنگام مشورت با همکاران و همتیمیهایتان میتوانید اشکالات کار و نقصهای طراحی را پیدا کنید؛ زیرا اغلب برنامهنویسان ترجیح میدهند تا بهجای مشورت و صحبت کردن پشت کامپیوتر نشسته و کدنویسی کنند اما باید این خبر بد را بدهیم که با این کار شاید هیچوقت نتوانید از دیدگاههای مختلف آگاه شوید.
پس از همینالان تغییر را شروع کرده و اقدام به صحبت و برگزاری دورهمیهای مفید با دیگر برنامهنویسان کنید.
شرکت در انجمنها
یکی دیگر از راههایی که به شما کمک میکند تا برنامهنویس خوبی باشید این است که در انجمنهای مختلف شرکت کنید. این کار تقریباً مشابه مشورت با همکاران بوده با این تفاوت که در فضای مجازی شکل گرفته و همه برنامهنویسان از سراسر جهان میتوانند در آن شرکت کنند. در این فضاها نظرات و دیدگاههای خود را به اشتراک گذاشته و نظرات و انتقادات دیگران را بخوانید.
یکی از این فضاها را در ابتدای مقاله نیز به شما معرفی کردیم و آن Stack over Flow بوده که یک راه مناسب برای اصلاح اشتباهات و یادگیری به شمار میرود. با قرار دادن دانش و اطلاعات خود در برابر دیگران، نهتنها به آنها کمک میکنید بلکه دانش خود را در بوته آزمایش نیز قرار میدهید.
بسیاری از اوقات افراد ابتدا برای شرکت در این فضاها استرس داشته اما با مشاهده نتیجه مثبت این اضطراب را فراموش کردهاند.
مدیریت زمان و وظایف
یک برنامهنویس عالی دارای اخلاق کاری است. این اخلاق کاری خود را در قابل اعتماد بودن و دقت به زمانبندی نشان میدهد. یک مهارت مهم این بوده که توانایی تخمین مقدار زمان موردنیاز برای انجام یک کار را داشته باشید؛ همچنین بتوانید بهخوبی ارتباط برقرار کنید.
هیچکس به برنامهنویسی که نمیتواند کار را بهموقع تحویل داده و در جلسات دیر حاضر میشود اعتماد نمیکند؛ بنابراین چه بهصورت فریلنسر کار میکنید، چه بهصورت تیمی، در نظر داشته باشید که باید بتوانید مدیریت زمان و وظایفی که به دوش دارید را بهخوبی انجام دهید.
داشتن Big Picture
نهتنها در برنامهنویسی بلکه در همه مشاغل باید بتوانید یک تصویر بزرگی از کل پروژه داشته باشید. این کار به شما کمک میکند تا تمام ویژگیهای مهم را در نظر گرفته و روی آنهایی که ارزش بالایی دارند بیشتر تمرکز کنید. اگر نتوانید به کل جنبههای پروژه اشراف داشته باشید درنهایت کاری را تحویل خواهید داد که ارزش بالایی نداشته و کارفرما از نتیجه رضایت نخواهد داشت.
سخن آخر
هر برنامهنویسی دوست دارد تا به یک نسخه بهتری از خود تبدیل شود. بااینحال همه در این مسیر موفق نمیشوند زیرا جدا از استعدادی که برای برنامهنویسی و حل مسئله باید در شما وجود داشته باشد، باید بتوانید هرروز برای یادگرفتن مفاهیم جدید تلاش کنید. انگیزه و پشتکار مداوم برای یادگیری کلیدی بوده که شما را به یک برنامهنویس بهتر تبدیل میکند.اطلاعاتی درباره خرید هاست ووردپرس بدانید.