آیا قرار نیست من یک برنامه‌نویس باشم؟

شکل ۱. مهارت برنامه‌نویسی
شکل ۱. مهارت برنامه‌نویسی
منتشر شده در levelup.gitconnected به تاریخ ۳ جولای ۲۰۲۳
لینک منبع: Am I Not Meant To Be A Programmer?

«...پس آیا قرار نیست من یک برنامه‌نویس باشم؟» جان به تازگی در سومین تکلیف کدنویسی خود در این هفته شکست خورده بود. افسرده در گوشه کم نور اتاقش نشست و درخشش تمسخرآمیز پیام‌های خطای کامپایلر تنها منبع روشنایی بود.

آن‌ها می‌خوانند: «خطای نحو: توکن غیرمنتظره.»

اما بیایید در همان ابتدا همه چیز را درست انجام ندهیم. در عوض، بیایید یک قدم به عقب برگردیم و به سوال مورد نظر برگردیم. آیا برخی افراد به‌طور طبیعی مستعد برنامه‌نویسی هستند یا این مهارتی است که هر کسی می‌تواند یاد بگیرد؟

ما عمیقا به این سوال وجودی می‌پردازیم که بسیاری از روح‌های شجاع را به این فکر واداشته است که آیا هرگز می‌خواهند بفهمند که تابع لامبدا چیست یا چرا برنامه‌نویسان چنین رابطه عاشقانه‌ای با ماری به نام پایتون دارند.

برای شروع این تلاش، بیایید به فیل در اتاق بپردازیم: مبارزه کردن به این معنی نیست که شما برای آن مناسب نیستید.

شما، طرز فکر برنامه‌نویس، و اسطوره «طبیعی»

بسیار خوب، پس شما با سهم نسبتا ناامیدی خود مواجه شده‌اید. وحشت وحشتناکی را تجربه کرده‌اید که در ساعت ۲ بامداد به صفحه نمایش خود خیره می‌شوید و نمی‌دانید که چرا کد شما از کار کردن خودداری می‌کند. شما لحظاتی را داشته‌اید که سلامت عقل خود، انتخاب‌های خود و اینکه آیا آن راه‌حل‌های سایت stack overflow محبوب فقط یک شوخی مفصل هستند، زیر سوال رفته‌اند.

بیایید یک چیز را واضح بگوییم: این برای همه ما اتفاق می افتد…

اما در اینجا مفهومی برای سلاح هسته‌ای وجود دارد: افسانه «طبیعی». به نظر می‌رسد، آن ها زیرگونه منحصر به فرد هومو ساپینس نیستند. در واقع، مفهوم برنامه‌نویس «متولد طبیعی» به اندازه تک‌شاخ‌هایی که در مزارع آتلانتیس می‌چرخند واقعی است.

بیایید این افسانه را با رجوع به منبع اصلی چنین تصورات غلطی از بین ببریم. جامعه، فرهنگ پاپ، و بله، خود صنعت اغلب این ایده را تداوم می‌بخشد که برنامه‌نویسی یک هنر عرفانی است که فقط توسط افراد معدودی برگزیده می‌شود. اما به یاد داشته باشید، همه، حتی افراد به اصطلاح طبیعی، زمانی مبتدی بودند.

پس چگونه این «ذهنیت برنامه‌نویس» را پرورش می‌دهید؟ چگونه یاد می‌گیرید که از سفر لذت ببرید، از مبارزه لذت ببرید و وقتی مشکلی را حل می‌کنید که ساعت‌ها (یا روزها) شما را آزار می‌دهد، آن عجله شیرین دوپامین را به دست آورید؟

منحنی یادگیری -ترن هوایی یا شیب ملایم؟

برای چند بمب حقیقت آماده‌اید؟ منحنی یادگیری در برنامه‌نویسی یک شیب ملایم نیست. این بیش‌ٰتر شبیه یک ترن هوایی است که از یک پرش بانجی یادداشت‌برداری می‌کند. بله، اوج‌های هیجان‌انگیز خود را خواهید داشت، اما هم‌چنین مقداری قطره‌های آزاردهنده روده را خواهید داشت.

یک روز، شما پادشاه جهان هستید زیرا یک برنامه«Hello, World!» ساخته‌اید. در مرحله بعد، سر خود را روی میز می‌کوبید، زیرا به یاد نمی‌آورید که چگونه یک آرایه را مقداردهی اولیه کنید.

با این حال، اوج و فرودهایی که تجربه می‌کنید نشانگر مسیر مقصد شما نیستند، بلکه بازتابی از فرآیند یادگیری هستند. برنامه‌نویسی فقط یادگیری نحو یا تسلط بر یک چارچوب نیست. این در مورد یادگیری حل مشکلات است و مشکلات، دوستان من، ذاتا چالش‌برانگیز هستند.

