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

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

אתגר תכנות: בואו נפתור את Advent Of Code יחד

15/09/2018

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

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

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

מוכנים? הנה הסיפור:

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

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

https://forum.tocode.co.il/t/advent-of-code/763/2

צעד שני בהייטק

14/09/2018

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

המשך קריאה

סקירת הספריה emotion.js

13/09/2018

הספריה emotion.js מספקת תחביר מהיר ונוח למימוש CSS In JavaScript. אם תהיתם מה זה אומר או איך זה נראה הגעתם למקום הנכון. אבל לפני הכל למה זה טוב.

המשך קריאה

מימוש תבנית Singleton בשפת Python

12/09/2018

מחר אעביר כאן וובינר על Design Patterns בפייתון ואחת התבניות שאדבר עליה היא Singleton. בוובינר אני רוצה יותר להתמקד במשמעות ובשימושיות של כל תבנית ולכן כאן בפוסט אנסה לחקור יותר לעומק את האפשרויות השונות לבנייתה.

המשך קריאה

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

11/09/2018

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

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

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

האמת היא שבתוך התעשיה כולם מבינים (גם אם זה לא תמיד עובר החוצה) שכשאנשים מדברים על מחסור במתכנתים מתכוונים למחסור במתכנתים כוכבים, ב-10% או 5% של מתכנתים הכי טובים בארץ שעליהם כולם רבים. יש הרבה יותר משרות לא מאוישות ממתכנתים כוכבים, וזה ברור.

הנה ציטוט של שחר בר-אור, מנהל הפיתוח של ווסטרן דיגיטל בארץ מראיון שנתן לדה מרקר:

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

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

  1. להגיע ל-10% הטובים ביותר ולהישאר שם. זה אומר שבשנה הקרובה אתם רוצים להשקיע בהתקדמות המקצועית שלכם. אתם רוצים להגיע לראש השנה הבא ולהגיד שאתם יודעים לפתור בעיות ברמה הרבה יותר טובה ממה שאתם יודעים היום; שאתם מכירים טכנולוגיות בצורה הרבה יותר מעמיקה ממה שאתם מכירים היום. להמשיך להשתפר וללמוד שנה אחרי שנה זו הדרך היחידה להישאר בתעשיה הזו בארץ בתור עובד.

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

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

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

שנה טובה ינון

משתנים ב CSS

10/09/2018

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

המשך קריאה

האם git revert שווה את הזמן שלכם?

09/09/2018

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

המשך קריאה

איך לזהות חגים מתוך Shell Script

08/09/2018

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

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

evenings_ok=(
"Pesach I"
"Pesach VIII"
"Shavuot I"
"Tish'a B'Av"
"Rosh Hashana II"
"Yom Kippur"
"Sukkot I"
"Shmini Atzeret"
)

no_emails=(
"Rosh Hashana"
)

for send_in_evening in "${evenings_ok[@]}"
do
    # echo "^[0-9/]+ ${send_in_evening}"
    if hebcal $(date +"%d %m %Y") | egrep "^[0-9/]+ ${send_in_evening}" >& /dev/null
    then
        if (( $(date +%"H") < 20 ))
        then
            exit 1
        fi
    fi
done

for holiday in "${no_emails[@]}"
do
    if hebcal $(date +"%d %m %Y") | egrep "^${holiday}" >& /dev/null
    then
        exit 1
    fi
done

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

שנה טובה ינון

נלך בצעדים קטנים

07/09/2018

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

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

דרך אחת לשנות פוקוס היא להפוך את הדברים המועילים בפרויקט לקלים יותר. לייצר משימות של 2-3 דקות שרק מחכות לפעם הבאה שמישהו ירצה להיכנס לפייסבוק או ל ynet.

שני הטיפים שלי להיום אם כך:

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

  2. עדכנו את הגדרות ה DNS ברשת הארגונית כך שכשמנסים לגלוש ל ynet או facebook מגיעים לרשימת המשימות הקלות. משהו כמו Captive Portal שמופיע לפעמים ברשתות ומחייב אתכם להסכים לתנאי שימוש כלשהם כדי שתוכלו להגיע לאינטרנט. אפשר להשאיר כפתור קטן שאומר "עזבו אותי ממשימות עכשיו אני רוצה להמשיך לפייסבוק". אפשר גם לא.

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