30 בנוב׳ 2008

האלוף של ימי שישי

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

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

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

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

בתלשי"ח החברתי גם כן יש לנו מסורת חביבה. הפעם זו לא היתה המצאה שלי אבל אימצתי את הפורמט בשמחה. כל שבוע יש לנו סשן של "Hooglers around the world" שזה סקירת טיול של מישהו שהיה לאחרונה במקום מעניין בעולם. כיאה לאנשי הייטק וכדי להצדיק את המעמד חייב כל עובד פעם בשנה לסוע לחופשה במקום אקזוטי ולחזור עם הוכחות בצורת תמונות. ואכן, עובדי גוגל חיפה מתגלים כעובדים ממושמעים למדי וכל אחד מהעובדים עושה תפקידו נאמנה. היו לנו כבר מספר סשנים שבהם הציגו טיולים מתאילנד, אירלנד ובשבוע הבא ניו-זילנד. (רק עכשיו שמתי לב שכולם מסתיימים ב-נד. מעניין...) והקטע הנחמד הוא שבנוסף להצגת התמונות אנו מוסיפים גם משהו באווירה שתואם את המדינה המדוברת אז בשבוע שעבר כשהיה אירלנד שמנו מוזיקה אירית ברקע וכמובן שתינו בירה גינס.

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

22 בנוב׳ 2008

דברים שרואים מהנדסים לא רואים משם

בהיותי נציג גוגל עלי אדמות בעיני רבים מבני משפחתי יוצא לי לשרת שאילתות שלהם בנושאי גוגל השונים כמעט על בסיס יומי. הרבה מהשאלות לא דורשות ידע פנימי והבנה אלגוריתמית כלשהי, ברובן הן שאלות שכל מי שיש לו קצת נסיון בתכנה או הפעלת מחשב יוכל לענות עליהן גם מבלי לעבוד בגוגל או להיות מומחה למנועי חיפוש, שאלות כגון איך מראים שכבה ב Google Earth או איך מתקינים את ה Toolbar וכו'.
מידי פעם אני מקבל שאלות מומחה כגון אבטחת מידע ב Gmail או האינטראקציה בין Gmail לאנטיווירוס או אלגוריתם ה caching של YouTube. במקרים כאלה אני מעמיד את השרותיות שלי לפני הכול ועושה כמיטב יכולתי לענות איפה שלא חלים חוקי הסודיות.

אתמול בארוחת ערב משפחתית אמרה לי גיסתי: במשרד עו"ד בו אני עובדת אנו משתמשים הרבה ב Google Desktop והוא מאוד עוזר לנו בעבודה. לפני שהתקנו אתו אני לא יודעת איך היינו מוצאים דברים, עם כל האינפורמציה שיש לנו במשרד אבל עכשיו זה פשוט קלי קלות, פשוט קסם. מייד נמלאתי גאווה וחיוך מאוזן לאוזן כאילו לפחות הייתי אני זה שהמציא, תכנן וכתב את המוצר במו ידיו (הערת המחבר: אני לא) ואחרי שרוויתי נחת הגיעה הסיבה לדאגה... המשיכה גיסתי בשאלתה: האם אנחנו צריכים לדאוג בקשר לאבטחת מידע? כלומר יש לנו במשרד תיקים וחומר שברור שלא היינו רוצים למצוא אותם מפוזרים בכל מיני מקומות לא סימפטיים באינטרנט - אז אנחנו צריכים להיות מודאגים?
תשובתי היתה "ברור שלא" ואז ניסיתי להבין את מקור החששות ונזכרתי שכאשר עושים חיפוש ב desktop אז התוצאות המתקבלות מופיעות בדפדפן בצורה כזו שקודם מופיעות תוצאות החיפוש המקומי ואחר כך מופיעות גם תוצאות חיפוש מהאינטרנט. הסיבה לשאלה היתה ברורה וטבעית לחלוטין - אם התוצאות המקומיות מופיעות בסמוך לתוצאות מהווב האם זה אומר שכל הנתונים שלי נמצאים אי שם על שרתי גוגל?
תשובת המהנדס שלי הייתה "בוודאי שלא", אפילו בלי לבדוק, מהמחשבה שחברה שתעשה דבר כזה כמו לסכן את הפרטיות של המשתמשים שלה בצורה כל כך בוטה פשוט גוזרת על עצמה גזר דין מוות וגוגל ידועה בתור חברה ששמה את הפרטיות בראש סדר העדיפויות שלה אז היה לי ברור שגוגל לא תעשה דבר כזה. (אחר כך גם בדקתי כאן רק לוודא שלא פיספסתי כלום)
ואחר כך חשבתי על זה קצת יותר והגעתי למסקנה שהשאלה של גיסתי הגיונית לגמרי ואפילו מתבקשת וקרוב לוודאי שאילו הייתי במקומה הייתי שואל את אותה שאלה גם כן, אלא שבהיותי בעסקי התכנה והאינטרנט כבר מספיק זמן יש דברים שלי הם נראים כברורים מאליו. וזה בא ללמדני שהרבה פעמים דברים שאנחנו רואים, אנשי התכנה, לא רואים משם, אלה שלא נמצאים בביזנס הזה.
הרבה פעמים אנחנו חושבים שמספיק לעשות מוצר טוב - והמשתמשים כבר יבינו הכל, כך לפחות אני נוטה לחשוב, שרק התכלס משנה ולא מה שמסביב, אבל לא תמיד זה כך, לפעמים צריך להסביר, לפעמים צריך לעשות יחסי ציבור ולהסביר את המוצר או אספקטים שלו, גם אם זה מוצר טוב כשלעצמו וכיוון שהרבה אנשים רגישים לפרטיות המידע שלהם אולי זה נושא ששווה במיוחד להסביר אותו.

