פורסם ב כלים לחיים קלים

סוף עידן הליטקוד? איך מכשירות ג׳וניוריות בעידן ה-AI

אחת השאלות הבוערות על סדר היום של תעשיית ההייטק כרגע

היא איך אנחנו מכשירות את מתכנתות העתיד? 

בעשור האחרון מקומן של ג׳וניוריות בעולם התוכנה היה מאוד ברור – הן כתבו קוד פשוט, פתרו בעיות קטנות, ועשו עבודה חזרתית וקצת שחורה. זה היה די מתיש (אני בתחילת דרכי כתבתי אינטגרציות ל-Scraping של אפליקציות צד שלישי במשך שנה וחצי מהחיים שלי) אבל זה היה אפקטיבי. לעשות משימות קטנות ולא מסובכות הייתה דרך טובה להשתפשף, לצבור נסיון ולהביא ערך לצוות בזמן שלמדת לעשות דברים מסובכים יותר – ארכיטקטורה, אינטגרציה בין מערכות, אופטימיזציה של סקייל ועוד…

בהתאם – ראיונות עבודה לג׳וניוריות בעשור האחרון אופיינו בתרגילי ליטקוד – פתרון אלגוריתמים קצרים, ברמת קושי משתנה.
הראיונות האלה הדגימו – 

  1. את היכולת שלך לכתוב קוד נקי ומסודר
  2. את היכולת שלך לשבת במשך שבועות ולעשות את העבודה השחורה של לפתור המון תרגילי ליטקוד בבית
  3. את ההיכרות שלך עם כמות גדולה של תבניות קוד ומבני נתונים.

אבל בשלוש השנים האחרונות, הבינה המלאכותית נכנסה לחיינו ושינתה לחלוטין את הדרך בה אנחנו כותבות קוד. הרבה ממה שג׳ונריות עשו בעבר כלים כגון קלוד יודעים לעשות יותר טוב ויותר מהר. כשאני חושבת על כל האינטגרציות שכתבתי, על כל הפונקציות הפשוטות שמעלות ומורידות קבצים מ-S3, על כל הקוד שמפרסר קבצים מסוגים שונים… המון המון עבודה שחורה שהיום אפילו לא הייתי שוקלת לכתוב בעצמי. היום פשוט הייתי מסבירה לקלוד מה אני רוצה ומקבלת קוד מושלם ונקי תוך דקה (ולאחר מכן כמובן מג׳נרטת גם טסטים, מדייקת אותם ועושה איטרציות על הקוד – כי זו הדרך הנכונה לעבוד עם כלי בינה מלאכותית).

אז מה קורה עכשיו?

זה מה שהתעשייה שואלת את עצמה.

ראשית – מה הטעם לבחון מתכנתות על ליטקוד כשבינה מלאכותית יכולה לפתור את התרגילים האלו הרבה יותר מהר וטוב מהן. שנית – אחרי שכבר שכרנו ג׳וניורית, איזה עבודה ניתן לה לעשות? הרי זה די טיפשי להכריח מתכנתות לעבוד בלי בינה מלאכותית שהיא כבר חלק יומיומי מהעבודה של מתכנתות סיניוריות, רק כדי שילמדו באותו האופן שאנחנו למדנו. ומעבר לכך שזה לא הגיוני – זה לא מכין אותן לאיך שהעבודה שלהן באמת תראה, ולא מאמן אותן על הדברים הנכונים.

מצד שני – זה שיש לנו עכשיו בינה מלאכותית לא אומר שכל מי שיש לו גישה לקלוד הוא מתכנת סיניור (סליחה אמסטרדמסקי). השלב שבו את מתכנתת ג׳וניורית שלומדת את העבודה הוא עדיין קריטי, הוא פשוט צריך להיראות קצת אחרת.

כתיבת קוד עם בינה מלאכותית בלבד על ידי אנשים שאינם מתכנתים מנוסים (a.k.a vibe coding) היא דרך מצוינת ליצור המון חובות טכניים, קוד גרוע ומסורבל, ותוכנות איטיות ומלאות חורי אבטחה. זה לא כי בינה מלאכותית לא יודעת לכתוב קוד טוב, וזה לאו דווקא מצב שלא ישתפר בעתיד – אבל זה המצב כרגע.

בינה מלאכותית מצטיינת בכתיבת קוד בהיקף מוגבל כשנותנים לה תכנון טוב, דגשים נכונים, ו-best practices להשתמש בהם. היא משתפרת במיוחד כשנותנים לה דוגמאות ספציפיות לחקות את הסגנון שלהן, ומנחים אותה להשתמש במתודות ספציפיות קיימות (אחרת יש לה נטייה לכתוב את הכל מאפס, כי זה כל כך קל ומהיר).

אם סתם תגידו לבינה מלאכותית לכתוב פיצ׳ר או לפתור בעיה בלי הכוונות, סביר מאוד שהיא תפתור אותה – אבל בדרך גרועה ועם המון קוד מיותר.