اکنون، سوال میلیون دلاری: وقتی سواری بیش‌از‌حد شدید می‌شود، چگونه به راه خود ادامه می‌دهید؟

نکته کلیدی، سخاوت، پشت‌کار، و بالاتر از همه، طرز فکر رشد است. با چشم‌انداز مناسب، ترن هوایی به سفری جذاب تبدیل می‌شود. و همان‌طور که هر برنامه‌نویس باتجربه‌ای به شما خواهد گفت، هیجان‌انگیزترین لحظه زمانی نیست که سواری نرم باشد، بلکه زمانی است که وحشتناک‌ترین قطره‌ها را فتح می‌کنید.

وقفه و استراحت: در سنگرهای رفع اشکال

قبل از اینکه بخواهیم بیش‌تر به حل مسئله بپردازیم، بیایید لحظه‌ای به مراسمی که همه برنامه‌نویسان آن را پشت سر می‌گذارند، احترام بگذاریم -مراسمی تاریک، ترسناک و گهگاهی سرگرم‌کننده به نام اشکال‌زدایی.

در اینجا یک راز صنعت برای شما وجود دارد: برنامه‌نویسان زمان بیش‌تری را صرف رفع اشکال می‌کنند تا نوشتن کد جدید. شگفت‌آور، درست است؟ اما اشکال‌زدایی مجازاتی برای گناهان کدگذاری شما نیست. بلکه بخشی جدایی‌ناپذیر از فرآیند است.

آن را از قدیس حامی برنامه‌نویسی ما، گریس هاپر، بگیرید، که به معنای واقعی کلمه یک اشکال (دقیقا یک پروانه) را پیدا کرد که باعث ایجاد مشکل در رایانه می‌شود. از این رو، اصطلاح «اشکال زدایی» را داریم.

اشکال‌زدایی جایی است که می‌بینید ثمره کارتان شعله‌ور می‌شود، فقط مثل ققنوس، قوی‌تر و باشکوه‌تر از قبل بلند می‌شود. در سنگر اشکال‌زدایی است که با ارزش‌ترین درس را می‌آموزید –شکست پایان کار نیست بلکه آغاز درک است.

اگر در هجوم رفع اشکال جهنم ناامید هستید، دل ببندید! هنر اشکال‌زدایی صبر، پشت‌کار و مهم‌تر از همه فروتنی را می‌آموزد. از این گذشته، هیچ چیز بیش‌تر از یک نقطه ویرگول از دست رفته یا یک متغیر با حروف بزرگ اشتباه برنامه‌نویس را تحقیر نمی‌کند.

قدرت جامعه

قبل از اینکه اسرار پذیرش حل مسئله را فاش کنیم، بیایید لحظه‌ای مکث کنیم و از نقش جامعه در سفر برنامه‌نویس قدردانی کنیم. عمل کدنویسی اغلب به‌عنوان یک سرمایه‌گذاری انفرادی به تصویر کشیده می‌شود، با یک کدنویس تنها که روی صفحه کلید آن‌ها قوز کرده است، چشمانی که به‌طرز وحشتناکی در نور رایانه می‌درخشند.

اما بیایید واقعی باشیم. برنامه‌نویسی به همان اندازه که در مورد افراد جامعه است. به هر حال، اگر تجسم خرد جمعی و همکاری نباشد، پروژه‌های منبع باز چیست؟

بله، مواقعی وجود خواهد داشت که احساس می‌کنید یک ملوان تنها هستید که در دریاهای طوفانی برنامه‌نویسی حرکت می‌کند. اما به یاد داشته باشید، شما تنها نیستید. در پشت آرامش ظاهری ویرایشگر کد شما، یک جامعه شلوغ از برنامه‌نویسان وجود دارد که آماده کمک و راهنمایی هستند.

پلت‌فرم‌هایی مانند Stack Overflow، GitHub یا Reddit فقط پایگاه‌داده‌ای از قطعه‌های کد و نکات عیب‌یابی نیستند. آن‌ها گواهی بر روحیه همکاری برنامه‌نویسان در سراسر جهان هستند. بنابراین، تماس بگیرید، کمک بخواهید و دانش خود را نیز به اشتراک بگذارید.

با عضویت در جامعه، نه‌تنها تجربه یادگیری خود را غنی می‌کنید، بلکه به سنت رشد مشترک و حمایت متقابل که در قلب اخلاق برنامه‌نویسی قرار دارد، کمک می‌کنید. و اکنون، مسلح به قدرت اجتماع و خرد به دست آمده از اشکال‌زدایی، بیایید دوباره به استقبال لذت‌های حل مسئله برویم.