20 בנוב׳ 2008

דרוש: הפודקאסט העברי הראשון

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

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

16 בנוב׳ 2008

Protocol buffers and library data-structors

חבר התקשר אלי ושאל איך עושים serialization למבנה נתונים ב ג'אווה ע"י Protocol Buffers.
לא שאני כתבתי את PB ואני לא המומחה לתחום, אבל את התשובה לזה במקרה ידעתי. לא עושים. כלומר, אם יש לך מבנה נתונים כלשהו בג'אווה (או כל שפה אחרת לצורך העניין) למשל ה Person הקלאסי:





class Person {
private String name;
private int id;
private String email;

public void setName(String n) {
name = n;
}

public String getName() {
return name;
}
}



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




message Person {
required int32 id = 1;
required string name = 2;
optional string email = 3;
}


אז איפה ההגיון פה?
צריך לזכור ש PB עובד בהרבה שפות, לא רק ג'אווה. PB עובד גם ב C++ ,Python ועוד. לֹכן מבנה נתונים שאתה כותב בג'אווה אין לו את אותה סמנטיקה או אפילו אין לו תרגום חד ערכי לשפה אחרת. למשל למחלקות ה Set בג'אווה יש מימוש וסמנטיקה שונים ממחלקות ה Set ב ++C.
לכן החליטו (ניחוש שלי, אני לא הייתי שם כשזה קרה) של PB יהיו טיפוסים בסיסיים כגון string ו int32 ואפשר יהיה להגדיר collections ע"י שימוש ב repeated אבל לא תהיה תמיכה במבני נתונים של שפה מסויימת.

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

13 בנוב׳ 2008

רשתב"ים בעננים

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

מימי במיקרוסופט אני זוכר ביטוי אחד, שלפחות בעברית נשמע קצת מצחיק והוא ZBB
משמעותו היא  Zero Bounced Bugs, כלומר פרק הזמן שבו מצליחים לתקן באגים מבלי ליצור חדשים (yeah, right) אבל בעברית זה פשוט נשמע כמו זיבי.
יש כמובן את ה RTFM הקלאסי והטיותיו השונות: אל תרתפם אותי, לך תתרתפם וכו'.

בגוגל למשל נפגשתי בקומבינציות הקומבינטוריות להלן

  • PM (Product Manager)
  • APM (Associate Product Manager)
  • PMM (Product Marketing Manager)
  • APMM (Associate Product Marketing Manager)

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

2 בנוב׳ 2008

סיכום יום מפתחים

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