אחרי פסח הגיע - בואו נדבר על פרויקט תוכנה
האם פיתוח פרויקט תוכנה אישי הוא עדיין דרך מומלצת להתקדם בתור מפתחים?
תכף נרחיב על השאלה הזאת אבל לפני שאשכח, אם תסכימו איתי שהתשובה חיובית (ואני מקווה שתסכימו), ביוני הקרוב אני פותח קבוצה נוספת במסלול פיתוח הפרויקטים, בה תקבלו את המסגרת והכלים לבנות פרויקט תוכנה אישי שלכם ברמה גבוהה ועם שילוב כלי AI וכל מתודולוגיות הפיתוח העדכניות. אם יש לכם רעיון לפרויקט ואתם מחפשים הזדמנות להוציא אותו מהמגירה אני שלכם ביוני ויולי לתת את הדחיפה ולעזור בכל מה שאפשר. פרטים כאן:
https://www.tocode.co.il/mentoring
ועכשיו לפוסט.
1. האם פיתוח פרויקט אישי הוא עדיין הדרך להתקדם בתור מפתחים?
לשאלה הזאת תמיד היו טיעונים טובים לשני הצדדים. מצד אחד בעבודה על פרויקט אנחנו מתעסקים בהמון דברים: צריך גם לכתוב את ה Backend וגם את ה Frontend, גם להתאים למובייל וגם לדאוג לביצועים, גם לכתוב בדיקות וגם להקים תשתית CI/CD, גם להבין איך לכתוב בלי שיפרצו לכם למערכת וגם לכתוב קוד נכון שאפשר יהיה לשנות ולתחזק. איך אפשר למצוא זמן לדעת את כל זה וגם להתמקצע בתחום מסוים? ואם אני לא מתמקצע באף תחום איך אוכל לעבור ראיון עבודה?
מצד שני אנחנו יודעים שפיתוח תוכנה הוא תהליך הוליסטי. ה Backend משפיע על ה Frontend, הבדיקות משפיעות על התחזוקה, אבטחת המידע מושפעת מסגנון הכתיבה. מפתחים שלא מכירים את כל התמונה או שלא מצליחים לראות אותה יפספסו בנקודות קריטיות או שלא יבינו עד הסוף את הקוד שהם כותבים. יותר מזה, עם הכניסה של AI לתמונה אנחנו חוזרים לראות צוותי פיתוח של אחד, מפתח או מפתחת מובילים שנעזרים ב AI כדי לעשות עבודה של 5 אנשים. ההתמקצעות קיימת וקיבלה אופי אחר.
כניסת כלי AI לתמונה הוסיפה עוד נקודת מבט, במיוחד כשאנחנו חושבים על Vibe Coding. אני יכול היום בעזרת Prompt לייצר קוד של מערכת מלאה. כלים כמו Base44 ו Lovable וגם bolt ו v0 ורבים נוספים מעודדים אנשים בלי ידע בפיתוח לבנות מערכות, ופתאום כשאני מוסיף לקורות חיים פרויקט שבניתי זה לא מרשים אף אחד. מי יודע אם באמת כתבתי את זה לבד או שנתתי ל AI לעשות את רוב העבודה והפרויקט מלא באגים או מימושים חלקיים.
2. למה חשוב שיהיה לכם פרויקט אישי
הרעיון הראשון שכדאי לקחת כאן הוא שהתמקצעות היא לא לינארית ואין לה מדד אחד. הנה כמה דוגמאות למיומנויות שונות שמפתחים יכולים להשתפר בהן:
היכולת לקחת משימת פיתוח ולבצע אותה, כלומר לחזור עם קוד שעובד.
היכולת לראות מבנה של מערכת ולעבוד בתוך הכללים, כלומר לעדכן את הקוד בלי לשבור הנחות יסוד של המערכת.
היכולת לזהות אבסטרקציות וליצור אותן כדי לשפר את השפה של המערכת.
היכולת להבין טכנולוגיה חדשה.
היכולת לראות מספר פיתרונות של בעיה ולשקול יתרונות וחסרונות של כל גישה.
היכולת לראות קדימה ולזהות איך שינוי מסוים ישפיע על המערכת בעתיד או על חלקים אחרים במערכת.
היכולת להעריך נכון זמן והיקף עבודה על פיצ'ר מסוים.
היכולת לעמוד בזמנים גם על חשבון ביצוע פשרות, וההבנה איזה פשרות אפשר לבצע ועל מה אי אפשר להתפשר.
ומאחר והתמקצעות בפיתוח תוכנה מורכבת מהמון וקטורים שונים, יש גם המון דברים שאפשר לעשות כדי להתמקצע כמפתחי תוכנה. כל הפעילויות האלה חשובות ויעזרו לכם להיות מפתחים טובים יותר:
קריאת ספרי תיאוריה במדעי המחשב.
פיתרון תרגילים קטנים בטכנולוגיה שאתם לומדים.
פיתרון תרגילי אלגוריתמיקה או סיבוכיות.
תרומת קוד לפרויקט קוד פתוח (כולל כשהמתחזקים מתלוננים שהקוד שלכם לא מתאים וניהול כל הדיאלוג עד שה PR יתקבל).
שיפור ביצועים של מערכת קיימת.
זיהוי בעיות אבטחה בקוד שאתם כתבתם או שמישהו אחר כתב.
קריאת תיעוד של ספריה, או קורס מקצועי עליה.
הוספת פיצ'ר לפרויקט גדול, או תיקון באג בפרויקט כזה.
וכן גם פיתוח פרויקט עצמאי שלכם. פרויקט אישי שמבוצע טוב יכול להיות בסיס טוב לכל סוג התמקצעות שתבחרו - הוא יאפשר לכם ללמוד על אבטחת מידע, על ביצועים, על כתיבת קוד שניתן להרחבה, הוא יאפשר לכם לבעוט בקוד ולראות מה נשבר ואיך לכתוב קוד שיישבר פחות. הוא ייתן לכם מקום להתנסות על האלגוריתמים החדשים שלמדתם או על ספריות חדשות שגיליתם. זה דבר אחד ללמוד איך להקים פונקציית Lambda, וזה דבר הרבה יותר גדול כשפונקציית ה Lambda צריכה להתחבר עם מערכת גדולה שיש לה היגיון פנימי שאתם בונים. אותו דבר לגבי איחסון קבצים על S3, חיבור משתמשים, הטמעת שירות צד-שלישי או כל מנגנון אחר.
פרויקט אישי ומתוחזק הוא לא רק עוד דרך להתמקצע, הוא הבסיס עליו תוכלו לנסות טריקים חדשים בלי לדאוג ובלי לבקש רשות.
3. ומה לגבי קבלה לעבודה?
אנחנו נמצאים בתקופה משוגעת ואני מודה שקשה לדעת מה ילד יום. יש סיכוי שבשבועות או חודשים הקרובים הוספת דף פרופיל עם "פרויקטים" יהפוך לסטנדרט בכל קורות חיים וכל אחד פשוט יוסיף פרויקט קטן שהוא כתב ב base44 לקורות חיים, והרמה של הפרויקטים האוטומטיים האלה תהיה כל כך גבוהה שאי אפשר יהיה להבדיל בינם לבין פרויקט אמיתי.
אני לא יודע.
כרגע אנחנו עוד לא שם. נכון להיום כשאני מסתכל על קוד שנכתב על ידי Vibe Coding יש בו בעיות ואם הייתי צריך לבחון קוד כזה בקורות חיים מהר מאוד זה היה נראה לי חשוד. בשביל להפעיל היום AI ולקבל תוצאה של קוד ברמה גבוהה צריך להכיר את החומר המקצועי ברמה טובה, ולכן לדעתי זה לא מאוד משנה. מנהלי פיתוח שיקראו את הקוד של הפרויקט יבינו מה הרמה המקצועית של המפתח, גם אם הוא נעזר ב AI, ולמעשה אני חושב שרמה מקצועית נמוכה זה משהו שרואים אפילו יותר בבירור כשאנשים נעזרים ב AI.
לכן להערכתי פרויקט אישי ברמה גבוהה עדיין יכול לפתוח דלתות. בניגוד להערכה שלי על התמקצעות פה אני שם כוכבית בגלל אי הוודאות סביב העתיד.
4. מסלול ליווי לפיתוח פרויקטים
אז מה יהיה לנו ביוני-יולי? אלה עיקרי הדברים:
שלושה שבועות של איפיון פרויקט, סגירה טכנולוגית, כתיבת POC וכל המחקר שמסביב. הכל בהנחיה מלאה ועם פידבק מפורט על העבודה שלכם כדי להגיע לאיפיון הכי טוב שאפשר ולהיחשף לטכנולוגיות חדשות שאולי לא התנסיתם בהן עדיין.
חמישה שבועות של פיתוח לפי תוכנית מפורטת ואישית שאני אעזור לכם לבנות. התוכנית בנויה על יעדים שבועיים ויש לכם גמישות לעבוד בזמן שנוח לכם.
מפגש זום פעם בשבוע בו נראה נקודות מרכזיות מהפרויקט שלכם ומהפרויקטים של חברים לקבוצה, נדבר על אתגרים מרכזיים שעלו ואיך פתרנו אותם (הכל מוקלט).
שיעור שבועי על נושא משותף לכולם כמו ביצועים, אבטחת מידע, ארכיטקטורה, כלי AI ועוד.
אם כבר יש לכם רעיון לפרויקט יכולים לרשום אותו בדף הרישום כאן:
https://www.tocode.co.il/mentoring
אם אתם רוצים להשתתף אבל אין רעיון או שלא מספיק סגורים, או אפילו רוצים לשמוע עוד פרטים על המסלול - תשאירו לי הודעה ונתאם שיחת ייעוץ מסודרת.