מה לעשות כשהאפליקציה שבניתם עם בינה מלאכותית נשברת ב-2 בלילה (ואתם לא מתכנתים)
האפליקציה שלכם עבדה אתמול. עכשיו זה אמצע הלילה ומשהו לא בסדר. הנה ספר משחקים רגוע ולא-טכני למה באמת לעשות — בלי יכולת לקרוא קוד.
בניתם אפליקציה בלי לכתוב שורת קוד. היא עבדה כל השבוע. ואז משתמש שולח לכם הודעה ב-1:47 לפנות בוקר ואומר שכפתור ההרשמה לא עושה כלום, ואתם מתעוררים לטלפון שלכם זוהר על השידה.
אם מעולם לא נאלצתם לתקן אפליקציה חיה לפני כן, הרגע הזה יכול להרגיש נורא. אתם לא קוראים קוד. אתם לא יודעים מה “מסד הנתונים” באמת אומר. אתם לא בטוחים אם זה שבור-שבור או רק-מוזר, והאנשים שבדרך כלל היו עוזרים ישנים.
הנה ספר משחקים רגוע ומסודר למה לעשות כשאפליקציה שנבנתה עם בינה מלאכותית נשברת ואתם לא יכולים לכתוב קוד. רובו עוסק בלא להחמיר את המצב, וזה החלק שאף אחד לא מזהיר אתכם ממנו.
ראשית: אל תפרסו מחדש
יש כפתור איפשהו בכלי שלכם שאומר משהו כמו “פרסם שוב”, “פרוס מחדש”, או “שלח”. אתם עומדים לרצות ללחוץ עליו. אל תעשו זאת, עדיין.
ללחוץ פריסה מחדש על אפליקציה שבורה-למחצה יכול לנעול את המצב השבור, למחוק כל מידע ניפוי באגים שהיה מסביב, ולהקשות על כל אחד — כולל הכלי עצמו — להבין מה השתבש.
הצעד הראשון הוא תמיד להסתכל, לא לפעול. עדיין לא אישרתם מה שבור.
צעד 1 — שחזרו את הבעיה בעצמכם
פתחו את האפליקציה בחלון דפדפן חדש — מצב גלישה פרטי הוא הכי טוב, כי הוא מסיר כל התחברות או מטמון ישנים שעלולים לגרום לדברים להתנהג שונה אצלכם מאשר אצל המשתמש שלכם.
נסו לעשות בדיוק את הדבר שהמשתמש דיווח עליו. אם הוא אמר שכפתור ההרשמה לא עובד, נסו להירשם. אם הוא אמר שלוח הבקרה ריק, נסו להתחבר ולראות את לוח הבקרה.
אתם מחפשים אחד משלושה דברים:
- זה שבור לכולם. אתם נתקלים באותה בעיה. זה בעצם הסוג הכי קל לתקן כי הוא עקבי.
- זה עובד אצלכם. זה התרחיש הכי קשה, כי משהו במצב הספציפי של המשתמש (הדפדפן שלו, החשבון שלו, הנתונים שלו) הוא הבעיה.
- זה לסירוגין. זה עובד פעם אחת ונשבר בפעם הבאה. זה הכי מלחיץ אבל גם הכי אינפורמטיבי — זה בדרך כלל אומר שמשהו חורג מזמן (timeout) או נגמר לו משאב.
כתבו איזה מהשלושה ראיתם. תצטרכו את זה כשתבקשו עזרה.
צעד 2 — בדקו את הדברים החיצוניים המתבקשים לפני שאתם מאשימים את האפליקציה שלכם
מספר מפתיע של רגעי “האפליקציה שלי שבורה” אינם האפליקציה שלכם. לפני שאתם צוללים לתוך הכלי, בדקו:
- האם האינטרנט עצמו בסדר? פתחו כמה אתרים אחרים. אם ה-wifi שלכם תקול, האפליקציה שלכם אולי בסדר ואתם אולי השבורים.
- האם לכלי עצמו הייתה תקלה? לרוב הכלים יש עמוד סטטוס (חפשו את שם המוצר ועוד “status”). אם יש להם לילה רע, אתם לא צריכים להבין שום דבר אחר.
- האם אחד מהכלים המחוברים שלכם נפל? אם האפליקציה שלכם משתמשת ב-Stripe לתשלומים, בשירות מייל להתראות, או בשירות מסד נתונים לאחסון, לכל אחד מהם יכולה להיות תקלה. לכל אחד יש עמוד סטטוס משלו. בדקו את אלה שהאפליקציה שלכם תלויה בהם.
בערך פעם מתוך חמש, התשובה היא “זו לא באמת האפליקציה שלי”, ואתם יכולים לחזור לישון.
צעד 3 — הסתכלו על הודעת השגיאה, גם אם היא מפחידה אתכם
אם האפליקציה שלכם מציגה מסך עם טקסט עליו — אפילו טקסט שנראה כמו ג’יבריש — קראו אותו. צלמו מסך. במיוחד אם יש מחרוזת ארוכה של אותיות ומספרים (אנשים קוראים לזה “stack trace”; זה נראה כמו מרק אלפבית אבל זה הדבר הכי שימושי שיכול להיות לכם כשמבקשים עזרה).
לרוב הכלים יש גם מקום לראות שגיאות שקרו לאחרונה. זה יכול להיקרא Logs, Activity, Errors, או Console. פתחו את זה. אתם לא צריכים להבין את רוב מה שאתם רואים — אתם מחפשים את הטקסט האדום האחרון או השגיאה האחרונה, ואת הזמן שזה קרה. הזמן חשוב: שגיאה מבוקר אתמול כנראה אינה הסיבה שהמשתמש שלכם לא יכול היה להירשם הרגע.
העתיקו את השגיאה הזו. אתם הולכים להדביק אותה במקום מועיל בעוד דקה.
צעד 4 — שאלו את הכלי מה השתנה
זה הצעד שרוב הבונים הלא-טכניים מנצלים בחסר. פתחו את הצ’אט עם הכלי שלכם ואמרו, בשפה פשוטה:
“האפליקציה שלי שבורה. משתמשים לא יכולים להירשם — הכפתור לא עושה כלום. הנה השגיאה מהלוגים: [הדביקו אותה]. מה השתנה ב-24 השעות האחרונות, ומה יכול לגרום לזה?”
כלי טוב יגיד לכם איזה שינוי אחרון אחראי ככל הנראה. לפעמים תזהו את זה מיד (“אה, ביקשתי ממנו לעשות את הטופס יותר יפה אתמול וזה כנראה שבר את לוגיקת השליחה”). לפעמים זה יצביע על משהו שאתם לא זוכרים שנגעתם בו, וגם זה שימושי — זה אומר שמשהו אוטומטי השתנה, כמו כלי מחובר שמתעדכן.
אל תיתנו לכלי להתחיל לעשות תיקונים עדיין. אתם עדיין במצב אבחון. הדרך הכי נפוצה שראיתי אנשים מחמירים בעיה קטנה היא בלתת לבינה מלאכותית להתחיל “לתקן” דברים לפני שמישהו מבין מה שבור.
צעד 5 — החליטו אם לחזור אחורה (roll back)
כמעט כל כלי מאפשר לכם לחזור לגרסה מוקדמת יותר של האפליקציה שלכם. לפעמים זה נקרא “היסטוריה”, “גרסאות”, “checkpoints”, או “rollback”.
אם אתם זוכרים בבירור שעה או יום שבהם האפליקציה עבדה, לחזור לגרסה ההיא הוא הצעד הכי אמין. זה עולה לכם בכל שינוי שעשיתם בינתיים (שאולי בכלל לא רציתם יותר), ונותן לכם אפליקציה עובדת להתעורר אליה.
כלל טוב: אם הדבר השבור הוא משהו שמשתמשים עושים כל יום (הרשמה, התחברות, תשלום), חזרו אחורה קודם ותקנו קדימה אחר כך. עובד-אבל-מיושן מנצח שבור-ועדכני בכל פעם.
אם הדבר השבור הוא פיצ’ר שהוספתם היום שאף אחד עדיין לא תלוי בו, אתם יכולים להשאיר אותו שבור עד הבוקר ולתקן אותו עם ראש צלול.
צעד 6 — אם אתם חייבים לתת לכלי לתקן את זה
אם חזרה אחורה אינה אפשרית, או שהחלטתם שלא, אז תנו לכלי להציע תיקון. שני דברים לזכור בזמן שהוא עושה זאת:
קראו מה הוא מתכנן לשנות לפני שאתם מאשרים. לא תבינו את הכול, אבל אתם יכולים לזהות אם הוא עורך דבר אחד ממוקד או שכותב מחדש חצי אפליקציה. שינויים קטנים וממוקדים הרבה יותר בטוחים מאשר גורפים ב-2 בלילה.
בדקו את התיקון בדרך הכי משעממת שאפשר. אל תשאלו רק “זה תוקן?” ותסמכו על התשובה. באמת לכו לאפליקציה בעצמכם בחלון גלישה פרטי ועשו את הדבר שהיה שבור. אם התיקון עבד, הדבר השבור עכשיו עובד. אם לא, אל תקבלו את השינוי רק כי הכלי אמר שזה עבד.
צעד 7 — כתבו בחזרה למשתמש, גם אם לא תיקנתם
המשתמש ששלח לכם הודעה ב-1:47 לפנות בוקר לא מצפה שתהיו מחוברים. אבל אם אתם כן, תשובה קצרה חשובה יותר מתיקון:
“תודה שעדכנת אותי — אני מסתכל על זה ממש עכשיו. אשלח לך הודעה ברגע שזה יעבוד שוב.”
אם הוא משתמש משלם, ההודעה האחת הזו היא ההבדל בין שהוא יספר לאנשים שאתם מגיבים מהר לבין שיספר לאנשים שנעלמתם. התיקון יכול לחכות עד הבוקר. התשובה לא.
הלקח הגדול יותר: בנו את האפליקציה שלכם כאילו היא עלולה להישבר
אם מצאתם את זה מלחיץ, הצד החיובי הוא שהחוויה תעצב מחדש את האופן שבו אתם בונים. אחרי האירוע הראשון שלכם ב-2 בלילה, תתחילו לעשות דברים אחרת:
- תוסיפו בדיקת סטטוס. עמוד פשוט שאומר לכם אם החלקים החשובים של האפליקציה שלכם עובדים, כדי שלא תצטרכו להתחבר כדי לגלות.
- תשמרו גיבוי של נתוני המשתמשים. רוב הכלים ייצאו את הנתונים שלכם לבקשה. לעשות את זה פעם בשבוע לוקח 30 שניות ומציל אתכם במקרה הגרוע.
- תכתבו על מה האפליקציה שלכם תלויה. רשימה קצרה של כל כלי מחובר (תשלומים, מייל, מסד נתונים, אחסון), כך שכשמשהו נשבר ב-2 בלילה, יש לכם רשימת בדיקה במקום ניחושים.
- תשנו דבר אחד בכל פעם. כשאתם עושים 10 שינויים בבת אחת והאפליקציה נשברת, אין לכם מושג איזה שינוי שבר אותה. כשאתם עושים שינוי אחד בכל פעם, יש לכם.
אתם יכולים לבנות אפליקציה בלי קוד. אתם יכולים גם לשמור עליה רצה בלי להיות מתכנתים — אבל הכישורים המעורבים שונים מכישורי הבנייה. אתם לומדים אותם בעיקר בדרך הקשה, בדרך כלל בשעה לא נוחה.
החדשות הטובות: בכל פעם שזה קורה, זה נעשה פחות מפחיד. עד הפעם השלישית, זה מעצבן במקום מבעית. עד העשירית, זה פשוט יום שלישי.