
بعد از ماهها سردرگمی، این پروژهها تئوری را به درک واقعی تبدیل کردند.
روزی که بالاخره پایتون را "درک کردم".
وقتی شروع به یادگیری پایتون کردم، همه چیز را به روش "درست" انجام میدادم: آموزشها، لیستهای پخش یوتیوب، تمرینهای بیپایان سینتکس. اما هر بار که سعی میکردم چیزی را خودم بسازم، متوقف میشدم. میتوانستم یک حلقه بنویسم. میتوانستم یک تابع تعریف کنم. اما مثل یک برنامهنویس فکر نمیکردم.
اما داستان از یک آخر هفته شروع شد ! هنگام تمیز کردن پوشه دانلودهای بههمریختهام (که صادقانه بگویم شبیه یک محل دفن زباله دیجیتال بود)، تصمیم گرفتم اسکریپتی بنویسم که بهطور خودکار فایلهایم را بر اساس نوع مرتب کند. چیز خیلی کوچکی بود، اما وقتی کار کرد، چیزی جرقه زد. من دیگر فقط کد نمیزدم. من با کد فکر میکردم. آن یک پروژه اتوماسیون، نحوه یادگیری پایتون را کاملاً تغییر داد. از آن زمان، دهها پروژه دیگر ساختهام و نکته مهمی را متوجه شدهام: بهترین پروژههای مبتدی، آنهایی نیستند که «باحال» به نظر میرسند. آنها پروژههایی هستند که مغز شما را برای تفکر منطقی و حل مشکلات مانند یک توسعهدهنده واقعی، دوباره سیمکشی میکنند.
در اینجا پنج مورد از این پروژهها آورده شده است.
۱) ایمیلرسان خودکار - یادگیری نحوه تجزیه مشکلات
هر توسعهدهندهای در نهایت یک «اسکریپت اتوماسیون» مینویسد که ایمیلها را ارسال میکند. به نظر خستهکننده میآید، اما اینطور نیست. اولین باری که یکی نوشتم، مجبور شدم مشکل را گام به گام تجزیه کنم: چگونه به جیمیل متصل شوم؟ چگونه به صورت ایمن احراز هویت کنم؟ چگونه پیام را قالببندی کنم؟ این فرآیند بیش از هر دوره دیگری در مورد حل مسئله ساختاریافته به من آموخت. وقتی فهمیدم چگونه میتوان چنین کاری را به بخشهای کوچک و قابل آزمایش تقسیم کرد، همه چیز تغییر کرد. از فکر کردن در «حالت آموزشی» دست کشیدم و شروع به فکر کردن در «حالت مهندسی» کردم.
نکته حرفهای: همیشه با نوشتن مشکل به زبان ساده شروع کنید. سپس، هر مرحله را به کد تبدیل کنید. به این ترتیب مغز خود را برای تفکر منطقی آموزش میدهید.
۲) ردیاب فایل — یادگیری نحوه تفکر در حلقهها
بیشتر افراد حلقهها را با چاپ اعداد یاد میگیرند. من آنها را با ردیابی تغییرات در یک پوشه یاد گرفتم. این پروژه به من آموخت که حلقهها فقط تکرار نیستند؛ آنها اتوماسیون در حال حرکت هستند. خلاصه ماجرا این است: شما اسکریپتی مینویسید که مدام یک پوشه را زیر نظر میگیرد، فایلهای جدید را شناسایی میکند و آنها را ثبت میکند. این در حالی است که حلقه True برای همیشه در حال اجرا است و این باعث میشود احساس کنم کد من زنده است. برای اولین بار، پایتون ایستا نبود؛ بلکه به طور مداوم کاری انجام میداد.
واقعیت: توسعهدهندگان اتوماسیون اغلب از منطق مشابه نظارت بر فایل برای راهاندازی سیستمهای پشتیبانگیری یا خطوط لوله مصرف داده استفاده میکنند. این یک نسخه کوچک از آن است.
۳) ربات نقل قول روزانه — یادگیری نحوه کار با APIها
هنوز اولین باری که یک API را فراخوانی کردم را به یاد دارم، احساس میکردم که قفل کنترل مخفی اینترنت را باز کردهام. API نحوه صحبت پایتون با جهان هستند و ساختن چیزی به سادگی یک ربات نقل قول روزانه اولین قدم من به آن دنیا بود. ساده؟ بله. دگرگونکننده؟ کاملاً. آن پروژه کوچک به من آموخت که چگونه دادهها بین سیستمها، درخواست، پاسخ، تجزیه و نمایش جریان مییابند. و مهمتر از همه، یاد گرفتم که به جای وحشت کردن وقتی چیزی کار نمیکند، مانند یک کارآگاه اشکالزدایی کنم.
نکته حرفهای: APIها مانند دستگاههای فروش خودکار هستند که درخواست صحیح را وارد میکنید، دادههای مورد نظر خود را دریافت میکنید. اما اگر "منو" (اسناد) را نخوانید، به جای یک میان وعده، فقط یک پیام خطا دریافت خواهید کرد.
۴) سازماندهی پوشه - یادگیری نحوه تفکر قابل استفاده مجدد
این مورد به عنوان یک ترفند سریع برای مرتبسازی فایلها شروع شد و در نهایت به دروازه من برای نوشتن کد قابل استفاده مجدد تبدیل شد. وقتی چیزی کوچک اما ماژولار میسازید، کمکم ارزش طراحی تمیز را میبینید. شما نوشتن اسکریپتهای اسپاگتی را متوقف میکنید و شروع به نوشتن توابعی میکنید که واقعاً میتوانید از آنها استفاده مجدد کنید. همین، چند خط که ساعتها صرفهجویی میکنند. اما درس واقعی اتوماسیون نبود. معماری بود. من یاد گرفتم که کد خوب مانند یک خانه خوب است: باید بدون تخریب دیوارها، به راحتی گسترش یابد.
واقعیت: این گروهبندی، طبقهبندی و جابجایی دقیق منطق، پایه و اساس خطوط لوله مهندسی داده مورد استفاده در سیستمهای تولید است.
۵) ربات یادآوری - یادگیری نحوه ترکیب همه چیز
این پروژه همه چیز را به هم پیوند داد: مدیریت فایل، زمانبندی و APIها در یک سیستم منسجم. این اولین پروژهای بود که در آن واقعاً احساس کردم یک توسعهدهنده هستم، نه یک دانشجو. در ابتدا، فقط یک راه سرگرمکننده برای یادآوری استراحت در حین کدنویسی بود. اما بعد متوجه شدم که این ستون فقرات زمانبندی وظایف، کارهای کرون و حتی سیستمهای اتوماسیون گردش کار است. چیزی که به عنوان یک ابزار بهرهوری شخصی آغاز شد، به لحظهای روشن در مورد چگونگی قدرت بخشیدن اتوماسیون به همه چیز، از خطوط لوله DevOps گرفته تا کارهای همگامسازی دادهها، تبدیل شد.
نکته حرفهای: هر پروژه "کوچک" مخفیانه یک ایده بزرگ در لباس مبدل است. تفاوت بین یک اسکریپت مبتدی و نرمافزار سازمانی فقط در مقیاس و ساختار است. آنچه این پروژهها واقعاً به من آموختند این پروژهها فقط باعث پیشرفت من در پایتون نشدند. آنها نحوه تفکر من را تغییر دادند. من از دنبال کردن چارچوبها دست کشیدم و شروع به تمرکز بر اصول اولیه کردم، اینکه چگونه مشکلات را به مراحل تقسیم کنم، کارهای تکراری را خودکار کنم و چیزهایی بسازم که واقعاً مشکلات را حل کنند.
حقیقت این است: اکثر توسعهدهندگان به این دلیل شکست نمیخورند که نمیتوانند کد بنویسند. آنها به این دلیل شکست میخورند که نمیتوانند با کد فکر کنند. بنابراین اگر در جهنم آموزش گیر کردهاید، توصیه من این است: یک مشکل آزاردهنده در زندگی خود انتخاب کنید. آن را خودکار کنید. یادگیری واقعی از آنجا شروع میشود.
"اول، مشکل را حل کنید. سپس، کد را بنویسید." جان جانسون
خودکارسازی، معلم مخفی است که هر برنامهنویس به آن نیاز دارد. این کار وضوح، منطق و خلاقیت را به طور همزمان به شما القا میکند. وقتی شروع به ساختن به این شکل میکنید، فقط پایتون یاد نمیگیرید. شما یاد میگیرید که چگونه مانند یک کدنویس فکر کنید.
ممنون از خواندن! :)