הסיבה שנראה שבינה מלאכותית היא כל כך טובה בפתרון בעיות ליטקוד, זה לא בגלל שהיא באמת משתמשת בלוגיקה ואלגוריתמיקה – אלא משום שהאינטרנט מלא בפתרונות של בעיות מהסוג הזה. לא תהיה בעיה שתוכלו לבקש ממנה לפתור שלא הייתה וריאציה שלה במאגר הבעיות שהיא התאמנה עליהן.

הנה דוגמא קטנה שתזכיר לנו כמה שבינה מלאכותית סובלת מחוסר בהגיון בריא – שאלתי את ChatGPT אם עדיף לנהוג או ללכת ברגל לשטיפת מכוניות שנמצאת 100 מטר מהבית והוא המליץ במלוא הרצינות ללכת ברגל.

כן חשוב לציין שהמודול החכם ביותר של קלוד – אופוס 4.6 דווקא כן הצליח לענות על השאלה שלי בהיגיון. מצד שני, לקחתי את השאלה הזו מסרטון שראיתי ולא חשבתי עליה בעצמי, אז יכול להיות שגם הוא כבר ראה אותה.

אז בהינתן כל מה שאנחנו יודעות על החוזקות של בינה מלאכותית (כתיבת קוד נקי ומהיר) והחוזקות של בנות אדם (הגיון בריא, הסקת מסקנות, ראייה מערכתית) – איך התעשייה צריכה להשתנות על מנת לטפח את הג׳וניוריות של ימינו שיהיו הסיניורית של העתיד?

חשוב לזכור שמפתחות הן עדיין אלה שמתכננות את המערכות – מקומפוננטות קטנות ועד מערכות ענק. אגב, בינה מלאכותית בהחלט יכולה לעזור גם בשלב התכנון, אבל עדיין צריכה להיות יד אנושית שמכווינה אותה – שואלת את השאלות הנכונות, מחפשת נקודות תורפה, מפעילה הגיון ורותמת את הכוח של הבינה.
המסקנה היא שאנחנו צריכות לטפח ולחזק בדיוק את התכונות האלה

איך ממשיכות הלאה?

אני חושבת שמה חשוב להתרכז בו היום זה תהליך הדיזיין של קומפוננטות פשוטות. בעבר תמיד הייתה הפרדה מאוד חזקה בין ״קוד״ – שזה מה שאת עושה כג׳וניורית, ו״דיזיין״ – שזה מה שאת עושה כסיניורית. התפיסה הייתה שפונקציות ורכיבים קטנים במערכת פשוט כותבות, בלי ממש לתכנן, ואילו פיצ׳רים ומערכות גדולות הם אלו שדורשים ״דיזיין״.
ההבדל הזה נוכח גם בראיונות עבודה, ראיונות לתפקיד ג׳וניור, ואפילו תפקידי מיד בדרך כלל כוללים ראיונות קידוד בלבד, ורק ראיונות לסיניוריות ומעלה כוללים ראיונות דיזיין.

לדעתי, הגיע הזמן שנביא את מושג התכנון לעבודה של ג׳וניוריות. כתעשייה, אנחנו צריכות להכיר בכך שגם רכיבים פשוטים יחסית דורשים תכנון חכם – כדי שלא נסיים עם המון קוד מחורבן שטכנית עושה את העבודה, אבל במחיר גבוה בהרבה ממה שאנחנו רוצות לשלם. כמו שלפני 10 שנים אף אחד לא דרש ממך לכתוב קוד אסמבלי בראיון עבודה – כי היה ברור ששפות עיליות עושות את זה הרבה יותר טוב ממך – ברור שבעוד 10 שנים אף אף אחד לא יבקש ממך לכתוב קוד פייתון בראיון עבודה, השאלה היא רק כמה זמן נבזבז בדרך לשם.

כבר לפני שנתיים בערך כשעוד הייתה טוויטר (הלוואי שהייתי מאתרת את הציוץ הזה עכשיו, זה היה כל כך מגניב) הצעתי שראיונות העבודה של העתיד יעשו ביחד עם בינה מלאכותית בכמה אופנים – 

  1. המראויינת תקבל בעיה מורכבת, ותשתמש בבינה כדי לפרק אותה, לתכנן פתרון, לכתוב קומפוננטות ובדיקות שבאמת יוכיחו שהפתרון שלה עובד.
    מכיוון שהבינה כל כך מהירה אפשר יהיה באמת להגיע לפתרון עובד ומתקמפל בזמן קצר של ראיון – וכיוון שהבעיה קשה המראיינות עדיין יזכו לראות את דרך החשיבה של המרואיינת, ואת דרך העבודה שלה.
  2. המרואיינת תקבל קוד שבינה מלאכותית כתבה ותחפש את הבעיות בו ותציע שיפורים – זה הרבה ממה שאני עושה כרגע ביומיום שלי כשאני עובדת עם קלוד; איטרציות של שיפורים ותיקונים.

