این روزها افراد زیادی به دنبال یادگیری کدنویسی هستند اما هیچ ایدهای در مورد هدف خود ندارند. قطعا اگر برنامهنویسها از هدف خود آگاه باشند به خوبی میتوانند از این راه به درآمد برسند، اما تعداد زیادی از افراد بدون داشتن هیچ ذهنیتی این کار را شروع میکنند.
در طی چند سال گذشته یک شعار گمراهکننده به شدت رواج پیدا کرده است: هر شخصی میتواند کدنویسی را یاد بگیرد بنابراین همه باید یک زبان برنامهنویسی محبوب را یاد بگیرند. تازهواردها فکر میکنند با گذراندن چند ماه وقت در Codecademy و FreeCodeCamp میتوانند تبدیل به یک کدنویس ماهر شوند.
اما این حقیقت ندارد. در واقع بسیاری از افرادی که به دنبال برنامهنویسی میروند از انتخاب آن پشیمان میشوند، دلیل اصلی این پشیمانی این است که برنامهنویسی طبق انتظار و ذهنیت آنها نیست و خیلی سریع گیج میشوند. برای اجتناب از قرار گرفتن در این موقعیتها در ابتدا باید چند سؤال را از خود بپرسید و با خود صادق باشید.
هستهی اصلی برنامهنویسی فرآیند حل مسأله است. این فرآیند ابعاد زیادی دارد اما عامل اصلی موفقیت هر برنامهنویس، انگیزه و محرک ذاتی و درونی او برای خلق مسئله و برطرف کردن خطا است.
میگویند یک برنامهنویس معمولا ۱۰ درصد از زمان خود را صرف نوشتن باگ و ۹۰ درصد را صرف اشکالزدایی و برطرف کردن باگها میکند و هر شخصی که کدنویسی را به شکل جدی تجربه کرده باشد میتواند با این ذهنیت ارتباط برقرار کند. پس برنامهنویسی در واقع هنر اشکالزدایی است.
کدنویسی
هر کسی میتواند دستورالعملهای یک زبان برنامهنویسی را یاد بگیرد و با جزئیات دقیق محیط توسعهی یکپارچه (IDE) آشنا شود. هر شخصی میتواند به ایدهی یک اپلیکیشن جدید فکر کند؛ اما در مواجهه با خطا چه واکنشی نشان میدهد؟ در این مرحله به یک شخصیت خاص و ویژه نیاز است.
برنامهنویس موفق کسی است که بتواند در مواجهه با یک خطای عجیب کامپایلر، یک کتابخانهی کد پر از اشکال، یا یک ویژگی زبانی گیجکننده به دنبال پاسخ باشد. برنامهنویس موفق کسی است که ساعتها وقت خود را صرف پیدا کردن یک راهحل کند و تا زمانی که راهحل موردنظر را پیدا نکرده ناامید نشود.
میتوان از یک زاویهی دیگر هم به برنامهنویسی نگاه کرد: انگیزههای بیرونی در مقابل انگیزههای درونی. آیا به خاطر پاداش به دنبال برنامهنویسی هستید؟ یا به خاطر علاقه این کار را انجام میدهید؟ اگر علاقهای به برنامهنویسی نداشته باشید مسیر درستی را انتخاب نکردهاید.
آیا به دنبال خلق کردن هستید؟
اغلب تازهکارهای برنامهنویسی همان سال اول این کار را رها میکنند. با اینکه دلایل زیادی برای تسلیم شدن وجود دارد اما شاید مهمترین دلیل گیج شدن در منحنی یادگیری و تضعیف روحیه باشد.
برنامهنویسی یک رشتهی گسترده با صدها زبان و حوزهی قابل بررسی است. در هر زمینهای با هزاران کتابخانه و فریمورک مختلف روبهرو میشوید و به الگوهای سطح بالایی میرسید که در موقعیتهای مختلف قابل پیادهسازی هستند.
به طور خلاصه، هرگز نمیتوانید برنامهنویسی را به صورت کامل یاد بگیرید بنابراین باید هدف دقیق خود را مشخص کنید. شاید یک برنامهنویسی گرافیک سهبعدی در ساخت وبسایت هیچ تجربهای نداشته باشد یا بهترین کدنویس هوش مصنوعی هیچ ذهنیتی در مورد ساخت اپلیکیشنهای موبایل نداشته باشد.
خلق کردن
قبل از شروع به یادگیری کدنویسی، در مورد هدف خود به صورت دقیق فکر کنید. اگر به دنبال ساخت وبسایت هستید، انرژی خود را متمرکز بر یادگیری جاوا اسکریپت کنید. اگر میخواهید اپلیکیشنهای OS X بسازید، بهتر است سوئیفت را یاد بگیرید. اگر میخواهید بازیسازی کنید #C و یونیتی را بیاموزید.
شاید یک مجموعه مفاهیم که برای یک شخص مهم تلقی میشوند برای شخص دیگر بیاهمیت باشند. برای مثال معماری MVC برای برنامهنویسی وب ضروری است درحالیکه الگوی مؤلفه، موجودیت برای توسعهدهندگان بازی مفید است.
نکتهی اصلی این است که هدف نهایی شما (وبسایت، بازی یا موارد دیگر)، مسیر یادگیری را مشخص میکند بنابراین لازم است از ابتدا با این مسیر آشنا شوید. مطمئنا همیشه میتوانید مسیر خود را تغییر دهید و در زمینههای دیگر به کسب تجربه بپردازید، اما وقتی هدف واحدی داشته باشید برنامهنویسی و کدنویسی آسانتر خواهد شد.
سرگرمی یا شغل؟
آیا میخواهید پروژههای کدنویسی را صرفا برای پر کردن وقت آزاد خود انجام دهید یا قصد دارید برای کار تمام وقت وارد صنعت برنامهنویسی شوید. پاسخ به این سؤال تأثیر زیادی بر موضوع مطالعه، روش مطالعه یا مسیر کلی پیشرفت شما خواهد داشت.
شاید هدف شما ساخت یک بازی ویدئویی باشد. شغل خود به عنوان یک حسابدار را دوست دارید و قصد ترک آن را ندارید و میخواهید در روزهای آخر هفته روی یک پروژهی برنامهنویسی هم کار کنید. در این صورت میتوانید هر زبان یا موتور مورد علاقهی خود را یاد بگیرد. تا وقتی که هدف شما صرفا سرگرمی باشد چه تفاوتی خواهد داشت؟
سرگرمی یا شغل
از سوی دیگر اگر میخواهید به عنوان یک شغل به توسعهی بازیهای ویدئویی بپردازید باید به طور جدی به یادگیری یک زبان یا موتور مثل C++، Unreal Engine 4 یا جاوا و LibGDX بپردازید. اگر هم به دنبال توسعهی بازی با استفاده از Ruby و Gosu هستید نمیتوانید به صورت جدی بازیسازی را دنبال کنید.
مدرک دانشگاهی میتواند به کمک شما بیاید اما وجود آن ضروری نیست. اینترنت به عنوان منبع خودآموزهای عالی، کتابهای رایگان برنامهنویسی و دورههای رایگان است و دانشگاه به عنوان محلی برای برقراری ارتباط با افراد متخصص و ورود به بازار کار میتواند مفید باشد. پس صرفنظر از اینکه برنامهنویسی را به عنوان یک شغل یا سرگرمی انتخاب میکنید، باید زمان زیادی را صرف تمرین کنید.
تا چه اندازه به دنبال آن هستید؟
برنامهنویسی کار دشواری است. صرفا یادگیری کدنویسی (به این دلیل که از هر فرآیند دیگری دشوارتر است) یا اشکالزدایی (به این دلیل که اغلب خطاها تقریبا مستقیم هستند) کار سختی نیست، بلکه کل فرآیند برنامهنویسی نیاز به اراده و استقامت بالایی دارد.
هر پروژهی کدنویسی ترکیبی از برنامهنویسی و اشکالزدایی است؛ دو فرآیندی که از نظر ذهنی به انرژی زیادی نیاز دارند. هر پروژه، ماراتونی از حل مسئله است و با پیچیدهتر شدن مسائل خم شدن زیر بار آنها سادهتر خواهد شد. حتی اگر بگویند یادگیری برنامهنویسی زیاد هم سخت نیست، برای رسیدن به قله به اطلاعات زیادی نیاز خواهید داشت. برنامهنویسی مثل یک تردمیل بیپایان از مفاهیم، الگوها، زبانها و ابزار جدید است. بسیار سرگرمکننده و جذاب و درعینحال بسیار هم خستهکننده است.
هدف گذاری
اما سختترین بخش کار، این است که همیشه احساس میکنید بهاندازهی کافی خوب عمل نمیکنید. حتی پس از هزاران ساعت تجربه و تمرین هنوز هم ممکن است احساس کنید چیزی نمیدانید. مربیان و همکارها میتوانند در شرایط سخت، به شما کمک کنند اما نیاز به ارادهی آهنین دارید.
به همین دلیل پشتکار، ویژگی اصلی بهترین برنامهنویسها است. صرفنظر از استرس بالای برنامهنویسی باید سعی کنید در مسیر خود مصمم باشید. برای یادگیری هر زبان جدید یا روبهرو شدن با خطاها یا اشکالهای متعدد و هر پروژهای که سختیهای منحصربفردی داشته باشد، باید عزم خود را جزم کنید.
بدون پشتکار، کارتان تمام است و متأسفانه اغلب اوقات این اتفاق برای برنامهنویسها رخ میدهد. به عنوان یک خبر خوب، این ناامیدی همیشگی نیست. حتی اگر مشکلاتی سر راهتان قرار گرفت، بدانید که همیشه راهی برای غلبه بر آنها وجود دارد.
بسته به پاسخهایی که به این سؤالها دادید میتوانید تشخیص دهید برنامهنویسی برایتان مناسب است یا دقیقا خلاف انتظارات و ذهنیت شماست. معمولا اغلب افراد برای برنامهنویسی ساخته نشدهاند. اگر به این نتیجه رسیدید که برای این کار ساخته نشدید میتوانید آن دسته از مشاغل فناوری را انتخاب کنید که نیازی به کد نویسی ندارند.