חסר מוטיבציה לתכנת?

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

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

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

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

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

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

אני לא בעד מלחמות פנימיות, אז קיבלתי את ההערה הזו ובמקום לומר "אבל זה חשוב", "אבל אמרת שתעשה"… פשוט שאלתי את עצמי שאלה פשוטה:

"מה יהפוך את זה למעניין עבורך?"

הו.

האמת שהתשובה הגיעה ממש תוך 2 דק'.

ועל התשובה שקיבלתי אני רוצה לכתוב, ולשתף את התהליך של מה שאני הולך ליצור עכשיו.

קיבלתי מוטיבציה ולכן הנה אני כותב!


פריט מתוך הרשימה

באתר יש המון סקשנים (חלקים).

אחת המשימות ברשימה שכתבתי, זה לתכנת את סקשן ה־'חידה', שנראה כך:

סקשן 'חידה' – שבו אני מציג כמה עיצובים שלי ונותן למבקרים לענות על חידה

רעיונית? אני מת על הסקשן הזה!

תכנותית? אפילו כבר כתבתי חלקים גדולים ממנו והנפשתי את הכפתורים בצורה מיוחדת, הנה תראו:

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

"איזו מורכבות? כולה לשים תמונות."

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

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

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

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

אז אני לא אוותר על המורכבות ובמקום זאת, אפרט מה היא. (אולי הפירוט הזה יהווה עבורי סוג של צ'קליסט).

רק לפני שארחיב איזה מורכבויות יש, אני אציג שאחד דברים החשובים זה שזה צריך להיות רספונסיבי (מותאם למובייל):

אותו עיצוב סקשן 'חידה' רק בגירסה מותאמת למסך מובייל

עכשיו שקיבלתם קצת מושג ויזואלי על הסקשן המדובר,

הנה רשימת המשאלות שלי:

  • ליצור סליידר מגניב ומיוחד עבור דף הפרטים של סדנת הלטרינג.
  • חשוב לי שהסליידר יהיה אינטרקטיבי. כלומר לתת למשתמש 'להשתתף' בהזזות של התמונות ושיהיו מונפשות בצורה אסתטית וזורמת. וזה מוביל אולי לכל אלה (שהם פרטים טכניים של ההתנהגות, אבל חשובים):
  • אני רוצה שתהיה אפשרות לדפדף ימינה ושמאל כדי לראות את העיצובים.
    • במובייל: פעולת ההזזה תהיה על ידי גרירת התמונות לצדדים.
    • במחשב: גרירה עם העכבר לצדדים.
    • במקבוק (במחשב הנייד): גרירה עם ה touchpad עם 2 האצבעות ימינה ושמאלה (גלילה).
  • חשוב לי שיהיה ניגון אוטומטי – התמונות כבר יתחילו לרוץ על המסך ימינה ושמאלה, כדי שהמשתמש ידע שיש עוד תמונות ושהוא יכול לגרור.
    • במובייל: שפשוט יהיה ניגון אוטומטי והתמונות יזוזו מימין לשמאל (כמו marquee).
    • במחשב: חשבתי על רעיון מתוחכם יותר, שהוא marquee אינטרקטיבי!
      • כשהעכבר במרכז המסך, התמונות 'יעמדו' ולא יזוזו.
      • כשהעכבר ממוקם 40% משמאל המסך, התמונות שמשמאל יתחילו להיחשף (לנוע לצד ימין).
      • ככל שהעכבר מתרחק מהמרכז ומגיע לקצוות המסך, קצב ההזזה יגדל.
  • אני רוצה שתהיה גלילה אינסופית (לולאה) – כלומר שאחרי הפריט האחרון, יוצגו שוב הפריטים, וזה יתן למשתמש תחושה של '"ש פה הרבה דברים" וגם ימנע מצב מעצבן שכשמגיעים לסוף אז זה נתקע או לא זורם, או משהו כזה.
  • התמונות יהיו באותו הגובה, אבל פוטנציאלית עם רוחב משתנה בין תמונה לתמונה (תמונות רחבות ותמונות צרות).
  • כל סלייד (שהוא תמונה) יכול גם להיות רק צבע רקע או מקטע טקסט, אם רוצים. בגדול שיהיה DIV ריק והמתכנת יחליט מה לשים שם. (בדף הנחיתה אני אשים ברובם הסליידים תמונה פשוטה, אבל בחלק אשים קוביה עם צבע רגע שבמרכזו יש גיף זז).
  • כל הפיצ'רים הנ"ל צריכים לעבוד אחד עם השני בצורה אסתטית באנימציה, שלא יהיו התנגשויות. ויהיו המון התנגשויות. למשל:
    • כשיש מצב autoplay (ניגון אוטומטי) ובנוסף יש התחלה של גרירה (קליק חזק עם האצבע), התמונות צריכות לקפוא במקום. אבל כשהגרירה מפסיקה (מפסיקים לאחוז את הקליק), התמונות צריכות לחזור 'להתנגן' ולנוע לצדדים.

אוקיי. אז חלום יש לי.

התפקיד של אלרון החולם הסתיים.


עכשיו תפקיד של אלרון המתכנת נכנס לתמונה.

הוא שואל "האם מישהו עשה משהו כזה בעבר, כדי שאוכל להשתמש בקוד שלו?"

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

בקיצור: מה שאני רוצה, לא קיים.

אבל זה לא מה שימנע ממני! כי מי שמכיר אותי יודע שזו הגישה שלי לחיים:

"הגישה שלי לחיים: אם זה לא קיים תיצור את זה" – לטרינג מאת הפונטון
"הגישה שלי לחיים: אם זה לא קיים תיצור את זה" – לטרינג מאת הפונטון

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

אז יופי.

עיצוב יש לי.

הבנה של מה לתכנת יש לי.

אבל משהו חסר.

מוטיבציה.

אומנם זה מגניב, אבל למה שאעבוד קשה?


כשאני בנסיעות מתות, אני לפעמים מקשיב ל־eBooks נחמדים.

יש משפט ששמעתי מתוך ספר שנקרא ReWork שמאוד אהבתי:

"מוצר אחד תמיד מוליד מוצר אחר"

מעניין, לא?

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

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

ואולי עוד מישהו כמוני, חיפש דבר כזה בגוגל אבל לא מצא?

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

זה בדיוק מה שהניף לי רוח במפרשים.

הבנתי משהו:

אם אין מוטיבציה לפתור בעיה, צריך להקטין או להגדיל אותה.


נכון המשפט "מוצר אחד תמיד מוליד מוצר אחר"?

אז אני מעצב ובונה דף מכירה – זה המוצר.

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

המוצר האחר שנולד, הוא זה שנתן לי מוטיבציה.

ואז חשבתי, היי, אני צריך לתעד את זה!

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

וזה בדיוק מה שאני עושה עכשיו.

אז עכשיו שסיימתי לתאר את מה שעבר לי במוח, אגש לעשייה.


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

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

עכשיו, כדי ליצור ספריה, צריך: אחד- ליצור אותה. שתיים- לפבלש אותה (מלשון publish, להפוך לציבורית).

והאמת היא שאף פעם לא יצרתי ספריה ב־npm (אתר עם כל מני ספריות), למרות שזה תמיד היה מסתורי בעיניי ומסקרן איך עושים את זה.

אז יש! איזה מצחיק?

אני בכלל לא בונה סדנה, ובכלל לא מתכנת דף נחיתה, ובכלל לא יוצר סליידר, אלא אני לומד איך ליצור ספריה ב־NPM.

חשיבה מסורבלת למדי, אבל זה מוזר שאני מתרגש מזה הרבה יותר ממה שהייתי בהתחלה?

נראה לי שזה מוביל אותי להבנה נוספת על עצמי.

אני מעדיף לעבוד קשה ושהדרך תהיה מעניינת עבורי, מאשר לעבוד בקלות בלי שהדרך תהיה מעניינת.

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


לסיכום:

לא הייתה לי מוטיבציה לתכנת.

"אם אין מוטיבציה לפתור בעיה, צריך להקטין או להגדיל אותה."

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

אבל הפעם בחרתי להגדיל את הבעיה ולהנות מהרבה תוצרי־לוואי:

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

אז אני אגש עכשיו ללמוד ולהבין איך עושים את זה, ביי בינתיים!

מאחל שתמצאו מוטיבציה בכל דבר שתעשו.

דברים שאני כותב

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

פוסט בהפתעה?