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

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

לולאות באגים

24/06/2022

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

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

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

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

נקסט!

טיפים לגיוס מוצלח דרך upwork

23/06/2022

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

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

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

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

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

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

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

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

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

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

סיפור קצת מדכא על דגים ושינויים בקוד

22/06/2022

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

הם טועים.

קוד מסתבך כי החיים מסתבכים כמו שנראה תכף בדוגמה מ Advent Of Code. אבל אל תדאגו יש גם נקודת אור בסוף הסיפור. וגם פייתון, כי צריך קצת הפסקה מכל הקלוז'ר.

המשך קריאה

עובד

21/06/2022

זה יעבוד גם מחר בבוקר?

זה יעבוד גם אחרי שידרוג גירסה?

זה יעבוד גם אחרי Refactoring?

זה יעבוד גם עם נתונים של פרודקשן?

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

זה יעבוד גם עבור משתמשים מהודו?

זה יעבוד גם אחרי שנחזור מגיבוי?

זה יעבוד גם כשיהיה עומס על המערכת?

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

תוכנית וובינרים לרבעון הבא

20/06/2022

הי חברים,

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

אני משתדל לבחור נושאים שקשורים לנושאי הקורסים ומרחיבים אותם. אם יש לכם רעיונות או חלומות על נושאים שהייתם רוצים ללמוד שלחו לי מייל ואנסה להוסיף אותם בחודשים הבאים. זאת הרשימה לשלושת החודשים הקרובים:

המשך קריאה

אפשר רמז?

19/06/2022

בהתמודדות עם אתגרים אנחנו שמים לב לשני רצונות מנוגדים ובעייתיים-

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

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

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

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

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

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

משחקים עם קלוז'ר: פיתרון Advent Of Code 2021 יום 5

18/06/2022

תרגילי Advent Of Code הם המקום המושלם להתאמן על שפת תכנות חדשה, ובמיוחד כזאת שיודעת להתמודד יפה עם נתונים ומניפולציות עליהם. קלוז'ר בהחלט מתאימה להגדרה. את יום 5 הצלחתי לפתור עם טריק פשוט אחד - ועוד קצת קוד מסביבו. הנה הסיפור המלא.

המשך קריאה

מי אישר את ה Pull Request שלי?

17/06/2022
git

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

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

המשך קריאה

לא יודע לכתוב

16/06/2022

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

אבל לא מצליחים לכתוב.

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

אבל אין שום תרגיל.

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

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