چگونه یک برنامه نویس خوب باشیم

۴۲۱ بازدید
آخرین به‌روزرسانی: ۳ اسفند ۱۴۰۰
زمان مطالعه: ۸ دقیقه
چگونه یک برنامه نویس خوب باشیم

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

997696

" از آنجا که برخلاف مراکز آکادمیک، شکست و تقلب در دنیای برنامه نویسی خوب تلقی می شود. بنابراین هرگز نمی توانید دنیای برنامه نویسی را به طور کامل درک کنید، بنابراین به جای تمرکز بر روی ریزه کاری ها، بر روی مفاهیم کلی متمرکز می شوید."

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

traditional school

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

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

این سیستم تا حدودی جواب می دهد. اکثر مردم توانایی خواندن، نوشتن و عملیات ریاضی ساده مانند جبر را می آموزند. اما یک مشکل بزرگ وجود دارد. آنچه را انتظار دارید در مراکز آکادمیک بیاموزید با آنچه توسعه دهندگان، در دنیای واقعی به آن نیاز دارند، مقایسه کنید! متوجه می شوید که این دو روش کاملاً مخالف یکدیگرند. حال به بررسی دلایل بعضی از این تفاوت ها می پردازیم.

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

در واقع، شکست یک فرصت است.

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

مواجهه با خطا در برنامه نویسی

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

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

وجود خطا در کد شما بدین معنا نیست که شما برنامه نویس بدی هستید.

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

هر شکست، فرصتی برای یادگیری است.

اگر فکر می کنید کد شما باید کار کند، و اینطور نیست، بدین معناست که یک اختلاف کوچک (احتمالا بسیار کوچک) بین آنچه فکر می کنید کد شما انجام می دهد، و آنچه باید انجام شود، وجود دارد.

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

بسیاری از افراد خوب موفقیت را می بینند. برای من موفقیت با تکرار خطا و درون بینی آن بدست می آید.
در حقیقت موفقیت حاصل یک درصد کار است که خود از 99 در صد خطا حاصل شده است.
( سوشیرو هوندا )

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

اساساً مشکلات کدنویسی با سایر مشکلات متفاوت اند

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

این بدین معناست که شما همانطور که مارک زاکربرگ گفته است، آزاد هستید. "سریع حرکت کنید و همه چیز را بشکنید".

خطاهای برنامه نویسی

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

در مراکز سنتی یاد می گیرید که تقلب کردن بد است.

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

در عوض، آنها با بهره گیری از منابعی که شامل پاسخ سوالاتشان است، مطالب را یاد می گیرند. آنها به کدی که قبلاً نوشته شده است نگاه می کنند. کدهای دیگران را بررسی می کنند. در موتور جستجوی گوگل، به جست و جو می پردازند، مطالب وبلاگ ها را مطالعه می کنند و آنچه را آموخته اند، ثبت می کنند. بنابراین برنامه نویسان چیزی را به خاطر نمی سپارند، تنها زمانی که نیاز به کمک دارند، تقلب می کنند.

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

محیط برنامه نویسی

دلیلی برای انتشار گسترده کتاب جعلی اُوریلی (O’Reilly)، تحت عنوان "راهنمای ضروری برای کپی پیست کردن از سایت Stack Overflow"، وجود دارد. آنچه این کتاب را مورد توجه کاربران قرار داده است، حقایق زیادی است که در عنوان آن نهفته است. در برنامه نویسی، نیازی به اینکه همه مطالب را پیش از شروع کار یا مواجهه با خطا بدانید، نخواهید داشت. تنها چیزی که باید یاد بگیرید، توانایی کشف راه حل است.

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

ما آموخته ایم که دانستن اصول، مهم است.

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

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

تکنولوژی های برنامه نویسی جدید همواره در حال ظهور هستند. کامپیوتر و فناوری با سرعت بی نظیری در حال تغییر است. یکی از فارغ التحصیلان برنامهفایرهاوس، در یکی از جلسات اخیر آنها، واقعیت های زیر را بیان کرده است:

  • چرخ در حدود 3000 سال قبل از میلاد اختراع شد.
  • انقلاب صنعتی در بین سال های 1760 تا 1840 (حدوداً 5000 هزار سال بعد از آن) رخ داد.
  • برادران رایت اولین پرواز خود را در سال 1903 انجام دادند. (60 سال بعد)
  • شوروی در سال 1957(50 سال بعد)، ماهواره ای را به فضا فرستاد.
  • نیل آرمسترانگ در سال 1969 (12 سال بعد) بر روی ماه فرود آمد.

و برای بازگرداندن آپولو به زمین، کامپیوتر هدایت آپولو، توانست 41.6 دستورالعمل را در ثانیه پردازش کند. یک آیفون 6، حدود 3.36 میلیارد دستورالعمل را در ثانیه پردازش می کند. این بدان معناست که فناوری که در جیب شماست، توانایی محاسباتی هدایت 120 میلیون موشک آپولو به ماه، در آن زمان، یعنی در سال 1969 را داراست.

فناوری به سرعت در حال پیشرفت است؛ از نظر فیزیکی، امکان یادگیری همه چیز در این حوزه غیرممکن است.

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

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

در حقیقت، آموختن روش یادگیری کدنویسی، بسیار مهم تر از خود کدهایی است که یاد می گیرید. به همین دلیل است که بسیاری از مهندسان شغلی را می گیرند که از آنها می خواهد تکنولوژی هایی را که تاکنون استفاده نکرده اند، به کار برند. به همین دلیل است که مطالبات درخواستی از یک توسعه دهنده، با آنچه اکثر مردم فکر می کنند متفاوت است.

زمانی که شما توانایی کار با ناشناخته ها را دارید، بر روی هنر برنامه نویسی مسلط هستید.

این پدیده بسیار شایع است که چیزهایی که فکر می کنیم "هرگز اتفاق نمی افتند"، گاهی اوقات اتفاق می افتند. هیچ کس با شروع ساخت یک میز، انتظار ندارد که در پایان به یک چوب بیس بال برسد. اما این اتفاقات در دنیای نرم افزار همیشه اتفاق می افتد. به عنوان مثال، سایت فلیکر(Flickr)، به عنوان یک بازی کار خود را آغاز کرد و در نهایت به یک سایت گسترده در زمینهاشتراک عکس تبدیل شد.

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

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

 

 

منبع

بر اساس رای ۲۶ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *