בקיץ 2024 החלטתי לבנות רשת חברתית מאפס, בלי לדעת לתכנת.
אז עוד לא היו כלי AI שכותבים ומריצים קוד בשבילך כמו היום. התחלתי בלי כלום ולמדתי בדרך.
שבועיים עד פיד עובד
היא נקראה SkillSwap. בניתי אותה על Firebase. אחרי שבועיים של המון עבודה היו לה פיד, פרופילים עובדים, לייקים ותגובות.
אנשים השתמשו בה. היא הגיעה לבערך 700 משתמשים, אולי קצת פחות. ואז התחלתי לעבוד על הפיצ׳ר שרשת חברתית קיימת בשבילו: הודעות פרטיות בין אנשים.
לכל לייק היה מחיר
אז קראתי את התמחור כמו שצריך. Firebase מחייב לפי פעולה. לייק הוא כתיבה. הודעה היא כתיבה, ובכל פעם שמישהו פותח את השיחה היא נקראת מחדש. כל דבר שמשתמש עושה הוא שורה בחשבון.
חישבתי כמה יעלו ההודעות למשתמשים שכבר היו לי: משהו כמו 500 דולר בחודש, לפני כל צמיחה. אם הפלטפורמה לא הייתה הופכת ויראלית מהר, לא הייתה לי דרך לממן את זה.
אז ההודעות נעצרו שם. לא כי הקוד היה קשה מדי. כי החשבון גדל בדיוק עם הדבר שרציתי שיגדל, השימוש, ושום דבר בתוכנית שלי לא גדל איתו כדי לשלם.
הקובץ של 10,000 שורות
הייתה גם בעיה שנייה, והיא הייתה תופסת אותי בכל מקרה. צד השרת היה קובץ Express.js אחד של יותר מ־10,000 שורות.
כל שינוי פירושו למצוא את המקום הנכון בתוכו, ידנית. להוסיף הודעות לקובץ הזה היה כואב בלי קשר לכמה זה עולה להריץ. גם היום, עם כלי AI שקוראים קוד, קובץ יחיד בגודל כזה הוא מקום גרוע לעבוד בו.
מה אני עושה אחרת היום
שני כללים יצאו מ־SkillSwap. הראשון: לפרק הכול למודולים, ולהחליט על האורך המקסימלי של קובץ לפני שהפרויקט מתחיל, לא אחרי שהוא גדל. לכל מה שאני בונה היום יש מגבלה כזו, ובדיקה חוסמת את ה־commit כשקובץ עובר אותה.
השני: עלות ההרצה היא חלק מהתכנון, וצריך לקרוא אותה לפני השורה הראשונה, לא לגלות אותה אחרי המשתמשים הראשונים. כשבניתי אחר כך את 1 vs 100, חידון חי שבו אולם הרצאות שלם עונה בבת אחת, הוא רץ על התוכנית החינמית של Cloudflare: Durable Object אחד לכל חדר, הודעות יוצאות בחינם, וחיבורים רדומים שלא עולים כלום.