שני סוגים של טכנולוגיות שקשה ללמוד (ולמה חשוב לדעת להבדיל ביניהם)
כמתכנתים אנחנו שומעים כל הזמן על טכנולוגיות חדשות. את חלקן קל מאוד ללמוד ולהבין, אבל יש גם לא מעט שנראות ממש מייאשות ממבט ראשון. זה לא אומר שצריך לברוח, אבל כן חשוב להבין מאיפה הקושי נובע.
1. יש דברים מורכבים
הסיבה הראשונה שטכנולוגיה מסוימת תהיה קשה ללמידה היא שהיא מתבססת על עקרונות או רעיונות שאתם פשוט לא מכירים. מתכנתים רבים מתקשים בנושא Pointers כשלומדים שפת C, כי נושא זה בנוי על עולם מושגים וטכניקה שונים ממה שהופיע לפניו. בעולם ה Web התחזקה בשנים האחרונות הפרדיגמה של תכנות פוקנציונאלי ואם אתם לא מכירים אותה יהיה לכם קשה להבין את React ועוד יותר מזה את Redux.
כשאתם באים ללמוד משהו חדש וקוראים את אותו משפט 5 פעמים ועדיין לא בטוחים איך ליישם את מה שעכשיו קראתם אתם כנראה בקטגוריה הזאת. אלה דברים שלמרות מורכבותם כדאי מאוד ללמוד אותם, כי הם יקנו לכם מיומנויות חדשות שיעזרו בלמידת טכנולוגיות חדשות נוספות גם בעתיד.
2. ויש דברים עמוסים
יש שפות תכנות עמוסות יותר מאחרות. שפת ++C היא דוגמא קלאסית לשפה שהשתבשה: היא מורכבת מכמעט 4 שפות במקביל שלא תמיד יש קשר ביניהן. ללמוד ++C זה קשה כי לכל מילה יש הרבה מאוד משמעויות, ויש הרבה מאוד סימנים.
בעולם ה Web ספריית Angular מורכבת מהרבה מאוד ממשקים שונים וכוללת הרבה דרכים שונות לפתור בעיות, מה שמוביל לקושי ללמוד כתוצאה משטח פנים רחב.
כשאתם באים ללמוד משהו חדש ומרגישים שיש הרבה מאוד מה לקרוא, אבל כל פרק שאתם קוראים אתם מצליחים ליישם די מהר אתם כנראה בקטגוריה הזאת. כאן עיקר מאמץ הלימוד מושקע בטכנולוגיה ספציפית, ולכן צריך לשאול את עצמכם אם היא שווה את זה.
התסכול בטכנולוגיות כאלה מגיע שהטכנולוגיה נעלמת ואתם נשארים רק עם הזכרונות. אנגולר1 בעולם ה Web, ו EJB בעולם ה Java הן שתי דוגמאות לתופעה זו. אני עדיין זוכר איך לכתוב אפליקציות ל Symbian, לא שמישהו עוד זוכר את מערכת ההפעלה ההיא.
למרות הנאמר יש סיבות טובות כן ללמוד טכנולוגיות כאלה, בין השאר כי טכנולוגיות לא נעלמות כל כך בקלות (++C), או שטכנולוגיות אלו יעזרו לכם למצוא עבודה טובה יותר (אנגולר2) או שהן יעזרו לכם לכתוב יישומים מהר יותר (ריילס).