بازگشت به انجمن

با Python راه بیفتید!

هر چند وقت یک‌بار به کسی برمی‌خوریم که با یادگیری برنامه‌نویسی یک‌راست به عمق آب شیرجه می‌زند! کارل، که در فضای آنلاین با اسم «Meatball» شناخته می‌شود، یادگیری کد نوشتن را با مسیر Python در Exercism شروع کرد... این کار واقعاً دستاورد بزرگی است، اما چه کسی چالش را دوست ندارد!

تماشا در YouTube
مدت 34دقیقه

جاناتان: خب، سلام و خوش آمدید به پادکست Exercism. اسم من جاناتان است. افتخاری است که دوباره اینجا هستم و زندگی و داستان‌ها را با شما به اشتراک می‌گذارم، هر جا که باشید. پس امروز مهمانی داریم که اسمش کارل است. و می‌خواهم مستقیم شروع کنم و از کارل بخواهم کمی خودش را معرفی کند. خب کارل، بگویید اهل کجا هستید؟ این روزها چه کار می‌کنید؟ و چطور با Exercism آشنا شدید؟ کارل: خب، من در شهر گوتنبرگ در سوئد زندگی می‌کنم و در حال حاضر دانشجوی تمام‌وقت هستم. اما وقتی وارد دنیای فناوری و برنامه‌نویسی شدم، از Exercism استفاده کردم. با مسیر Python شروع کردم و فکر می‌کنم مسیر Python برای بیشتر تازه‌کارها بهترین مسیر است، چون نحوه‌ی نگارش Python خیلی سرراست است و به نظر من خیلی به زبان آدمیزاد نزدیک است. و وقتی نوبت به انواع زبان‌های برنامه‌نویسی می‌رسد، Python خیلی با شما مهربان است. انواع داده‌ی آن‌قدری ندارد، اما... بله. و این‌طور بود که با انجام تمرین‌های مفهومی و دنبال کردن برنامه‌ی درسی شروع کردم. و این کار را تقریباً هر آخر هفته با انجام یکی دو تمرین انجام می‌دادم. بعد از مدتی، چون در ابتدا... اشتباه‌های زیادی کردم که حالا به آن‌ها نگاه می‌کنم. حالا که بزرگ‌تر شده‌ام یا... حالا که مدت بیشتری برنامه‌نویسی کرده‌ام، می‌توانم آن اشتباه‌ها را تشخیص بدهم. پس لازم نیست کدتان در ابتدا بی‌نقص باشد. و چیزی که خوشم آمد این بود که وقتی... وقتی تمرین‌های زیادی در مسیر Python انجام دادم، به مسیر Ruby رفتم. بله. دلیل اینکه Ruby زبان خوبی برای مهاجرت از Python است این است که شباهت‌های زیادی دارند. و اوه، نحوه‌ی نگارش Ruby کاملاً مشابه است، اما تفاوت‌هایی هم دارد. مثلاً Ruby خیلی شیءگراتر است. پس فکر می‌کنم برای یک تازه‌کار، شروع با Python و بعد رفتن به Ruby می‌تواند مسیر خوبی باشد. و شما را دفعه‌ی بعد می‌بینم. جاناتان: شما با Python شروع کردید. یعنی، اغلب وقتی آدم‌ها به Exercism می‌آیند، کمی تجربه‌ی توسعه دارند. اگر پیش‌تر دانش و تجربه‌ای در توسعه و کدنویسی داشته باشید، کاری که آدم‌ها اغلب با Exercism انجام می‌دهند این است که در یک زبان خاص مهارتشان را بالا ببرند. اما آیا درست فکر می‌کنم که شما بدون هیچ تجربه‌ی کدنویسی یا برنامه‌نویسی آمدید و با Exercism شروع کردید؟ کارل: قبلاً کمی Scratch کار کرده بودم، یعنی برنامه‌نویسی تصویری، اما هیچ‌وقت کدنویسی واقعی نکرده بودم. شروع از صفر سخت است. و فکر می‌کنم این چیزی است که همه‌ی برنامه‌نویس‌ها در آن شریک‌اند. شروع مثل یک تپه است و بعد از اینکه از تپه بالا آمدید، همه‌چیز آسان‌تر می‌شود. مثل شما. جاناتان: فکر می‌کردم می‌خواهید بگویید از تپه بالا می‌آیید و بعد تپه بزرگ‌تر می‌شود و بعد کمی بالا می‌آیید و بعد مدام بزرگ و بزرگ‌تر می‌شود. آیا چنین حسی را تجربه کرده‌اید؟ نقطه‌ای بود که چیزها معنی‌دار شدند. لحظه‌ای بود که با خودتان گفتید، خب، بله، این را فهمیدم. کارل: یعنی، واقعیت این است که زمان زیادی می‌برد تا واقعاً چیزی را کامل بفهمید و کاری که بیشتر آدم‌ها در ابتدا اغلب می‌کنند این است که... زیاد از حلقه‌های While استفاده می‌کنند، چون خیلی، می‌توانید آن‌ها را خیلی بیشتر از حلقه‌های For کنترل کنید، چون در حلقه‌ی For باید قبل از شروع به آن بگویید که حلقه چقدر باید طول بکشد. و فکر می‌کنم... وقتی واقعاً یاد گرفتم که چطور درست از حلقه‌ی For استفاده کنم و از حلقه‌های While بیش از حد استفاده نکنم، فکر می‌کنم برنامه‌نویسی برایم جا افتاد، یا اینکه حلقه‌ها خیلی بیشتر برایم جا افتاد که چطور کار می‌کنند. جاناتان: خب، پس آن لحظه‌ای بود که حس کردید، خب، این مفهوم برایم معنی‌دار است. و بعد آیا درک شما از حلقه‌ها به مفاهیم دیگری هم منتقل شد که کم‌کم بیشتر و بیشتر معنی‌دار شدند؟ من از تجربه‌ی خودم می‌گویم. من هم در مسیر Go در حال یادگیری Go بوده‌ام. و حلقه‌ها هیچ‌وقت معنی‌دار نبودند تا اینکه حدود، احتمالاً حدود ۳ روز وقت گذاشتم و تمرین‌ها و مستندات را مرور کردم و تکه‌تکه سرهمشان کردم، یعنی یکی‌یکی از هم بازشان کردم. و تجربه‌ی کار با حلقه‌ها و تلاش برای فهمیدنشان واقعاً تأثیر بزرگی بر درک کلی من از کد گذاشت، و اینکه توابع و آن جور چیزها چطور کار می‌کنند. آیا برای شما هم مشابه بود؟ کارل: در Python اغلب برای حل مسائل مختلف، مدام روی چیزها پیمایش می‌کنید. تقریباً تنها کاری است که در Python انجام می‌دهید. در Python، برای حل مسائل روی چیزها پیمایش می‌کنید. یعنی حلقه‌ها برای درک کامل خیلی مهم‌اند. وقتی واقعاً حلقه‌ها را در Python کامل بفهمید، می‌توانید کارهای زیادی انجام دهید، فقط به این دلیل که همه‌چیز بر پایه‌ی پیمایش روی اشیاست. جاناتان: چه جالب. پس شما در حال حاضر درس می‌خوانید، پیش از این ضبط کوتاه اشاره کردید، مثل ریاضی، فیزیک. چه موضوعاتی را در حال حاضر می‌خوانید؟ چه موضوعات یا چه درس‌هایی را در حال حاضر می‌خوانید؟ کارل: من برنامه‌نویسی، ریاضی و فیزیک می‌خوانم. جاناتان: خب، این‌ها برایتان چطور پیش می‌رود؟ کارل: همین‌طور بود؛ ماجرا این بود که من Exercism را به‌عنوان آمادگی برای آن درس‌های برنامه‌نویسی انجام دادم. و متوجه شدم که الان چیزهای خیلی بیشتری از آنچه آن درس‌ها پوشش می‌دهند می‌دانم. جاناتان: عالی است. کارل: چیز زیادی از آن‌ها یاد نمی‌گیرم، چون در عوض درباره‌ی مارکسیسم یاد می‌گیرم. جاناتان: پس می‌گویید، کارل، که آدم‌ها واقعاً باید به‌جای مدرک دانشگاهی Exercism انجام دهند؟ کارل: یعنی، اگر علوم کامپیوتر نخوانید، حدس می‌زنم واقعاً کمی بیشتر درباره‌ی اینکه کامپیوتر چطور کار می‌کند و بیت‌ها و این چیزها یاد می‌گیرید. در حالی که Exercism فقط برنامه‌نویسی و حل مسئله و همه‌ی بخش‌های منطقی آن را به شما یاد می‌دهد. فکر می‌کنم هنوز رفتن به دانشگاه دلیلی دارد. جاناتان: کمی سر به سرتان گذاشتم، چون فکر می‌کنم اگر به آدم‌هایی با مدرک دانشگاهی بگویید که هیچ چیز نمی‌دانند، احتمالاً خیلی‌ها را ناراحت می‌کنیم. پس از آن یکی می‌گذریم. و کارل، بگویید، می‌خواهم کمی بیشتر درباره‌ی بزرگ شدن از شما بپرسم. چه... دارم سعی می‌کنم این را درست بگویم. مثلاً وقتی بچه بودید، از حل مسئله لذت می‌بردید؟ به چیزهایی مثل Lego یا آن جور چیزها علاقه داشتید؟ و دلیل اینکه این را می‌پرسم این است که اغلب وقتی آدم‌ها برنامه‌نویسی می‌کنند، لذتی طبیعی از خود حل مسئله دارند. پس در بزرگ شدن، آیا سرگرمی‌های زیادی داشتید یا چیزهایی که فنی‌تر بودند؟ کمی درباره‌ی این برایم بگویید. کارل: یعنی، Lego را دوست داشتم. نه، یعنی... من... وقتی کوچک‌تر بودم در ریاضی خوب بودم. از آن جهت حل مسئله بود، یعنی تلاش برای حل مسائل مختلف ریاضی. فکر می‌کنم چیزی که واقعاً من را وارد برنامه‌نویسی کرد فقط... علاقه‌ام به فناوری به طور کلی است، من کامپیوترها را خیلی دوست دارم. و واقعاً دوست دارم... ممنون. هر بار کسی با کامپیوترش مشکلی پیدا می‌کند، می‌گوید، اوه، می‌توانی به من کمک کنی؟ که گاهی می‌تواند کمی آزاردهنده باشد، اما در واقع اغلب خیلی سرگرم‌کننده است. پس واقعاً به کامپیوتر و کامپیوترها علاقه‌مند شدم و همین من را به سمت برنامه‌نویسی جالب کشاند. جاناتان: خب، پس تا آنجا که من می‌فهمم، شما حالا ۴ تا ۵ مسیر در Exercism را انجام داده‌اید، یا واقعاً ۴ تا ۵ زبان را با Exercism یاد گرفته‌اید، درست است؟ کارل: درست است؟ بله، من حدود... ۶ مسیر را شروع کرده‌ام. بله. اما فقط در ۴ موردشان خودم را نسبتاً خوب می‌دانم. جاناتان: خب، و از میان آن‌ها، کدام‌ها؟ Python، Ruby. کارل: Python، Ruby، JavaScript و TypeScript، اما Elixir را هم نسبتاً خوب می‌دانم. جاناتان: خب، از میان همه‌ی آن زبان‌ها، از کدام‌یک از نظر یادگیری بیشتر لذت برده‌اید؟ کارل: من واقعاً Elixir را دوست دارم. خیلی دوست دارم که در آن زبان چطور تایپ می‌کنید. به نظر من زبان خیلی... تایپ کردن در آن خیلی لذت‌بخش است، اما با آنچه در زبان‌های دیگر به آن عادت دارم خیلی متفاوت است. از یک جایی مثل اینکه از اول شروع می‌کنید. بله. اما فکر می‌کنم اگر کسی واقعاً بخواهد یک زبان خیلی خیلی قدرتمند یاد بگیرد، JavaScript هست. به نظر من یکی از قدرتمندترین زبان‌هایی است که می‌توانید بلد باشید. جاناتان: خب، پس JavaScript، اگر اشتباه می‌کنم تصحیح کنید، زبانی یکم تفسیری‌تر است. این حرف درستی است؟ و بعد Elixir احتمالاً تابعی‌تر است. درست است؟ کارل: بله. جاناتان: خب، پس این دو از نظر ماهیت خیلی متفاوت‌اند. برای من جالب است که به نظر می‌رسد از کل طیف این دو زبان لذت می‌برید. موضوع چیست؟ چه چیزی در Elixir برایتان سرگرم‌کننده یا لذت‌بخش است؟ می‌توانید دقیق بگویید چیست؟ کارل: یعنی همان برنامه‌نویسی تابعی است. مثلاً، توابعی دارید و باید همه‌شان را با هم بیاورید. و با همه‌ی این توابع، باید مسئله را حل کنید. و این برای من یعنی، حداقل من خیلی... اوه، مستندات Elixir برای اینکه واقعاً کاری انجام دهید خیلی مهم است. و به نظر من مستندات Elixir عالی است. پس با جست‌وجو روش‌های درست را پیدا می‌کنید، که به نظر من خیلی سرگرم‌کننده است. جاناتان: پس تقریباً مثل سرهم کردن یک پازل است، می‌شود گفت، جایی که همه‌چیز را کنار هم می‌گذارید تا بتوانید مسئله را ببینید. کارل: همه‌چیز را کنار هم می‌گذارید تا... یک پازل را کنار هم ببینید. و همان‌طور که گفتم، نحوه‌ی نوشتن در آن زبان را هم خیلی دوست دارم. پس پازل خیلی خوبی است. جاناتان: خب، عالی. پس الان در آن مسیر کجا هستید؟ تمرین‌های عملی را تمام کرده‌اید یا هنوز بیشتر مشغول تمرین‌های مفهومی هستید؟ کارل: برای آن زبان تمرین‌های مفهومی زیادی وجود دارد. فکر می‌کنم حدود ۲۰ تا یا شاید بیشتر باشد. فکر می‌کنم هنوز روی تمرین‌های مفهومی هستم، حدوداً ۹۰ درصدشان را انجام داده‌ام یا چیزی شبیه آن، پس تقریباً تمام شده. جاناتان: عالی، خیلی جالب است. واقعاً خیلی جالب است. خب کارل، می‌خواهم کمی بیشتر درباره‌ی زندگی بدانم، فراتر از کدنویسی و توسعه. خب، چه کارهایی را در وقت آزاد یا به‌عنوان سرگرمی دوست دارید انجام دهید؟ چیزی هست که واقعاً، اگر می‌توانستید تمام وقتتان را بیرون از کدنویسی صرف آن کنید، چه بود؟ کارل: خب، اگر اجازه نداشته باشم بگویم برنامه‌نویسی، در وقت آزادم دوست دارم کمی بازی ویدیویی انجام دهم و دوچرخه‌سواری هم دوست دارم. آن هم سرگرم‌کننده است. جاناتان: دوچرخه‌سواری کوهستان یا جاده‌ای؟ کارل: جاده‌ای. جاناتان: پس دوچرخه‌سواری می‌کنید؟ یعنی کمی بگویید، چون در سوئد هستید، درست است؟ بله. و جایی که زندگی می‌کنید صاف است؟ تپه‌ای است؟ اقیانوس زیبایی دارید؟ چون تصور من از سوئد این است که اقیانوس دارید. کارل: که اقیانوس دارید. بله، جایی که من زندگی می‌کنم کاملاً صاف است. اما اگر به شمال بروید، تپه‌ای‌تر است. جاناتان: الان در سوئد برف می‌بارد؟ به نظر می‌رسد که حالا دارد سرد می‌شود. کارل: فکر می‌کنم هفته‌ی پیش برف می‌بارید، اما الان خیلی برفی است. جاناتان: خب، و در برف دوچرخه‌سواری می‌کنید؟ کارل: بله. جاناتان: می‌کنید. پس ما یکی دیگر هم داریم، شاید برایان را بشناسید. برایان، او یکی از منتورهای Elixir است. برایان آندروود، او هم در سوئد زندگی می‌کند، فکر می‌کنم در استکهلم، و او وسط زمستان می‌دود، در تاریکی شب در سوئد می‌دود. به نظر من این خیلی، فکر کردم این خیلی خیلی باحال است. پس آیا اغلب دوچرخه‌سواری می‌کنید، مثلاً هفته‌ای یک بار، هفته‌ای دو بار؟ یا کاری است که به‌طور منظم انجام می‌دهید؟ یا فقط... کارل: من، من، وقتی سفر می‌کنم، با دوچرخه تا ایستگاه اتوبوس می‌روم و بعد از ایستگاه اتوبوس سوار اتوبوس می‌شوم. جاناتان: خب، و بعد فقط یک جای خوب پیدا می‌کنید و بعد... پس با اتوبوس سفر می‌کنید. کارل: با دوچرخه تا ایستگاه اتوبوس می‌روم و بعد با اتوبوس سفر می‌کنم. جاناتان: فهمیدم. خب، خب خوب است. و کارل، دانشگاه از جایی که زندگی می‌کنید چقدر دور است؟ در حال حاضر در خانه زندگی می‌کنید یا جایی اجاره کرده‌اید؟ وضعیتتان چطور است؟ کارل: وضعیتتان چطور است؟ در خانه زندگی می‌کنم. ۳۰ کیلومتر دور است. حدود، نمی‌دانم. اوه، صبر کنید. بله، ۳۰ کیلومتر، احتمالاً درست است. حدود ۴۰ دقیقه طول می‌کشد یا چیزی شبیه آن. جاناتان: خب، پس آن‌قدرها هم بد نیست، اما هنوز راه نسبتاً طولانی‌ای است. حالا چند سال دیگر از تحصیلتان باقی مانده تا، به اصطلاح، وارد دنیای واقعی شوید؟ ۴ سال دیگر تحصیل دارید. الان سال اول هستید؟ کارل: بله. جاناتان: خب، وای. پس سال اول را تمام کرده‌اید و یک دوره‌ی چهارساله است. خب. و چه، ایده‌ای دارید که رؤیای آینده‌تان چیست یا می‌خواهید به‌عنوان شغل چه کار کنید یا فکری درباره‌اش دارید؟ کارل: یعنی، همیشه می‌خواستم با فضا کار کنم، چون فکر می‌کنم باحال است. نه اینکه مثلاً در اخترفیزیک باشم، بلکه شاید کمی برنامه‌نویسی در ارتباط با مسائل فضایی. و یک آژانس فضایی اروپا داریم، که چیزی خواهد بود، اما... اگر آن نشد، فکر می‌کنم فقط. نمی‌دانم، یک شغل معمولی Backend خوب خواهد بود. جاناتان: فقط یک Backend معمولی، چقدر خوشم آمد که این را گفتید. برای گوش من خیلی ساده و راحت به نظر می‌رسد. و فکر می‌کنید روزی بخواهید جای دیگری غیر از سوئد زندگی کنید؟ یا سوئد را دوست دارید؟ فکری درباره‌ی این دارید؟ یعنی، گوش کنید، من سؤال‌هایی می‌پرسم که شاید هنوز حتی به آن‌ها فکر نکرده‌اید، چون هنوز چند سالی مانده تا مجبور شوید آن انتخاب‌ها را بکنید. اما فضا واقعاً جذاب به نظر می‌رسد. چطور می‌خواهید این کار را بکنید؟ چطور می‌خواهید وارد آن شوید؟ کارل: راستش هیچ ایده‌ای ندارم. هیچ‌وقت واقعاً به اینکه چطور، فکر نکرده‌ام، اما... یعنی، خواهیم دید. بیشتر یک رؤیا است تا یک برنامه‌ی واقعی. اما برای پاسخ به سؤال قبلی‌تان، واقعاً به زندگی در جایی مثل کانادا یا چیزی شبیه آن فکر کرده‌ام، اما فکر می‌کنم هنوز در بخش شمالی جهان زندگی خواهم کرد. جاناتان: خب، پس سرما و یخ و برف. با این خوشحالید؟ بله. کارل، برادر، خواهر، خواهر و برادر دارید؟ کارل: یک برادر کوچک دارم. جاناتان: خب، پس دو نفر هستید. و او برنامه‌نویسی دوست دارد؟ چیزی که یاد می‌گیرید و می‌دانید را به او یاد می‌دهید؟ کارل: اوه، راستش او برنامه‌نویسی دوست ندارد. نمی‌دانم. جاناتان: اوه واقعاً؟ پس هیچ هم‌پوشانی‌ای نیست. اما با او بازی هم می‌کنید؟ کارل: بعضی وقت‌ها با او بازی می‌کنم، بله. جاناتان: خیلی کوچک‌تر است یا حدس می‌زنم حتماً الان مدرسه می‌رود؟ کارل: حدود ۵ سال از من کوچک‌تر است. جاناتان: خب، پس فاصله‌ی سنی نسبتاً زیادی است. اوه، چه جالب. عالی است. پس برگردیم به Exercism و مشارکت شما، حالا اگر اشتباه نکنم در مسیر Python نگهداری می‌کنید؟ بله، یا مشارکت. مشارکت، خب، عالی. یک روز نگهداری. اما این را چطور می‌بینید؟ چه چیزهایی از این تجربه یاد گرفته‌اید؟ کارل: یعنی، آدم‌های مسیر Python واقعاً باحال‌اند و کار کردن با آن‌ها خیلی سرگرم‌کننده است... چون در حال حاضر مستندات زیادی نوشته‌ام و واقعاً یاد می‌گیرید که چطور مستندات بنویسید و اغلب مجبورید تحقیق زیادی هم انجام دهید. بله، پس مستندات زیادی دارید و چیز زیادی یاد می‌گیرید، چون باید همه‌ی مستندات دیگران را بخوانید. پس واقعاً در مفاهیم خیلی عمیق می‌شوید. جاناتان: پس آیا این را به‌طور خاص به‌عنوان یک تخصص، از نظر مشارکت، لذت‌بخش یافته‌اید؟ کارل: بله، و یعنی وقتی آن مستندات را می‌خوانم چیز زیادی یاد می‌گیرم. جاناتان: نه، واقعاً باحال است. پس از نظر مشارکت در Python در حال حاضر، فکرتان این است که دوست دارید به مشارکت در Elixir و Ruby هم شروع کنید؟ این را چطور پیش‌بینی می‌کنید؟ کارل: یعنی، بله، می‌توانم خودم را در حال مشارکت در مسیر Ruby ببینم، اما Elixir، فکر نمی‌کنم. یک برنامه‌ی بلندمدت دارم که در مسیر TypeScript مشارکت کنم، اما خواهیم دید. فکر می‌کنم راستش ۶ ماه آینده در مسیر Python می‌مانم. جاناتان: خب، چه جالب. بگویید، می‌توانید کمی درباره‌ی TypeScript برایم توضیح دهید؟ یعنی فقط کمی بگویید ماجرایش چیست. دلیل اینکه می‌پرسم این است که درباره‌اش شنیده‌ام. اما شنیده‌ام که به نوعی... JavaScript را محکم می‌کند، اما باز هم، اگر کاملاً اشتباه می‌گویم بگویید. به نوعی کمک می‌کند JavaScript را کمی از نظر ایمنی بررسی کند، اما ممکن است اشتباه کنم. چیست؟ کارل: چیست؟ یعنی، آن توصیف خیلی خوبی است. یک کلاس Frontend داشتم و معلم از JavaScript استفاده می‌کرد و کمی JavaScript پایه در HTML کار کرد. چون من این کد را در TypeScript کپی‌پیست کردم. و TypeScript گفت، اوه نه، نباید این کار را بکنید. امن نیست. پس خیلی درباره‌ی همین است، یعنی امن کردن کدتان. مثل جلوگیری از کرش و چیزهایی شبیه آن. پس انواع را معرفی کرد، تا تضاد نوع نداشته باشید. و بله، به‌طور کلی به شما می‌گوید کارهای امن انجام دهید و نه کد ناامن. بله، یک زبان متفاوت است، اما با JavaScript خیلی شبیه است. اغلب می‌توانید TypeScript را مثل JavaScript در نظر بگیرید، اما زرهی روی آن پوشانده‌اید. پس محافظت‌شده است. جاناتان: خب، پس زبان خودش است. فکر می‌کنم در ذهنم این تصور را داشتم که تقریباً افزونه‌ای برای JavaScript است، اما شما می‌گویید واقعاً کاملاً زبان خودش است. کارل: فکر می‌کنم همین‌طور است. یعنی، خیلی شبیه‌اند، پس شاید یکسان باشند، مثل اینکه افزونه باشد، اما من دوست دارم آن را زبان خودش در نظر بگیرم، چون چند تفاوت کلیدی دارد. جاناتان: احتمالاً همین الان با گفتن اینکه افزونه‌ای برای JavaScript است، همه‌ی طرفداران TypeScript را ناراحت کردم. مطمئنم این باعث می‌شود نظرات جالبی رد و بدل شود. اما پس برای شما، بخش ایمنی TypeScript چیزی است که آن را به ویژگی‌ای ارزشمند برای بیشتر کاویدن تبدیل می‌کند. درست است؟ کارل: یعنی. راستش چیزی که من را وارد TypeScript کرد این بود که کتابخانه‌ی React من JavaScript معمولی را پشتیبانی نمی‌کرد و فقط TypeScript را پشتیبانی می‌کرد. به TypeScript عادت کرده‌ام و فکر می‌کنم واقعاً خوب است. همچنین وقتی از انواع استفاده می‌کنید کد را شفاف‌تر می‌کند، چون واقعاً می‌توانید ببینید، خب، این یک عدد می‌گیرد و یک رشته بیرون می‌دهد. خواندنش آسان‌تر می‌شود. جاناتان: خب، آنجا به React Native اشاره کردید. توسعه‌ی Frontend را ترجیح می‌دهید یا Backend؟ از آنچه می‌فهمم، حدس می‌زنم Backend را ترجیح می‌دهید. اما کمی هم در Frontend دستی دارید؟ کارل: کمی در Frontend دستی داشته‌ام، اما در CSS خیلی بد هستم. پس معمولاً سعی می‌کنم یک کتابخانه‌ی UI خوب پیدا کنم و از آن استفاده کنم. جاناتان: وقتی می‌گویید در CSS بد هستید، منظورت چیست؟ یعنی فقط نمی‌فهمیدش یا گیج‌کننده است یا خیلی زیاد... یعنی چه چیزی در آن است که با آن دست‌وپنجه نرم می‌کنید؟ کارل: با آن دست‌وپنجه نرم می‌کنید. مثل اینکه، خیلی چیزها هست که می‌توانید به یک شیء نسبت دهید، خیلی لطیف. اوه، مثلاً برای حذف چیزی، وقتی در CSS یا در HTML یک پیوند می‌سازید، یک خط زیر متن ظاهر می‌شود. و برای حذف آن، باید text-decoration را اضافه کنید و بعد none بنویسید. همین آن را حذف می‌کند. و چیزهای زیادی است که باید به خاطر بسپارید. و آزاردهنده‌ترین چیز در CSS این است که اگر تغییری در کد یا همان CSS بدهید، اغلب چیز دیگری را خراب می‌کند. پس واقعاً باید، خب، این مشکل را حل کردم. حالا این مشکل پیش آمد و باید آن یکی را هم حل کنم و همین‌طور ادامه دهید. پس مدام همین‌طور است. جاناتان: پس مدام توپ را جای دیگری می‌اندازد. پس این باید خیلی آزاردهنده باشد. حدس می‌زنم تنها تجربه‌ی من با CSS یادگیری بود، و همچنین تلاش برای یادگیری React. و آن‌قدر متغیر دارید، همان‌طور که می‌گویید، آن‌قدر گزینه. مثلاً آن را گسترش می‌دهید یا محدودش می‌کنید؟ و اگر این کار را بکنید، آن‌وقت این دکمه تغییر می‌کند. و پیش از آنکه بفهمید، اگر مراقب نباشید، همه‌ی کامپوننت‌هایتان دارند کارهای مختلفی می‌کنند. جرمی در Exercism، او در CSS واقعاً خوب است، اما فکر می‌کنم فقط بخش‌های مختلف آن را خیلی زیاد می‌داند. پس برای شما، Frontend چیزی نیست که به‌اندازه‌ی سمت Backend از آن لذت ببرید. کارل: با بخش‌های برنامه‌نویسی Frontend مشکلی ندارم، اما ظاهر واقعی‌اش را زیاد دوست ندارم. اما Backend، حداقل برای من، بیشتر این است که اگر کار می‌کند، خرابش نکنید. جاناتان: بله، به آن دست نزنید، بگذارید همان‌طور بماند. برایم جالب است که آدم‌ها معمولاً یکی را بر دیگری ترجیح می‌دهند. می‌دانید چه چیزی در سمت Backend است؟ می‌گویید از این خوشتان می‌آید که فقط کار می‌کند. آیا تفکر منطقی و پردازش امور برای Backend؟ آیا این جنبه‌ای است که بیشتر از همه در آن لذت می‌برید؟ کارل: بله، از آن خوشم می‌آید چون بیشتر منطق است و راه‌اندازی ساختارهای مختلف پایگاه داده. بیشتر همین است، حتی اگر در پایگاه داده خوب نباشم. جاناتان: چه جالب. عالی است. خب کارل، چند سؤال دیگر برایتان دارم. واقعاً لذت بردم از اینکه کمی فهمیدم اهل کجا هستید و از چه کارهایی لذت می‌برید. می‌توانید چند نکته‌ی کلیدی یا چیزهایی را که به کسی که تازه شروع به یادگیری کد کرده توصیه می‌کنید، بگویید؟ و می‌توانید از این زاویه بگویید که مثلاً اگر پیش‌زمینه‌ی علمی‌تری دارند، شاید چند نکته برای آن دسته از آدم‌هایی که از آن لذت می‌برند. اما اگر کاملاً از منظری دیگر به آن نگاه کنید، چه چیزی به نظرتان کار خوبی است که به‌طور منظم انجام دهید. کارل: به‌طور منظم؟ یعنی فکر می‌کنم باید... مثلاً با یک زبان آسان شروع کنید. با چیزهایی مثل Rust، C++ یا C شروع نکنید. اما بعد واقعاً. مثلاً، وقتی... می‌دانم Jun کمی شبیه این را گفت، اما... مثلاً وقتی مسئله‌ای می‌بینید، مسئله را بخوانید، یک استراحت بدهید، به این فکر کنید که چطور حلش می‌کنید و بعد برگردید و واقعاً حلش کنید، چون... خوب است بگذارید مغزتان پردازش کند که واقعاً چطور می‌خواهید مسئله را حل کنید. چیز دیگری که فکر می‌کنم این است که... واقعاً سعی کنید خیلی سریع پیش نروید. الان کمی انجام دهید، بعد کمی، چون فرض کنید تمرین‌های مفهومی زیادی انجام می‌دهید، بهتر است بگذارید آن اطلاعات جا بیفتد تا اینکه همه‌ی مفاهیم را در یک روز انجام دهید و آن موقع احتمالاً فقط گیج می‌مانید. جاناتان: و همه‌چیز چطور اعمال می‌شود. خب، عالی. پس وقت بگذارید. به خودتان فرصت دهید تا درباره‌ی چیزها فکر کنید. و می‌گویید آهسته رفتن، یعنی آهسته‌تر رفتن، عمیق جا انداختن چیزها، بهتر از سریع است و، به نظر می‌رسد همان چیزی است که می‌گویید، بهتر از سطحی‌نگری سریع است؟ کارل: بعضی زبان‌ها را شاید فقط باید نحوه‌ی نگارش و... و چیزهای پایه را یاد بگیرید و بعد بتوانید وارد سناریوهای واقعی‌تر شوید و واقعاً عمیق‌تر کاویدن کنید. وقتی نوبت به JavaScript می‌رسد، پایه‌ها را یاد گرفتم و بعد پروژه‌های React انجام دادم و آنجا... کمی چیزهای جدید یاد گرفتم و در زبان عمیق‌تر شدم. جاناتان: اوه، چه جالب. خب، خوب است. عالی. خب کارل، یک سؤال دیگر برای این هفته از شما دارم. توصیه‌ی شما برای جامعه‌ی این هفته چیست؟ توصیه‌ی ویژه‌تان، و می‌تواند تقریباً هر چیزی باشد. می‌تواند این باشد که بروید در برف دوچرخه‌سواری کنید. می‌تواند شیرجه زدن در یک دریاچه‌ی یخ‌زده باشد یا اگر در سوئد هستید، رفتن به سونا. توصیه‌تان برای جامعه چیست؟ کارل: بله، یعنی، من نه، فکر می‌کنم دوچرخه‌سواری در برف خیلی سخت است. پس من آن را به آدم‌ها توصیه نمی‌کنم. جاناتان: بله. کارل: اما فکر می‌کنم همان را می‌گویم که قبلاً گفتم. ببینید، اگر مسئله‌ای دارید که در آن گیر کرده‌اید، یک استراحت بدهید. چند ساعت دیگر آنجا ننشینید و فقط سعی نکنید حلش کنید. بهتر است یک استراحت کوتاه بدهید و بعد به‌عنوان یک مسئله به آن برگردید. جاناتان: خب عالی. پس توصیه‌ی شما برای این هفته این است که اگر باید چیزی یاد بگیرید، آهسته‌تر پیش بروید، یک استراحت بدهید، یک قهوه بخورید. قهوه می‌نوشید؟ کارل: هنوز نه. جاناتان: هنوز نه. خب. هرگز. کارل: راستش من فقط آب می‌نوشم. احتمالاً همین چیز خاص درباره‌ی من است. جاناتان: خب، عالی. به شما می‌گویم، این در ادامه‌ی زندگی پول زیادی برایتان ذخیره می‌کند. عالی است. خب کارل، خب، صحبت با شما امروز واقعاً افتخار بود. ممنون از وقتی که گذاشتید و ممنون از همه‌ی مشارکت‌هایتان در مسیرهای مختلف و اینکه در Exercism فعال هستید. واقعاً قدردانی می‌کنیم. از اینکه در چند ماه گذشته شما را شناختم واقعاً لذت بردم، به‌ویژه از طریق سرور Discord که راه‌اندازی کردیم. فکر می‌کنم Ex-Orts بود، شما در Discord مربوط به Elixir بودید؟ کارل: یا «cohort» بود یا «experts». جاناتان: بله، مطمئنم شما را در آن‌ها زیاد دیدم، که عالی بود. و بله، ممنون که مشارکت کردید. عالی بود. پس مشتاقانه منتظر صحبت دوباره هستم و خیلی ممنون از وقتی که گذاشتید. فقط در تماس بمانید تا از اینجا کارها را جمع‌بندی کنیم. اما ممنون از همه که گوش دادید. شما با من، جاناتان، و با کارل صحبت کردید و مشتاقم به‌زودی دوباره سر بزنم. خداحافظ. کارل: خداحافظ.

داستان‌های بیشتر از انجمن ما

گوش دهید، یاد بگیرید و از اعضای انجمن ما الهام بگیرید.