برنامه‌نویسی در واقع چیست؟ آیا این حرفه مناسب شماست؟

تصویر رسم شده با کد ASCIIاین نوشته با یک نمای کلی به برنامه‌نویسان مشتاق کمک میکند که در رابطه با حرفه خود انتخاب صحیحی انجام دهند.یک نکته مهمدیدگاه های متفاوتی در رابطه با چیستی برنامه‌نویسی و شروع آن وجود دارد. این نوشته تنها شامل عقاید من میشود؛ پس لزوما شامل بهترین تفکرات، دیدگاه ها و حتی صحیح بودن اطلاعات محتوای آن نیست. به هر حال اگر میخواهید این حرفه را انتخاب کنید خوب است که به دنبال دیگر دیدگاه ها نیز بروید و در نهایت به یک قضاوت عادلانه‌ی منطقی برسید.همچنین بسیار مهم است که به هدف اصلی این مقاله پی ببرید؛ این مقاله به شما آموزش برنامه‌نویسی نمیدهد در عوض به شما یاد میدهد که برنامه‌نویسی چیست. این به نظر یک سوال اساسی در رابطه با برنامه‌نویسی است که بسیاری از برنامه‌نویسان به آن توجهی نمیکنند. آنها با فرض این که شما میدانید برنامه‌نویسی چیست، اینکه چرا میخواهید این کار را انجام دهید و آنچه اساسا درگیر آن هستید به شما آموزش میدهند. این مقاله به تمامی سوالات شما در این رابطه پاسخ میدهد، در نتیجه شما میتوانید تصمیم بگیرید که آیا تصمیم دارید چگونگی یادگیری برنامه‌نویسی را شروع کنید یا خیر.پس با داشتن این نکته در ذهنتان، شروع میکنیم.برنامه‌نویسی چیست؟با توجه کلی به ماهیت این سوال، و حقیقت این که برنامه‌نویسی یک موضوع پیچیده هست، احتمالا شما انتظار یک پاسخ خیلی پیچیده و فنی را دارید. اما من به شما چنین پاسخی نمیدهم (از این بابت متاسفم!). در حقیقت، پاسخ به این سوال بسیار ساده است:برنامه‌نویسی یعنی شکستن یک عمل یا کار به مراحل کوچکتر.این در واقع صادقانه ترین و دقیق ترین جواب ممکنی بود که من میتوانستم به شما بدهم. این پاسخ همچنین از لحاظ مختصر بودن دارای ارزش است، و بسیار شبیه به چیزی است که شما در عنوان سرفصل یک کتاب رسمی میخوانید.شاید پیش خودتان فکر کنید که منظور من از شکستن یک عمل یا کار به مراحل کوچکتر چه میتواند باشد. پس من این نکته را با جزئیات بیشتری توضیح میدهم. بگذارید با گفتن یک حقیقت در مورد برنامه‌نویسان که پی بردن به آن بسیار ساده است شروع کنم:برنامه‌نویسان به صورت غیر طبیعی فکر میکنند.این نکته به حقیقت شکستن یک عمل یا کار به مراحل کوچکتر اشاره دارد، اما ذهن شما به این طرز فکر عادت ندارد. یک مثال به شما کمک میکند تا منظور من را درک کنید. از شما میخواهم یک کار را انجام دهید:این کلمات را بر طبق حروف الفبا مرتب کنید: آسمان، سیب، آبمن فرض میکنم که شما تصمیم به مرتب سازی این کلمات بر طبق حروف الفبا گرفتید و در نهایت نتیجه به این صورت شد : آب، آسمان، و سپس سیب. اگر به این صورت انجام نداده اید، خواندن این نوشته به زودی به یکی از بدترین تجربیات زندگی شما تبدیل خواهد شد. 🤯خوب حالا بیاین ببینیم که شما دقیقا چطور این کار را انجام دادید؛ چه مراحلی را طی کردید تا این کلمات بر اساس حروف الفبا مرتب شدند، و به چه دانشی در این زمینه نیاز داشتید تا بتوانید این کار را انجام دهید. واضح ترین چیزی که شما به دانستن آن نیاز داشتید الفبا بود؛ شیوه ی قرار گیری حروف. سپس، اگر شما نیز مانند من باشید، احتمالا این کار ها را انجام داده اید:۱. به دنبال کلماتی گشتید که با حرف " آ " شروع شوند.۲. اگر کلمه ای که با حرف "آ" شروع شود را پیدا کردید، آن را به ابتدای لیست منتقل کردید (در ذهنتان).۳. به دنبال کلمه ی دیگری که با حرف " آ " شروع شود گشتید.۴. اگر کلمه ی دیگری بود که با حرف " آ " شروع میشد، حرف دوم آنرا با حرف دوم کلمه ی اولی که با " آ " شروع میشد مقایسه کردید.۵. اگر حروف دوم این کلمات با یکدیگر متفاوت باشد، این کلمات را بر اساس حروف دومشان به ترتیب حروف الفبا مرتب میکنیم. اگر حروف دوم یکی باشند، به سراغ حروف سوم میرویم، و به همین ترتیب.۶. کل این عملیات را برای حرف " ب " و تمامی دیگر حروف الفبا تا زمانی که همه ی کلمات به جای مناسب خود انتقال یابند، انجام می‌دهیم.روش شما ممکن است با روش من کمی متفاوت باشد، اما احتمالا زیاد فرق نمیکند. چیزی که باید به آن توجه کرد (که من بخصوص به آن توجه کردم، چرا که من باید همه ی این مراحل را مینوشتم)، این است که چه مدت زمان صرف توضیح دادن این روند بدون هیچ گونه فکر آگاهانه‌ای شد. هنگامی که به شما گفته شد باید کلمات را بر اساس حروف الفبا مرتب کنید، قطعا یک طرح با جزئیات مانند مثال بالا از کاری که قرار است انجام شود را رسم نکردید. ذهن شما به این کار نیازی ندارد؛ شما این کار را یکبار هنگامی که بچه بودید یاد گرفتید، و باز هم این کار را انجام دادید. شما یک نوع میانبر ساخته شده از این مراحل متوالی را در ذهن خود دارید.حالا بیاید یک مثال دیگر را بررسی کنیم:تعداد کلمات موجود در جمله مقابل را بشمارید: "برنامه‌نویسی واقعا میتونه جذاب باشه."خوشبختانه شما گفتید که پنج کلمه در جمله بالا هست. ولی چطور به این نتیجه رسیدید؟ به طور طبیعی، ابتدا شما باید میدونستین که منظور از یک کلمه چیه. بیاید اینطور فرض کنیم که یک کلمه یک سری توالی از حروفه که با فاصله از همدیگه جدا شدن. با این قانون، شما در واقع پنج کلمه رو از جمله ی بالا بیرون میکشید. اما در رابطه با این جمله چطور؟"آقای سسیل هتروینگتون-اسمیت میتواند یک صندوقدار عالی باشد،قربان."به اشتباه عمدی من توجه کنید: من بعد از کاما فاصله ای قرار ندادم. همچنین شما ممکنه این احساس بهتون دست بده که اسم سسیل هتروینگتون-اسمیت رو به اشتباه اینطور نوشتم، اما بحث این موضوع هم جداست. با توجه با قانون توالی حروفی که با فاصله از هم دیگه جدا شدن، شما به این نتیجه میرسید که هشت کلمه در جمله جدید وجود داره. با این حال، بنظر من شما هم قبول دارید که در واقع ده کلمه توی جمله بالا هست، پس قانون ما به وضوح درست صدق نمیکنه. شاید اگر ما تو قانون خودمون تجدید نظر کنیم و بگیم که کلمات میتونن با فاصله، کاما یا خط تیره از هم جدا بشن درست تر باشه. با توجه به قانون جدید ما به ده کلمه میرسیم. خوب بیاین یک مثال دیگه رو بررسی کنیم:"بعضی از افراد دوست دارنکه خطوط بسیار کوتاهی رو، بجایتمام طول صفحه بنویسن."هرچند ممکنه خیلی مشخص نباشه، ولی فاصله ای بعد از کلمه های "دارن" و "بجای" وجود نداره. در عوض، من با زدن دکمه اینتر روی کیبورد خودم به یک خط جدید رفتم. پس با توجه با قانون جدیدترمون، چند کلمه تو جمله قبلی پیدا میکنیم؟ من بهتون میگم: سیزده تا. در صورتی که در واقع پانزده کلمه توی جمله بالا هست. این یعنی ما باید دوباره داخل قانون خودمون تجدیدنظر کنیم و بگیم که، اینتر ها به عنوان یک جداکننده-کلمه هستن. سپس به همین ترتیب جلو میریم تا دوباره قانون ما نقض شه و مجبور شیم دوباره داخل اون تجدیدنظر کنیم.ممکنه شما بپرسید چرا داریم این کارو انجام میدیم، در صورتی که همه ی ما میدونیم منظورمون از "شمردن تعداد کلمات" چیه. شما میتونین این کار رو بدون در نظر گرفتن هیچ قانونی به طور کاملا صحیح انجام بدید. من هم میتونم. در واقع همه میتونن! چیزی که این مثال به ما نشون میده این هست که ما همین الانشم داخل ذهن خودمون یک "برنامه" پیچیده رو داریم. در واقع، "برنامه" کلمه شماری که از قبل در ذهن ما ساخته شده به قدری پیچیده هست که شما احتمالا با مشکلات فراوانی واسه بیان کردن تمامی قوانین ریز و درشتی که این برنامه ازش پیروی میکنه، رو به رو میشید. خوب چرا خودمون رو تو زحمت بندازیم؟جواب این سوال به طور انحصاری یک حقیقت مهم رو به شما یاد میده که باید اون رو یاد بگیرید. پاسخ این سوال به کامپیوتر ها مربوط میشه (حتی کامپیوتر خودتون که ممکنه با اون این مقاله رو بخونید):کامپیوتر ها بسیار، بسیار احمق هستند.برای بعضی از افراد ممکنه جمله بالا یه مدل توهین به مقدسات تلقی بشه. و این قابل درک هست، چون کامپیوتر ها خیلی گرون قیمت هستن مخصوصا در کشوری که ما داریم زندگی میکنیم. اگر شما یه فراری بخرید مسلماً دوس ندارین همسایه تون بیاد و بگه که ماشینتون خیلی زشت و کنده. اگر شما یک کاربر مک هستید، ممکنه بخواین کسی که به کامپیوتر شما بگه احمق رو بکشید. 🙂به هر حال، این درسته. کامپیوتر ها به شدت احمق هستن. کامپیوتر شما سر جاش میشینه و هر دستور بی فکری رو که شما بهش بدید انجام میده، برای چند روز، چند هفته، چند ماه، چند سال یا حتی تا ابد. بدون هیچ گونه شکایت یا کم کاری. این رفتار درخور یک شئ که حتی یه مقدار کوچیک باهوش تر از شما باشه، نیست. کامپیوتر ها حتی با خوشحالی هارد دیسک خودشون رو پاک میکنن (این به این معنی هست که انگار شما همه ی خاطرات خودتون رو حذف کنید و یه تیکه از مغز خودتون رو بندازید دور)، پس مسلماً ما با یک شئ باهوش سر و کار نداریم.در واقع، کامپیوتر ها به طرز دردناکی احمق هستند که لازمه حتی کارهای بسیار پیش و پا افتاده و آسون رو با جزئیات دقیقی بهشون گفت. این حقیقت بسیار تلخی هست. در واقع، تنها نکته ی مثبتی که در رابطه با کامپیوتر ها وجود داره اینه که اونها به طور کامل مطیع فرمان شما هستن. مهم نیست که دستورالعمل های شما چقدر دیوانه وار باشه، کامپیوتر شما اون رو به طور کاملا دقیقی انجام میده.تا به اینجا، گمان کنم شما متوجه شده باشید که همه‌ی این مطالب چطور به هم گره خوردند. برنامه‌نویس ها به کامپیوتر ها میگن که چه کاری رو انجام بدن. کامپیوتر ها به این دستورالعمل‌ها به صورت دقیق و کامل از هر جنبه‌ای نیاز دارن تا بتونن کارشون رو انجام بدن. انسان ها معمولا در دادن دستورالعمل های کامل و دقیق خیلی خوب نیستن، دلیلشم اینه که ما انسان ها این مغز باورنکردنی رو داریم که به ما این اجازه رو میده تا دستورهای مبهمی رو بدیم ولی همچنان پاسخ درستی دریافت کنیم. بنابراین، برنامه‌نویسان لازمه که به شیوه ی غیرطبیعی فکر کنند: اونها باید یاد بگیرن تا توضیحات یک عمل یا کار رو بنویسن (به طور مثال "شمردن تعداد کلمات درون یک جمله")، و سپس اون رو مراحل اساسی کوچکتر بشکنن تا یک کامپیوتر بتونه اون رو انجام بده.تا به اینجای کار ممکنه شما کمی ناراحت شده باشید. من گفتم که برنامه‌نویسی، یک جورایی، غیر طبیعی هست. من به شما در رابطه با شیوه ی جالب احمق بودن کامپیوتر ها هشدار دادم، پس شما احتمالا یک ایده ی کوچک از اینکه کامپیوتر شما چه کارهای باور نکردنی رو با یک سری دستورالعمل میتونه انجام بده، بدست آوردید. اما جای نگرانی نیست؛ یک سری دلایل عالی وجود دارن که به شما انگیزه ی برنامه‌نویس شدن رو میده:برنامه‌نویسی میتواند یک منبع درآمد فوق العاده باشد.برنامه‌نویسی واقعا سرگرم کننده هست.برنامه‌نویسی از نظر فکری ذهن شما را بسیار باز میکند.برنامه‌نویسی این حس را به شما میدهد که نسبت به بقیه افراد احساس برتر بودن را کنید.برنامه‌نویسی به شما کنترل کامل به ماشین آسیب پذیر و بیگناهی رو میده که میتونید از اون برای منافع شخصی خودتون استفاده کنید 😏حداقل برخی از این موارد اگر همشون نه، با سلیقه ی شما به عنوان یک انسان سازگار هست. و هیچ ربطی هم به من نداره که شما کدوم جنبه ی برنامه‌نویسی رو جذاب ترین بخش اون میدونید. علاوه بر این، مردم برای سالیان طولانی در حال برنامه‌نویسی هستند، پس خیلی از دستورالعمل کارها ("برنامه ها") به دلیل تشابه، از قبل نوشته شدن. بنابراین شما میتونید از زحمات سخت اونها استفاده کنید تا از شر بسیاری از مشکلات خلاص بشید. که به نظر من دیدگاه خیلی جالبی میتونه باشه، مطمئن هستم.اگر همچنان مطمئن نیستید که برنامه‌نویسی برای شما هست یا نه، احتمالا بخش بعدی این مقاله به شما کمک میکنه تا تصمیم درست رو بگیرید.چه کسی میتواند یک برنامه‌نویس شود؟جواب کلیشه ای در بسیار از مواقع اینگونه هست: "همه!"، اما من اینجوری پاسخ شما رو نمیدم، چون واقعا درست نیست. یک سری ویژگی ها هستن که میتونن نشون بدن آیا شخص میتواند یک برنامه‌‎نویس خوب شود یا نه:منطقیصبورباهوشحداقل به طور متوسط هوشمنداز یک چالش فکری خوشش بیادطرفدار سریال Silicon Valleyزن** در واقع مرد ها و زن ها، هر دو به یک نسبت برنامه‌نویسان خوبی میشوند. من این نکته رو فقط برای تناقض جنسیتی که در دنیای برنامه‌نویسی وجود داره ذکر کردم؛ این کاملا درسته که در حال حاضر تعداد برنامه‌نویسان مرد بیشتر از برنامه‌نویسان زن هست، اما با این وجود باید بگم که یکی از اولین برنامه‌نویسان تاریخ زن بود (Ada Lovelace). بعلاوه، برنامه‌نویسان مرد مخصوصا بسیار مشتاق تر هستند تا زن ها را وارد این حرفه کنند، چراکه آنها (برنامه‌نویسان مرد) اساسا هیچ زندگی اجتماعی ای ندارند. یا شاید این مورد به طرز نا عادلانه‌ای فقط به من مربوط میشود، و فقط من هستم که اساسا هیچ زندگی اجتماعی‌ای ندارم.همانطور که میبینید، برای تبدیل شدن به یک برنامه‌نویس موفق یک سری ویژگی های قطعی (از نظر من) وجود داره. اگر شما منطقی نباشید، در سازماندهی و ساختن برنامه های پیچیده به مشکل برخواهید خورد. اگر نسبتا باهوش نباشید، قادر به شکستن عملیات به مراحل ضروری و اساسی کوچکتر نخواهید بود. اگر صبور نباشید، شما کامپیوتر خود را قبل از اینکه ساده ترین برنامه ها را بنویسید خرد خواهید کرد. اگر شما از چالش های فکری لذت نبرید، از هر دقیقه ی برنامه‌نویسی متنفر خواهید شد. اگر شما طرفدار سریال Silicon Valley نباشید، تعداد بسیاری از گفتگو های برنامه‌نویسان را از دست میدهید (من نمیگم که این بده). در نهایت، اگر شما حساس و باهوش نباشید، متوجه نمیشوید که بیست ساعت متوالی از زمان خود را صرفا برای طراحی یک آیکون برای برنامه جدیدتان کردید و وضعیت جسمی شما از لحاظ داشتن انرژی در حالت مهلک هست، و در معرض مرگ قرار دارید.به عبارتی دیگر، منظور من این نیست که شما نمیتوانید برنامه‌نویس شوید، بلکه شما برنامه‌نویسی را بسیار سخت تر از چیزی که در واقع هست مبینید.تا به اینجای کار شما حداقل براتون واضحه که برنامه‌نویسی آیا میتواند یک شغل جدی برای شما باشد یا خیر. اگر شما همچنان علاقه مند به دانستن موضوعاتی که در برنامه‌نویسی شامل میشود، هستید (روند واقعی نوشتن برنامه‌ها) منتظر قسمت های بعدی این رشته مقاله باشید، در غیر این صورت، کاملا مشخصه که شما باید این حرفه را به دیگر برنامه‌نویسان واگذار کنید، و سپس برنامه‌ی عالی اونها رو بخرید. 😉If you are a programmer reading this, follow me on GitHub, I would love to work with you!