השבוע אני הולך לדבר על משהו קצת שונה. הטור הזה נפתח כדי לשתף דברים, גם ידע וגם חוויות אישיות שקורות לי ומחשבות שיש לי תוך כדי למידת תכנות. היום אני רוצה לדבר על החשיבות שיש לפרוייקטים שאנחנו מסיימים, ועל היכולת לסיים דברים בכללי.
אני לא יודע איפה כל אחד מכם נמצא כרגע מבחינת תכנות. אני בטוח שיש כאלה שיודעים פה הרבה יותר ממני, ויש גם כאלה שיודעים פחות. זה לא משנה איפה כל אחד מאיתנו נמצא כרגע מבחינת הידע שלו. מה שכן משנה זה שאנחנו מנצלים את הידע שלנו כדי לעשות דברים מההתחלה ועד הסוף. אני זוכר לפני כמה שנים כש – GameMaker Studio היה Game Maker 8.1 וניסיתי לבנות משחק משלי. מי לא רצה אי פעם לבנות משחק משלו, זה אחד המגניבים. מה שקרה זה שנתקלתי בבעיה שהיתה לי, וניסיתי במשך זמן קצר לפתור אותה אך ללא הצלחה. לאחר שלא הצלחתי החלטתי לעזוב את כל הנושא של בניית משחקים.
לפני שנתיים שוב ניסיתי לפתח משחק ב Game Maker. אני כבר לא זוכר אם הוא כבר נהפך ל GameMaker Studio או לא אבל התוצאה היתה אותה תוצאה – נתקלתי בבעיה, ניסיתי לפתור אותה ובסוף פשוט וויתרתי. היתה לי בעיה בלסיים מה שהתחלתי כי נתקלתי בקושי במהלך הדרך. שאלתי את עצמי המון פעמים למה לעזאזל עזבתי את זה? למה אני לא מצליח ללכת עם זה עד הסוף? זה הרג אותי מבפנים הקטע הזה.
לכולנו יש קשיים, לא רק במשחקים שאנחנו מנסים ליצור או בתוכנות שאנחנו מתכנתים, אלא בחיי היום יום בכללי אנחנו המון פעמים לוקחים החלטה כלשהי ואז אנחנו מוותרים עליה די מהר. דבר זה הוא בעייתי מאוד, הוא גורם לנו לא לעמוד במילה של עצמינו. צריך לדעת לקחת החלטות וליישם אותם, וזה מה שהחלטתי לעשות. התחלתי לחשוב על פיתרון לבעיה הזאת.
הפיתרון היחידי שהצלחתי למצוא לבעיה הזאת הוא לחלק את הכל לשלבים. הבנתי שאני לא אוכל ללכת ישר לרעיון הגדול והמפציץ שיש לי לתוכנה שתשנה להמון אנשים את החיים (יש רעיון כזה אגב), כי להציב מראש את המטרה הענקית הזאת מולי יגרום לי להתקפל ברגע הראשון כשמשהו לא יסתדר, מכיוון שאם דבר קטן כבר לא מסתדר לי אז איך אוכל להצליח להגשים את החזון הגדול שלי?. כשרוצים לעשות משהו גדול צריך לחלק אותו לחלקים קטנים. זוהי הדרך היחידה להתמודד עם פרוייקטים גדולים. אפשר המון פעמים לראות את זה בתכנות – המון פעמים מתכנתים כותבים פונקציה שעושה משהו קטן ואז מייבאים אותה אל המחלקה הראשית ששם כל התוכנה בכללותה פועלת.
נקודה נוספת שהבנתי לאחר זמן מה היא שכמו שאת היעד הגדול הייתי צריך לחלק ליעדים קטנים יותר, הקשורים לאותו היעד, כך הייתי צריך מראש להציב לעצמי פרוייקט קטן שיאנו קשור ליעד שתמיד חלמתי עליו, אך הוא הכרחי כדי שאלמד ואקבל ניסיון הכרחי בלהתחיל ולסיים פרוייקט שיעבוד מההתחלה ועד הסוף. ההרגשה כשיש לך פרוייקט גמור ביד שאתה יכול להריץ אותו על המחשב או על הפלאפון ולהראות אותו לאנשים אחרים היא באמת קשה לתיאור. כך זה לפחות אצלי.
לפני חודשיים, פחות או יותר, קיבלתי על עצמי החלטה ללמוד את שפת התכנות python. הפעם הגעתי מראש עם כל המסקנות שקיבלתי כבר מהדברים שהתחלתי ואף פעם לא סיימתי בעבר. הבטחתי לעצמי שאני אלמד את השפה ואתכנת בה ותוך כדי אמשיך ללמוד עוד. לאחר שלמדתי את הבסיס של השפה החלטתי לעבור לממשק גרפי ולעבוד על פרוייקט קטן כדי שבאמת אצליח לבנות משהו מההתחלה ועד הסוף. לדעתי זה הכרחי לאין שיעור מדי פעם לעשות פרוייקט קטן שמשלב את הדברים החדשים שלמדנו כדי באמת לקבל את הסיפוק מהידע שצברנו. הפרוייקט שהתחלתי היה לבנות מחשבון עם ממשק גרפי, ובקרוב מאוד אני מסיים אותו. אני יודע שלחלק מהאנשים שיותר מתקדמים בתכנות זה יראה דבר ממש של מתחילים אבל האמת היא שלא אכפת לי. כי אני לקחתי על עצמי פרוייקט, ואני עומד לסיים אותו. כל יום אני מוסיף לו עוד ומשפר אותו ומתקן דברים ובסוף יש פרוייקט גמור שאני יכול להציג לאנשים אחרים, ויותר חשוב, אני יכול להציג אותו לעצמי כדי שאוכל לקבל את המוטיבציה להמשיך הלאה למטרות הבאות שלי.
אז זה הטור שלי השבוע, סגנון קצת שונה מבדרך כלל אבל גם זה חלק ממה שיכנס בטור הזה. אחרי הכל, זה היומן שלי 🙂
נתראה בשבוע הבא.