نقشه راهی برای مبتدیانی که از گزینههای زیاد احساس سردرگمی میکنند
ما در دنیایی زندگی میکنیم که منابع برنامهنویسی نامحدود هستند - از ویدیوهای یوتیوب و دورههای Udemy گرفته تا کتابها، مستندات و حتی ابزارهای هوش مصنوعی مانند ChatGPT.
اما این فراوانی اغلب منجر به سردرگمی میشود. بسیاری از ما به مصرفکنندگان منفعل محتوا تبدیل میشویم، بدون اینکه بفهمیم کجا هستیم و به کجا میرویم. من هم همین اشتباه را کردم. فکر میکردم تماشای آموزشهای بیشتر باعث میشود بهتر و سریعتر شوم. اما حقیقت این است: تبدیل شدن به یک برنامهنویس به تماشای آموزشها مربوط نمیشود - بلکه به درک و ساختن آن مربوط میشود.
در هر شغلی، صبر، تلاش و پشتکار ضروری است - و فناوری اطلاعات نیز از این قاعده مستثنی نیست. یادگیری کدنویسی و رسیدن به اولین شغل ممکن است بسته به عوامل مختلفی از 6 ماه تا 3 سال طول بکشد:
1.موقعیت مکانی شما
2.روش یادگیری شما
3.فناوریهایی که انتخاب میکنید
4.مربی که دنبال میکنید
...و موارد دیگر
شاید شما با زبانهای سطح بالا مانند پایتون یا جاوا اسکریپت شروع کردهاید. این اشتباه نیست - اما ممکن است شما را از ساختارهای عمیقتر برنامهنویسی دور کند.
بدون درک عمیق از ساختارهای داده، الگوریتمها و مدیریت حافظه، کدنویسی سطحی میشود. در نهایت خسته میشوید یا گیر میکنید.
قبل از اینکه یک زبان یا مسیر یادگیری را انتخاب کنید، از خود بپرسید:
آیا میخواهید یک کارمند تمام وقت باشید یا یک فریلنسر؟
آیا میخواهید فقط کد بنویسید یا به عنوان یک معمار نرمافزار، سیستمهای کامل طراحی کنید؟
آیا از کار تیمی لذت میبرید یا ترجیح میدهید به تنهایی کار کنید؟
این سؤالات به شما کمک میکنند تا مسیر خود را شکل دهید. به عنوان مثال، اگر هدف شما فریلنسری است، شاید جاوا اسکریپت و وردپرس کاربردیتر از الگوریتمها باشند. اما اگر میخواهید مهندس نرمافزار شوید، باید اصول و معماری را درک کنید.
باید بدانید که به ماشینی که هیچ درکی ندارد، دستورالعمل میدهید - باید آن را گام به گام راهنمایی کنید.
هر دو نقاط قوت خود را دارند، اما اگر میخواهید حافظه، ساختارهای داده و عملیات سطح پایین را درک کنید، سی پلاس پلاس این عمق را به شما میدهد.
بیایید به یک مقایسه ساده نگاه کنیم:
🔹 مثال سی پلاس پلاس:
int numbers[5] = {1, 2, 3, 4, 5}; cout << numbers[2]; // Output: 3
در اینجا، شما دقیقاً میدانید چه اتفاقی میافتد: یک بلوک از حافظه برای ۵ عدد صحیح اختصاص داده شده است. شما نوع داده و ساختار حافظه را کنترل میکنید.
🔹 مثال پایتون:
numbers = [1, 2, 3, 4, 5] print(numbers[2]) # Output: 3
سادهتر است، اما جزئیات حافظه و نوع داده کلیدی را حذف میکند. برای نتایج سریع عالی است، اما برای درک عمیق مناسب نیست.
اگر این مثال برای شما معنی ندارد، نگران نباشید - فقط به کلمه کلیدی int توجه کنید.
در زبانهای با نوع پویا، شما به صراحت انواع داده را تعریف نمیکنید. این راحت است، اما درک واقعی نحوه مدیریت دادهها در حافظه را دشوارتر میکند - که میتواند باعث مشکلات طولانی مدت شود.
اگر میخواهید درست شروع کنید و اصول اولیه قوی بسازید، پیشنهاد میکنم:
کتاب «چگونه با ++C برنامهنویسی کنیم» نوشتهی دیتل - برای یادگیری ++C و ساختارهای داده از ابتدا عالی است.
کتاب «کد تمیز» نوشتهی رابرت سی. مارتین - به شما کمک میکند پس از یادگیری اصول اولیه، کد تمیز و قابل نگهداری بنویسید.
این کتابها برای ساختن طرز فکر و تفکر مانند یک برنامهنویس عالی هستند. اما به یاد داشته باشید: آنها فقط ۲۰٪ از مسیر هستند. ۸۰٪ دیگر تمرین و پشتکار خودتان است.
🔸 مرحله ۱: مفاهیم اولیه کامپیوتر
IDE چیست؟ زبان برنامهنویسی چیست؟ کد چگونه اجرا میشود؟
🔸 مرحله ۲: یادگیری C++ (یا یک زبان سطح متوسط مشابه)
با کتاب Deitel شروع کنید
آرایهها، حلقهها و اشارهگرها را تمرین کنید
🔸 مرحله ۳: به ساختار دادهها و الگوریتمها بپردازید
لیستهای پیوندی، پشتهها، صفها و درختها را تمرین کنید
پیچیدگی زمان و مکان را بیاموزید
🔸 مرحله ۴: اصول کد تمیز و SOLID را بیاموزید
نحوه نوشتن کد قابل نگهداری و خوانا
درک معماری تمیز و نظم کدنویسی
🔸 مرحله ۵: ساخت پروژههای واقعی و همکاری
ایجاد یک پروژه ساده مانند یک برنامه To-Do یا یک سیستم مدیریت دانشآموز
استفاده از Git و GitHub برای کنترل نسخه
در برنامهنویسی، سرعت مهم نیست - درک مهم است.
شاید به سرعت به هدفتان برسید، یا شاید (مثل من) عجله نکنید، اشتباه کنید و عمیقاً رشد کنید. در هر صورت، مهم این است که مقصدتان را بشناسید.
اگر الان احساس گم شدن میکنید، این مقاله نقشه راه شماست.
مسیر درست را انتخاب کنید، منابع مناسب را انتخاب کنید، عمیقاً پیش بروید - و هرگز تمرین را متوقف نکنید.