استقبال از لذت حل مسئله

بنابراین، شما گیر کرده‌اید. کامپایلر سرسخت است و دریای پیام‌های خطای قرمز سریع‌تر از جهان در حال گسترش است. در این مرحله، به نظر می‌رسد که خود جهان در حال شوخی کیهانی است -البته به هزینه شما. اما هی، حدس بزنید چی؟ شما در پرتگاه یک مکاشفه هستید.

هر مشکلی در کدنویسی معمایی است که در انتظار حل شدن است، اژدهایی است که منتظر کشته شدن است. شمشیر تو؟ سخاوت شما سپر شما؟ لذت‌های یادگیری. به جای اینکه برنامه‌نویسی را به‌عنوان یک مهارت در نظر بگیرید، آن را به‌عنوان دنیایی از مشکلات در نظر بگیرید.

برنامه‌نویسی، در ماهیت اصلی خود، حل مسئله است. رمز صرفا یک ابزار است، مانند چکش برای آهنگر یا چاقوی جراحی برای جراح. لذت واقعی در این فرآیند، حل معماها و لحظات «اوریکا!» نهفته است که باعث می‌شود تمام مبارزات قبلی ارزشش را داشته باشند.

این روند در واقع می‌تواند ناامیدکننده باشد. اما به یاد داشته باشید، ناامیدی اغلب مقدمه‌ای برای درک است. در پیگیری کارهای دشوار است که عمیق‌ترین رضایت را پیدا می‌کنیم. همان‌طور که استاد جدی مستر یودا گفت: «بزرگ‌ترین معلم، شکست است.»

بنابراین، اگر مسیر خود را زیر سوال می‌برید، به یاد داشته باشید: هر برنامه‌نویسی، از مبتدیان تا استادان، دقیقا همان سفر را پشت سر گذاشته است. و به من اعتماد کنید، هیچ کس بدون چند زخم نبرد از آن بیرون نیامد.

حکم نهایی -آیا قرار است برنامه‌نویس شوید؟

حالا، بیایید دوباره دوستمان جان را از ابتدای مقاله مرور کنیم، اتاقش با درخشش پیام‌های خطای کامپایلر روشن شده‌است. پرسش بیهوده او را به خاطر دارید؟ «آیا قرار نیست من یک برنامه‌نویس باشم؟»

اگر دنبال کرده باشید، تا به حال متوجه شده‌اید که در برنامه‌نویسی هیچ سرنوشت از پیش تعیین شده، هیچ قرابت جادویی و ذاتی «برای بودن» وجود ندارد. بحث برگزیده بودن نیست؛ این در مورد انتخاب روبرو شدن با چالش‌ها و لذت بردن از فرآیند یادگیری است.

مسیر رسیدن به مهارت برنامه‌نویسی با موانع و ناامیدی‌ها مخدوش شده‌است. اما هم‌چنین مملو از لحظات پیروزی، شادی و رضایت عمیق است. بنابراین، جان، و هر کس دیگری که مسیر خود را زیر سوال می‌برد، این را بدانید:

اگر بخواهید برنامه‌نویس شوید قرار است…

فرقی نمی‌کند که تازه شروع کرده‌اید، در میانه راه تلاش می‌کنید یا در فکر تغییر شغل هستید، به یاد داشته باشید که برنامه‌نویسی یک مهارت است و مانند هر مهارت دیگری، می‌توان آن را با پشتکار و طرز فکر درست آموخت، تقویت کرد و به آن مسلط شد. این یک باشگاه انحصاری نیست. این یک جامعه پذیرایی برای کسانی است که عاشق حل مشکلات و خلق چیزی از هیچ هستند.

برنامه‌نویسی فقط برای افراد معدودی نیست. این برای هر کسی است که شجاعت پذیرش چالش‌ها، سرسختی برای استقامت و جسارت این را دارد که باور کند آن‌ها نیز می‌توانند کدنویسی را بیاموزند.

به‌هر‌حال، در دنیای وسیع و جذاب برنامه‌نویسی، تنها رمز غیرمنتظره باید یک پیام خطا باشد، نه شما.

این متن با استفاده از ربات ‌ترجمه مقالات برنامه‌نویسی ترجمه شده و به صورت محدود مورد بازبینی انسانی قرار گرفته است.در نتیجه می‌تواند دارای برخی اشکالات ترجمه باشد.
مقالات لینک‌شده در این متن می‌توانند به صورت رایگان با استفاده از مقاله‌خوان ترجمیار به فارسی مطالعه شوند.