برنامه نویسی

رهایی از فلج تحلیل

پروژه حیوان خانگی

آیا تا به حال در هنگام شروع یک پروژه جدید به دلیل انتخاب های بی پایان فلج شده اید؟ من اخیراً این کار را کردم و همه چیز با تماشای بیش از حد ThePrimeagen شروع شد. با الهام گرفتن، تصمیم گرفتم GoLang را یاد بگیرم، فکر می‌کردم که این گام بعدی عالی برای مهارت‌های نیمه‌پخت من در Vim خواهد بود. من این ایده پروژه حیوان خانگی را برای ماه‌ها در حال جوشیدن داشتم، و GoLang یک انتخاب محکم برای باطن به نظر می‌رسید. اما همانطور که به زودی کشف کردم، سفر از ایده تا اجرا با موانعی همراه است، به خصوص زمانی که شما یک توسعه دهنده باتجربه نباشید.

فلج

هنگام کار بر روی Backend سوالات زیادی وجود دارد:

  • کجا میزبانی کنیم؟
  • از چه DB استفاده کنیم؟
  • چگونه از کافکا با آن استفاده کنم و موتور هوش مصنوعی و بلاک چین را کجا قرار دهم؟

من با ایجاد یک پروژه جدید در Todoist شروع کردم (به هیچ وجه از Jira برای یک پروژه حیوان خانگی استفاده نمی کنم) و شروع به اضافه کردن وظایف کردم: مخزن تنظیم کنید، برنامه hello world را بنویسید، نقطه پایانی REST API را اضافه کنید، CI را تنظیم کنید، گسترش دهید… به کجا؟
من یک VPS دارم که گاهی اوقات برای پروژه های حیوانات خانگی از آن استفاده می کنم، اما این یک راه حل همه کاره نیست، بیشتر شبیه یک لینوکس از راه دور است که می توانم کارها را روی آن اجرا کنم. من باید DB را در جایی میزبانی کنم، نظارت و هشدار، یک سرویس اعلان، یک صف پیام … من نمی خواهم همه این کارها را انجام دهم. من نمی دانم چگونه این کار را انجام دهم. وقتی من اصول اولیه را نمی دانم حتی شروع یک پروژه چه فایده ای دارد؟

بگذارید شروع کنم به جستجو در…

فروشندگان خدمات

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

“آیا برای روزهای خوب minix-1.1، زمانی که مردان مرد بودند و درایورهای دستگاه خود را می نوشتند؟” – لینوس توروالدز

من DB خودم را نمی نویسم، و حتی نمی خواهم آن را میزبانی و مدیریت کنم. من نمی خواهم OAuth خودم را بنویسم یا اطلاعات کاربران را حفظ کنم. من به فروشنده‌های شخص ثالث نیاز دارم: Firebase برای اعلان‌ها، یک ارائه‌دهنده OAuth با SDK برای تلفن همراه و وب، و یک ارائه‌دهنده DB.

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

بس کن، کمک بگیر

بس کن، کمک بگیر

من اینجا چه کار می کنم، فقط می خواهم یک برنامه بسازم.

فعلا تصمیم گرفتم همه اینها را پیچ کنم و تا جایی که امکان دارد به صورت محلی بسازم. وقتی از نتایج راضی باشم، با خوشحالی به کسی پول می دهم تا بفهمد چگونه آن را آنلاین قرار دهد. من می‌توانم با تنظیمات Docker Compose که در عرض 3 دقیقه انجام دادم، خیلی جلو بروم. و روی دستگاه من کار میکنه. برای چند ماه آینده به اندازه کافی خوبه 🙂

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

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

اما من این کار را نمی کنم. من می خواهم یک برنامه بسازم، نه با اینفرا کمانچه. Infra کریپتونیت من است.

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

به تعویق انداختن

از آنجایی که زبان را به خوبی بلد نیستم یا طراحی اپلیکیشن مشخصی در ذهنم دارم (یا مانند یک بزرگسال مستند شده است)، به راحتی می توانم از جستجوی همه ابزارهای ممکن که ممکن است برای این پروژه به آن نیاز داشته یا نداشته باشم فرار کنم. انجام تحقیقات بی پایان به جای کار بر روی خود پروژه. این پروژه محکوم به شکست است. من انگیزه ام را با مقایسه کردن از دست می دهم Azure به Digital Ocean. برنامه من باید یک API فعال، مدل‌های داده و مجموعه‌های DB داشته باشد. یا حداقل یک ساختار دایرکتوری. داشتن یک طراحی سطح بالا ضرری ندارد.

اما نه، بیایید ارائه دهندگان OAuth را در زمانی که من حتی نقطه پایانی ندارم مقایسه کنیم.

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

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

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

شروع سفر با فلج گزینه ها اغلب پایان آن است.

آخ من دوباره مرتکب این کار شدم

در حین نوشتن این پست، تصمیم گرفتم چند برنامه نوشتن را تست کنم. من عمدتا از iA Writer استفاده کردم، اما Paper، Ulysses و Scrivener را نیز دانلود کردم. نوشتن بدون حواس پرتی شگفت انگیز است. من می توانم Vim و Obsidian خود را طوری پیکربندی کنم که ظاهر و احساسی مشابه داشته باشند. صبر کن… دارم چیکار می کنم؟

من به جای نوشتن این پست، مشغول آموزش و مقایسه بین نرم افزارهای نوشتن بودم.

دوباره انجامش دادم همان کاری که هنگام شروع پروژه باطن انجام دادم.

آیا این اهمال کاری است که من را بیشتر به سمت کارهای ساده و غیرقابل اندازه گیری مانند «انجام تحقیق» و «بررسی ابزارها» سوق می دهد تا انجام کار واقعی؟ من را به یاد زمانی می اندازد که امتحان داشتم و ناگهان کارهای خانه هیجان انگیز شد.

چگونه می توان از آن فرار کرد؟

نکات

چند نکته برای کمک به تمرکزم ارائه کردم:

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

این باید به من کمک کند انگیزه داشته باشم و پیشرفت کنم. با کمی بوی پروژه حیوان خانگی که کار دیگری است 🙂

نتیجه

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

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

آیا آنجا بودی؟

نوشته های مشابه

دیدگاهتان را بنویسید

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

دکمه بازگشت به بالا