MimJimSad
MimJimSad
خواندن ۵ دقیقه·۸ ماه پیش

۱۲ قانون برای یادگیری برنامه‌نویسی

5- بهتر است ندانستن را قبول کنیم.

نمیدونم که از وجود سندرمی به اسم سندرم تقلب(دغدغه انگیز) خبر دارین یا نه! اما جالبه بدونین که مهندسی نرم‌افزار یکی از حرفه‌هایی محسوب میشه که بیشترین تعداد افراد مبتلا به سندرم تقلب رو داره!

سندرم تقلب چیه ؟ ببینیم:

سندرم تقلب(دغدغه‌انگیز) پدیده‌ای روان‌شناختی است که مردم را به عنوان تقلب‌گران می‌بیند و به طور قابل توجهی توانایی‌ها و مهارت‌های خود را کمتر از واقعیت ارزیابی می‌کند.

این عادت خود انتقادی معمولا بین برنامه نویس ها خیلی رایجه(بقیه مشاغل رو نمی دونم گارد نگیرید!) اونا همیشه احساس می کنند که دیگران بهتر از اونا هستن. نکته امیدوار کننده ش کجاست؟ اگه شما هم تا به حال این احساس رو داشتین، تنها نیستین، مطالعات نشون میده که ۷۰ درصد از مردم از سندرم تقلب رنج می‌برند.


اگر توی تالار های گفتمان یا کانال های تخصصی یه نگاهی بندازین کاملا با سوالاتی که نشون دهنده این سندروم هست آشنا میشین، مثلا نویسنده ما یک مثال آورده:

اخیراً یک پست را در سایت پرسش و پاسخ کوآرا دیدم که شخصی پرسیده بود: "آیا اگر من در گوگل (یا یک شرکت فناوری بزرگ دیگر) متوجه شوم که از استک‌اوَرفلو به عنوان منبع استفاده می‌کنم، اخراج می‌شوم؟"

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

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

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

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

اما دقت کنیم که : هیچ کس نمی‌تونه همه اطلاعات مربوطه رو توی ذهن خودش نگه داره. به عنوان مثال، این نام یک متد iOS است:

- (id)initWithBitmapDataPlanes:(​unsigned​ ​char​ **)planes pixelsWide:(​NSInteger​)width pixelsHigh:(​NSInteger​)height bitsPerSample:(​NSInteger​)bps samplesPerPixel:(​NSInteger​)spp hasAlpha:(BOOL)alpha isPlanar:(BOOL)isPlanar colorSpaceName:(​NSString​ *)colorSpaceName bitmapFormat:(​NSBitmapFormat​)bitmapFormat bytesPerRow:(​NSInteger​)rowBytes bitsPerPixel:(​NSInteger​)pixelBits;

چهارصد تا کاراکتر داره!

در برنامه‌نویسی iOS، بیش از ۸۰۰ کلاس و ۹۰۰۰ متد وجود داره و رشد این تعداد هنوز ادامه داره. توی قسمت توسعه وب، هر هفته یک فریمورک جدید وجود داره. هیچ کس انتظار نداره که ما بتونیم کد رو به خاطر بسپاریم. دقیقاً به همین دلیله که ما برنامه‌نویس هستیم :) ما می‌تونیم کامپیوتر رو وادار کنیم که کارهای خسته‌کننده رو برای ما انجام بده.مثلا، برای نوشتن کد ضبط صدا فقط یه جستجوی کوچیک لازمه، پس چرا اونو حفظ کنیم؟

بچه هایی که منو میشناسن میدونن که همیشه اینو گفتم و بازم میگم که :

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

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

پس : از جستجو، از پرسش در استک‌اوَرفلو یا پیدا کردن منابع برای کمک به حل مشکلاتتون نترسید. بهترین برنامه‌نویسان این کار رو می‌کنن.

حالا با این تفاسیر روی چه مهارت هایی باید تمرین کنیم؟

مثلا : مهارتی که باید روی اون تمرین کنین، اینه که سوال‌های خوب بپرسین و جواب رو درک کنین. هیچ فایده‌ای نداره که کد رو از جوابی که توی استک‌اوَرفلو گرفتین کپی کنین در صورتی که اصلاً نمیدونین چجوری کار می‌کنه. دلیلشم اینه که استک‌اوَرفلو بر اساس یک سیستم اعتبار کار می‌کنه، برای اونها در اولویته که اون پاسخ خودش به اندازه‌ای واضح باشه تا بشه به عنوان پاسخ درست معرفی بشه و اصطلاحا upvote بگیره.

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

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

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

پس در نتیجه :

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

ادامه دارد....

برنامه نویس باشید و ازش لذت ببرید :)

نویسنده : Dr. Angela Yu

برداشت آزاد و ترجمه : محمد جواد صبرجو

مهندسی نرم‌افزارسندرم تقلببرنامه‌نویسییادگیری برنامه نویسیمحمد جواد صبرجو
گوينده و مجرى، مدرس و علاقمند به برنامه نويسى
شاید از این پست‌ها خوشتان بیاید