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

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

כמה זמן ייקח לך ללמוד לרכב על אופניים?

28/07/2018

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

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

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

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

https://www.tocode.co.il/workshops/44

הבעיה עם בסיסי נתונים שאין להם סכימה

27/07/2018

היא שאין להם סכימה.

הקוד הבא למשל יכניס אוביקט משתמש ל MongoDB:

db.products.insert(
   [
     { item: "pen", qty: 20 },
     { item: "eraser", qty: 25 }
   ]
)

וגם הקוד הבא יכניס אוביקט לאותה טבלא:

db.products.insert(
   [
     { item: "pen", qty: 20, unitPrice: 10 },
   ]
)

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

ואתם מבינים כבר מה שבור פה כן?

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

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

ידידותי מדי

26/07/2018

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

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

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

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

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

תוכנית וובינר: התקנת שרת Linux וחיבור לדומיין

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

https://www.tocode.co.il/workshops/41

המשך קריאה

טיול לירח

24/07/2018

המרחק מכדור הארץ לירח הוא 384 אלף קילומטר, אבל עיקר האנרגיה שתצטרכו כדי לעבור אותו תבוזבז ב 100 ק"מ הראשונים עד שתצאו מהאטמוספירה. אחרי זה שאר ה 383,900 ק"מ עוברים חלק.

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

בהתחלה הכל נראה קשה ולא רואים התקדמות כלל. רק אחרי המון השקעה דברים מתחילים לרוץ ואז מתחיל המסע הארוך האמיתי - ה 384,900 ק"מ, שלושה ימים של לשבת בחללית ולתהות אם אתה בכיוון הנכון ואם נחיתה על הירח שווה את זה.

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

הצעד הראשון במסלול להפוך ל Full Stack

23/07/2018

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

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

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

רוצים לבוא? הרשמה בקישור:

https://www.tocode.co.il/workshops/41

בתיאוריה אני יודע

22/07/2018

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

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

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

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

https://www.quora.com/How-is-JavaScript-used-within-the-Spotify-desktop-application-Is-it-packaged-up-and-run-locally-only-retrieving-the-assets-as-and-when-needed-What-JavaScript-VM-is-used

פולימורפיזם בקטנה

21/07/2018

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

אבל שניה קודם איניגו

המשך קריאה

שאלה יותר אקדמית

20/07/2018

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

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

  2. וזה לא הגיוני להגיד שככה כולם עושים- אנחנו יודעים את זה. בדיוק בגלל זה שאלנו למה.

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

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

הדרך הבטוחה שתמיד עובדת ללמוד משהו חדש

19/07/2018

היא לשנות את החיים כך שהדבר החדש הזה הוא משהו שנשתמש בו כל יום.

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

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

האתגר הוא להבין איך לשנות את החיים ולשלב את הדבר החדש בלי שנצטרך להחליף ארץ או עבודה.