לסיום הפוסט, אני רוצה לפנות למתכנתות הג׳וניוריות שקוראות אותי, ונאלצות להתמודד די הרבה עם השאלה מה הן יעשו כשבינה מלאכותית תחליף את כולנו. אני מכירה בעובדה שמאוד מאוד קשה לג׳וניוריות למצוא עכשיו עבודה, יותר קשה מאי פעם, כי אנחנו בתקופה של חוסר וודאות. התעשייה לא יודעת מה לעשות עם ג׳וניורים וג׳וניריות. איך לראיין, איך להעריך ואיך להעסיק. יש גם ניסיון כרגע של מעסיקים לחסוך כמה שיותר ולנסות לייצר עתיד שבו הם יוכלו להחזיק מוצרים שלמים עם בינה מלאכותית בלבד ובלי מתכנתות לשלם להן. זו תקופה מחורבנת, אבל היא תשתפר.

לפני כחודשיים הייתה לי הזכות להשתתף כמנטורית בהקאתון של קווין בי.
בהקאתון קיבלתי צוות של ג׳וניוריות מדהימות וחכמות ועבדתי איתן במשך כחודש וחצי + יום אחד אינטנסיבי. בזמן הזה זכיתי לראות מקרוב איך הג׳וניוריות של היום באמת עובדות עם בינה מלאכותית, ולעזור לכוון אותן לדרך הנכונה לעבוד איתה, איך לדבג קוד, ואיך להאכיל אותה במשימות קטנות ומוגדרות היטב כדי לקבל את התוצאות הכי טובות.

הדבר שהכי שימח אותי לראות הוא האהבה של המתכנתות בקבוצה שלי למקצוע. אפשר היה לראות בצורה שבה הן עבדו שהן רוצות להיכנס לתעשייה כי הן באמת נהנות מפיתוח, ואני חושבת שזו השורה התחתונה של הפוסט הזה.

בעשור האחרון של פריחה משוגעת בהייטק, הרבה מאוד אנשים הלכו ללמוד תכנות כדי להיכנס במהירות לתעשייה מאוד רווחית. זו הייתה הזדמנות טובה, ואני לא מזלזלת באף אחת שבחרה לעשות את זה. אנחנו עובדות כדי להרוויח כסף, ואני לא הולכת להתווכח על זה. אבל, התוצאה הייתה שגם הרבה אנשים שלא כל כך נהנו או התעניינו בתכנות נכנסו לתעשייה. אני חושבת שהשנים הקרובות יעשו את ההפך – סף הכניסה יעלה מאוד, הג׳וניוריות שימצאו עבודה יהיו אלה שיתאמנו וידעו היטב כיצד להשתמש בבינה המלאכותית כדי להוציא תוצרים טובים, לעשות תכנון נכון של רכיבים ולייצר פונקציות יעילות ושימושיות.

אז אם אתן באמת נהנות מתכנות, אל תתייאשו. זו תקופה מדהימה, המהירות והקלות שבהן אנחנו יכולות להפיק מוצרים לא דומה לשום דבר שחווינו אי פעם – אם תזכרו שאתן היישות החושבת והבינה היא רק היישות המבצעת, השיתוף פעולה ביניכן יהיה תמיד פורה.

גשו למחשב הקרוב למקום ישיבתכן, פתחו לכן קלוד (בבקשה לא ChatGPT), תחפשו בעיה מעניינת באינטרנט, ותתחילו לתכנן אותה, ביחד עם קלוד.

איך בוחרות בעיה מעניינת?
נסו לתכנן אפליקציה לניהול תקציב, תפריט או סדר יום. או אפליקציה שמחלקת את החשבון בין חברים במסעדה מצילום של הצ׳ק (תמיד רציתי כזו). או כל בעיה אחרת מחיי היום יום שלכן, אתן יכולות אפילו לחקות אפליקציה שכבר קיימת, אבל אל תנסו לבנות מחדש את פייסבוק, טוויטר או אובר, כי קיימים הרבה אתרים שמסבירים את הדיזיין שלהן, ואתן תתקעו כאן באותה הבעיה שקיימת עם ליטקוד.
אם אתן מעוניינות ללמוד ולהתכונן לראיונות System Design, זה האתר האהוב עליי שהשתמשתי בו לכל הראיונות שלי בשנים האחרונות – http://www.hellointerview.com

כשאתן מתחילות לעבוד תקפידו על כל השלבים – הגדרה מסודרת של הבעיה, תכנון פתרון היי-לבל. חישבו על בדיקות ומקרי קצה שבעזרתם תוכלו לבדוק אם הפתרון שלכן עובד – איך תבדקו כל פונקציה בנפרד, ואיך תבדקו שכל המוצר עובד יחד?
כי כן, לפתור בעיה אחת מליטקוד (אפילו קשה) יקח לקלוד 30 שניות. אבל לפתור בעיה מורכבת בצורה נכונה, כנראה יקח לשניכם יחד שעה ומעלה – וזה יפעיל את השרירים עליהן אתן צריכות לעבוד כרגע.


ואם כבר הגעתן לכאן – אתן יודעות שגונג משקיעות המון בעבודה נכונה עם בינה מלאכותית? אנחנו לא מגייסות ג׳וניוריות כרגע, אבל כבר היה גיוס ג׳וניוריות השנה, ויהיו עוד בעתיד. בינתיים אנחנו מגייסות סיניוריות למגוון תפקידים, ואתן מוזמנות להגיש דרכי!

השאר תגובה