הבלוג של ינון פרק

טיפים קצרים וחדשות למתכנתים

למה זה טוב?

06/03/2018

שאלה שחוזרת בקורסים על טכנולוגיה היא ״למה זה טוב?״ או ״במה הטכנולוגיה הזו טובה יותר מהשניה?״. במה Python טובה יותר מ perl ? במה לינוקס טובה יותר מ Windows? במה React טובה יותר מ Angular? ברוב המקרים זאת השאלה הלא נכונה והיא באה מהמקום הלא נכון.

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

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

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

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

גלגלי עזר

05/03/2018

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

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

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

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

דרוש כוכב

04/03/2018

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

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

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

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

מקווה שתהנו. ינון.

בואו נכתוב משחק איקס עיגול ב Elixir

25/02/2018

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

המשך קריאה

גם בריאקט: לא תמיד קל להגיד לילדים מה לעשות

שתי צורות של תקשורת בריאקט מאוד ברורות מהתיעוד: הראשונה היא העברת מידע מהורה לילד באמצעות Properties, והשניה היא שליחת פקודות מילד להורה באמצעות העברת Callback בתור Property. פוסט זה יעסוק בבעיה שלישית שפחות מדברים עליה: איך לשלוח פקודה מהורה לילד.

המשך קריאה

גיט: איך לבטל תיקון ישן אחרי שהבנת שזה לא היה רעיון טוב

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

המשך קריאה

סיור מהיר בשפת Ruby

21/01/2018

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

המשך קריאה

שאלות מראיונות עבודה: טיפוס מדרגות

14/01/2018

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

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

המשך קריאה