|
||||
|
||||
לא הייתי מקבל לעבודה מישהו שמאמין שהוא יכול ללמוד דקויות של שפה תוך שבוע. קרוב לוודאי שהוא לא ממש מבין על מה הוא מדבר. |
|
||||
|
||||
אני לא מדבר על הכרת השפה על בוריה. את זה אין למפתחים אחרי חמש שנות נסיון (אך יש יותר למהנדסים מנוסים שמכירים מספר שפות תכנות אחרות). כמה זמן אתה מעריך שצריך מהנדס ג'אווה עם נסיון רב להגיע לרמת פיתוח ב #C כולל הבנה מסוימת של דקויות השפה בתחום בו הוא מתמכה? נניח שהתפנתה משרה למפתח בטכנולוגיות מיקרוסופט בחברתך. אם יש לך כמעסיק אופציה לבחור ילד שהתמקצע ב - #C עם שלוש שנים נסיון רק בשפה זו או מהנדס עם נסיון של יותר מעשר שנים בג'אווה ובעוד שפות תכנות שונות ומשונות האם לא היית מעדיף את השני? למה? |
|
||||
|
||||
ג'אווה ו־C# הן שפות דומות למדי (סביבות העבודה יכולות להיות שונות לחלוטין). אני לא מכיר אותה טוב במיוחד, אבל מהמעט שראיתי, מי שיודע לחשוב בג'אווה, ידע בד"כ גם לחשוב ב־C#. המעבר בין שפות אחרות יכול להיות קצת פחות חלק. מהבחינה הזו יש יתרון למי שמכיר כמה שפות שונות. אבל שפה אינה הדבר היחיד. יש תחומי התמחות אחרים. אני הייתי יכול להעדיף אולי מישהו שמכיר את התחום הכללי (לדוגמה: פרוטוקולי רשת) היטב גם אם הוא לא מכיר בדיוק את השפה שבה אנו עובדים. (ומי שידע לכתוב כאן C++ ידע גם לכתוב C#. כל מה שצריך הוא LRM). |
|
||||
|
||||
זו בדיוק היתה הנקודה שלי. בהנחה שלמועמד היכרות נרחבת עם שפות תכנות שונות, תחומי ההתמחות זה בדרך כלל חשוב ורלבנטי יותר מאשר הכרות עם שפת תכנות ספציפית. |
|
||||
|
||||
בתנאים שסיפקת, הייתי מעדיף את ההיא עם הציצים הגדולים. (במילים אחרות: מעבר לרף מסוים, יש עוד הרבה שיקולים מעבר לשנות הניסיון בשפת תכנות). |
|
||||
|
||||
הבמילים אחרות הוא אמירה טריביאלית. השטן הוא בניואנסים. הטענה היא שמעבר לרף מסוים, יש להוסיף גם את הניסיון בשפת תכנות ספציפית למערכת השיקולים ולא להיפך. מעבר לרף מסוים של ניסיון, המעבר בין שפות תכנות הופך להיות קל וחלק יותר (גם אם נניח שהוא לא טריביאלי, למרות שברובו הוא דווקא כן טריביאלי). לשים את ההכרות עם שפת תכנות במרכז ראיון העבודה, במקום את ההבנה בהנדסת תוכנה, את הניסיון הכללי בפיתוח, את תחומי ההתמחות, את ההבנה האלגוריתמית ואת יכולות התקשורת המקצועית של המועמד, זה פשוט להתרכז בשטויות. מפתח טוב עם הכרות מעמיקה ונסיון רב הן במספר שפות סטאטיות והן במספר שפות דינאמיות, מסוגל לקפוץ אל תוך המים העמוקים של כמעט כל שפה עילית נפוצה בשוק, לאחר שפשוף קל. אי אפשר להגיד את אותו הדבר על תחומי התמחות. |
|
||||
|
||||
האמנם תחומי התמחות הם קשים יותר ללמידה? אתה יכול לתת דוגמה או שתיים? אני מניח שנשארים בתוך התחום הכללי של תוכנה, ולא קופצים לפיזיקה או תכנון מעבדים; משהו שמקביל לקורס באקדמיה ולא לתואר. עיבוד מקבילי הוא אולי דוגמה, אבל זה בגלל שלא מדובר רק בתחום ידע אלא בצורת חשיבה שונה. אם אני חושב על פרוטוקולי תקשורת, או אפליקציות אינטרנט, או GUI - אז נדמה לי שמהנדס טוב יכול ללמוד אותם בערך באותה קלות או קושי של לימוד שפה חדשה. אגב, בשני הראשונים נגעתי רק לרגעים קצרים ומרחוק, בשלישי יותר אבל רק בזווית צרה. |
|
||||
|
||||
אני לא יודע אם "תחומי התמחות הם קשים יותר ללמידה". אני יודע שיש מהנדסים שמתאימים יותר לצורת חשיבה הנחוצה בתחום מסוים. >>> עיבוד מקבילי הוא אולי דוגמה, אבל זה בגלל שלא מדובר רק בתחום ידע אלא בצורת חשיבה שונה. גם "עיבוד אותות" זו צורת חשיבה שונה, ו־device drivers זו צורת חשיבה שונה, ו־embedded systems זה משהו אחר לגמרי. הכרתי מהנדסים שידעו לבנות gui באופן שעורר את קנאתי - יותר יפה ובעיקר יותר פונקציונלי ממה שיכולתי לחלום, וברבע הזמן שהיה לוקח לי. לעומת זאת עם הקוד שהם כתבו בלב המערכת לא היה מה לעשות חוץ מאשר לעטוף בשטר של עשר לירות ולזרוק למקום בו השמש לעולם לא זורחת. אולי אפשר להשוות זאת להבדל בין מהנדס בניין ומעצב פנים, רק שבענף שלנו קוראים לשניהם "מהנדס תכנה" ובמקרים רבים הם משתמשים באותה שפת תכנות. לעומת זאת אין שום קשר בין זה ובין שפה. מעולם לא ראיתי מישהו שעשה עבודה טובה בשפה אחת וגרועה באחרת. מי שהתוצרת שלו גרמה לי סחרחורת ובחילה, זה עבד בשלוש שפות באותה מידה; ומי שהרשים אותי בבהירות, פשטות ואלגנטיות של התוצרת זה נשאר משפת אסמבלי דרך ג'אווה ועד פייתון. |
|
||||
|
||||
הגיוני. |
|
||||
|
||||
בעניין "מעולם לא ראיתי מישהו שעשה עבודה טובה בשפה אחת וגרועה באחרת" - זה נכון בד"כ, אבל הנה דוגמא הפוכה: גייסתי פעם עובד ששלט היטב בפייתון והיה מהיר כברק בשפה זו. הוא גם פתר בע"פ חידות מתמטיות/אלגוריתמיות מהר יותר מכל מרואיין שהיה לי. מסיבות אלו ואחרות גייסתי אותו כאיש אלגוריתמים למימוש אזורי קוד תובעניים (מבחינת ביצועים) בשפת ++C. לאחר חודשיים של עבודה הסתכמו הישגיו בקרוב לאפס. לבקשתי מן הממונה עליו לרדת לפשר העניין, התברר שהבחור סובל מהפרעת קשב. הוא הסביר שיש לו משהו כמו עשר דקות (לפעמים קצת יותר) בהן הוא חד ומהיר, מה שמספיק למשימות קטנות ואפילו ביינוניות בפייתון, כמו גם לפתרון חידות אלגוריתמיות מן הסוג שנתתי לו. לאחר מכן, הוא זקוק ללפחות שעה של "התרעננות". מאחר וב++C המשימות הן בד"כ חלק מפרוייקט גדול, די בניסיון להכנס למשימה, תוך בהבנת מקומה הנכון בפרוייקט והבנה/היזכרות באופן בו צריך לבצעה, כדי לעבור את זמן הקשב שלו. "מדוע אין הוא לוקח ריטלין" שאלתי את המנהל? התשובה שבאה הוא שהבחור בדק באינטרנט וחושש שהריטלין מרעיל אותו אז הוא מנסה בלעדיו. "תגיד לו שהניסיון נכשל והטענות נגד הריטלין הן אמונות טפלות שמופצות ע"י כת של עובדי אלילים, ואם הוא רוצה להמשיך לעבוד כאן כדאי לו שיחזור לקחת" (או מה שסביר יותר - גירסה עדינה של זה). ואכן כעבור כמה זמן היה שיפור מסויים (אם כי לא מספיק). |
|
||||
|
||||
הו הא. שעה התרעננות אחרי עשר דקות עבודה? זה לא מתכנת פייתון. זה עובד הסתדרות! דוגמה יפה, אבל אתה רק מחזק את טענותיו של הוגג. הרי מה הקשר בין פייתון לבין הקשיים של המתכנת הנ"ל? הנ"ל יהיה מפתח גרוע גם במימוש פרויקטים מסוימים בשפה זו. במקום העבודה הקודם שלי, בו הרוב המוחלט של המערכות נכתב בפייתון, המתכנת הנ"ל לא היה מוצא לא את ידיו ולא את רגליו. פייתון היא שפה של ממש ולא סתם שפה לכתיבת סקריפטים קצרים או משהו שרק ניתן להדגים איתו שעשועים ופתרון חידות אלגוריתמיות קצרות. ניתן לממש בה אפליקציות שלמות, תשתיות ו/או פרוייקטים מאוד מורכבים. |
|
||||
|
||||
אני מניח שאתה צודק. להלן המשך אותו המקרה: לאחר שהחלטתי לפטרו, עיכב הבוס שלי את מימוש ההחלטה, לפחות עד שנמצא מישהו במקומו. בינתיים העברתי את הבחור למחלקת המחקר שקירטעה מאז המתכנת היחיד בה (אני) קודם. הרעיונות שהבחור הגה שם והמימושים להם הקפיצו אותה שנות אור קדימה1. אנקדוטה הקשורה בבחור: לאחר שלב הראיונות, כשהתקשרתי לממליצים, טען אחד מהם שהנזקים שהבחור עשה אצלם נוראים עד כדי כך שהוא אפילו לא יכול לספר לי. 1 פיסיקה הוא לא ידע (: |
|
||||
|
||||
סיפור מעניין ומאלף. שאלה מעניינת (כלומר מעניינת אותי) היא האם לדעתך ההבדל בין הביצועים המרשימים של מהנדס זה במשימה אחת מול ביצועים עלובים במשימה אחרת קשורים יותר לשפה\סביבה, או לטיב המשימות עצמן? גם אני הזכרתי מהנדסים (למשל החתום מעלה) עלובים ב-gui וטובים בדברים אחרים וההפך - אבל במקרה זה מעבר שפה לא שינה לא את הטוב ולא את הרע. |
|
||||
|
||||
אני חושב שהצלחתו של הנ"ל בפייתון נבעה מכך שבשפה זו ישנו יחס גבוה מאוד של תפוקה ביחס להשקעה, גם בזמני עבודה קצרים, המתאימים לאורך הקשב שלו. משום כך לדעתי הוא גם התמחה בשפה זו, ולא למשל בג'אווה או ++C בהן הדבר בד"כ אינו ניתן, אך הן כן טובות יותר לפרוייקטים גדולים (מסויימים) וכמובן, מבחינת ביצועים (מהירות, צריכת זיכרון). התשובה משום כך היא שהסיבה הראשונית היא כאן טיב המשימות, ולא השפה. |
|
||||
|
||||
אני מכיר כמה פרויקטים (ואפילו מוצלחים) בפייתון, אולי לא "גדולים" אבל משהו כמו 50KLOC (שכנראה שקול לפחות ל 150KLOC, ויש אומרים 300, בג'אווה). מאד יתכן שאותו מהנדס היה נכשל גם שם. מצד שני יש סוג משימות מהאופי של "פגע וברח" גם בפרויקטים גדולים וסבוכים ב ++C ("תמצא איפה הבעיה ותגרום לנביילה הזו לרוץ פי שלוש יותר מהר") - שבהחלט יכולות להתאים למהנדסים מסוימים שלא מסוגלים לתכנן ולהריץ פרויקט שלם, אפילו קטן. |
|
||||
|
||||
אלו בדיוק הבעיות המצומצמות אותן הוא קיבל. אבל כאן נכנס גורם נוסף, לדעתי הספקולטיבית מאוד: אצל חלק מבעלי בעיות הריכוז הן מחמירות באופן קיצוני כאשר הם עוסקים בדבר (שפה במקרה זה) שאינו מלהיב אותם, גם אם הם מאוד היו רוצים לסיים את המשימה. |
|
||||
|
||||
ג'אווה? מילא מהירות, אבל טובה בצריכת זיכרון!? |
|
||||
|
||||
מה שהיה לי בראש כשכתבתי זאת היא השפה בה אני עובד בשבועיים האחרונים (VBA) ופייתון. לא בדקתי אז אני חוזר בי מן הטענה שבג'אווה ניצול הזיכרון טוב יותר מאצלן. |
|
||||
|
||||
ג'אווה אכן טובה בצריכת זיכרון. לא סתם טובה, ג'אווה מתמכה בצריכת זיכרון! צריכת (עוד ועוד) זיכרון זה אחד מהפיצ'רים המרכזיים ביותר של השפה. |
|
||||
|
||||
תסריט בו העובד הזה היה מגיע אל מעסיק שלא היה מצליח להבין מהן נקודות החוזק והחולשה שלו הוא תסריט סביר. היו מתאכזבים ממנו שוב ושוב ומפטרים אותו. בקלות היו יכולים לקטלגו כמהנדס תוכנה כושל שאת התוצרת שלו אפשר רק לעטוף בעשר לירות ולזרוק לפח. מזל שהוא הגיע אליך. בין השאר, הסיפור הזה מלמד אותנו את החשיבות והמרכזיות שיש להחלטות ההנהלה בהצלחתו או כשלונו של העובד (ושל פרוייקטי תוכנה באופן כללי). אם היה לי שקל על כל פעם שראיתי קוד גרוע שנכתב בגלל מנהלים גרועים ע''י מהנדסים מוכשרים (שמוצאים את עצמם כותבים ובוכים) הייתי יכול לעשות אקזיט. |
|
||||
|
||||
איך מסתדרים עם הפרעות קשב וריכוז במקום העבודה? |
|
||||
|
||||
באופן מוזר יצא לי לראות כמה פעמים קוד של מהנדסים (ולפעמים גם צוותים שלמים) שעברו משפה "נמוכה" לשפה "גבוהה" (ז"א מ-c ל-c++ ומ-C++ לג'אווה - הכרתי גם צוות שעבר כולו מדלפי לג'ווה אבל בגלל שאני לא מכיר דלפי אז אני לא יכול לדעת אם זאת הסיבה שהקוד שלהם היה כל כך מוזר), ובהחלט אפשר להבחין בזה. יש דברים שמהנדס ששולט בשפה מסויימת לא יעשה (לא שהם בהכרח לא נכונים או לא עובדים, נגיד להגדיר את כל המשתנים בתחילת הפונקציה ולא בסקופ שלה, אבל הקוד שנוצר הוא פחות קל לתחזוקה) ויש דברים שמי שלא מכיר את השפה מספיק טוב יפחד לעשות (למשל exception בג'אווה, וכמובן שאפשר לעקוף את זה על ידי החזרת ערך, אבל...) בלי צידוק מספק. שינוי ההרגלים הזה לוקח זמן, ועולה כסף, וכשמדובר על צוות שלם אז הרבה פעמים ההרגלים האלה גם לא משתנים (זה גם תלוי באופי של הצוות) אחרי שנים. |
|
||||
|
||||
מהניסיון האישי שלי ובהכללה גסה: אנשים עם ניסיון המתרכז בשפות "גבוהות" או אפילו חסרי ניסיון לחלוטין, מסתגלים מהר יותר לכתוב קוד נכון יותר ב - python מאשר מפתחים עם ניסיון מסוים או רב שנים ב - ++C. לא פשוט לדרוש ממפתחים שרגילים לכתוב בצורה מסוימת לכתוב כמו כל שאר החבר'ה על פי המלצות PEP 8. היה אפילו אחד שהתעקש, כמו פרד, להוסיף נקודה פסיק בסופי שורות פקודה, כאילו הסימן הזה מחובר אצלו במקלדת למקש ה - enter. |
|
||||
|
||||
תלוי מה אני מחפש. אם אני רוצה קבוצה קטנה של אנשים שיפתחו פרוייקט נסיוני, אני מעדיף את המעולה והמגוון. אם יש לי מחסור באנשי #C אני אעדיף את זה שיוכל לפחות לסייע או לייעץ לשאר המפתחים. |
|
||||
|
||||
זה כמו לחפש חקלאי ''עם ניסיון בג'ון דיר''. אתה כמובן יכול לעשות זאת (ורבים אכן נוהגים כך) אבל זו לא הבחירה האינטליגנטית. |
|
||||
|
||||
בהרבה מקרים זה יותרכמו חקלאי עם נסיון בגידול פירות. שפה זה לא רק תחביר, זה גםאוסף שלם של כלים ומתודולוגיה. |
|
||||
|
||||
גם ג'ון דיר. |
|
||||
|
||||
תראה, ברור שמפתח טוב יכול ללמוד כל דבר, אבל הוא לא יכול לעשות את זה באפס עלות. להגיע למקצועיות בסביבת עבודה חדשה יכול לקחת בין חצי שנה לשנה (ברור שמפתח טוב יותר עושה את זה מהר יותר). חצי שנה עד שנה כזו של פרודוקטיביות שווה הרבה למעסיק. בנוסף, אם חסר ידע ספציפי בקבוצת פיתוח שלמה, אז למפתח חדש שכבר יש לו הידע הזה יש גם אפקט של מכפיל כוח בגלל כל העזרה, העצה וההדרכה שהוא יכול לתת למפתחים האחרים (שאולי לא פחות מוכשרים ממנו אבל לא מכירים את הטכנולוגיה הספציפית). |
|
||||
|
||||
אני מסכים עם כל מלה שכתבת, רק שאני לא חושב שלמרכיב ה"שפה" במכלול הידע יש משקל משמעותי. ברגע שאתה מדבר על "טכנולוגיה מסוימת" אז גם אני כבר אמרתי כאן דברים דומים למה שאתה אומר. נכון ש"שפה" זה גם ספריות, אבל אני בכל זאת לא חושב שנכון לייחס להם משקל. לגבי "חצי שנה": כשמפתחים מתחילים לעבוד בסביבה חדשה, הם צריכים לבנות היכרות עם הצוות הקיים, עם ה"תרבות" (סליחה על המלה), עם גוף התכנה הקיים, עם נוהלי העבודה, אולי גם המוצרים או הפרוייקטים השונים ויחסי הגומלין ביניהם וכולי. לא ראיתי קורלציה בין הזמן שלוקח למפתחת חדשה להתחיל להיות פרודוקטיבית ובין השאלה אם השפה (או השפות) בהן משתמש הפרוייקט היו מוכרות לה מראש. כמובן שיש זריזים יותר ויש איטיים יותר - אך אם מרכיב השפה בכלל בא לידי ביטוי אז מדובר בגורם מסדר שני או שלישי. כמובן, כדי שבכלל תוכל לגבש דעה מושכלת בשאלה אתה צריך להתחיל להיות מוכן לשכור אנשים ולהתעלם מהשאלה אם הם כבר מכירים את השפה. מאחר שכנראה אינך מוכן לעשות זאת, לעולם לא תיווכח בצדקתי... ;) |
|
||||
|
||||
כל מה שאתם כותבים זה מעניין מאוד, אבל בפועל, אם תכתבו בגוגל ''דרושים תוכנה'' תקבלו פירוט על פי ידע בשפות. |
|
||||
|
||||
לא אמרתי שהשאלה אם לאנשים יש נסיון בשפה1 תמיד חשובה. אמרתי שהשאלה תלויה בסט היכולות שכבר יש לך בצוות ובמטרות של הצוות הזה. היה לי הרבה נסיון מוצלח של לעבוד עם הרבה אנשים שהגיעו בלי נסיון בשפה הרלבנטית (למעשה, כל אחת מהמשרות שאני-עצמי התקבלתי אליהן היתה בשפה שלא היה לי נסיון משמעותי בה). אבל בתנאים שונים, הדרישות שונות. שפה היום זה לא כמו שהיה בשנות השמונים. שפה (ביחוד השפות החדשות, כמו Perl, Python, ובצורה בולטת Java ו#C) באה עם הרבה מאוד הנחות, הרגלים קבוצתיים, תבניות עיצוב, העדפות, כללי עשה ואל תעשה, קונבנציות, וזה עוד לפני שדיברנו על קוד ממש, מסגרות, כלים, סטנדרטים ופרוטוקולים לעבודה שנאספו סביבה. בהרבה מקרים אתה יכול להגיד שחלק גדול מההיכרות שפירטת עם תרבות, גוף תוכנה, נוהלי עבודה, ואפילו יחסי הגומלין בין פרוייקטים ומוצרים עברו סטנדרטיזציה במסגרת של "שפות", עד־כדי־כך שמתכנת שעובר מחברה אחת לחברה אחרת באותה שפה יכול להרגיש די בבית. לוקח הרבה זמן ללמוד את זה. 1 למרות שאתה כתבת "מכירים את השפה". |
|
||||
|
||||
קודם כל מוזר לראות התייחסות ל "Perl, Python, ובצורה בולטת Java ו#C" בתור "שפות חדשות". נדמה לי שהגיל הממוצע הוא בערך 20, לא? (אכן #C באמת קצת יותר צעירה1). בכל אופן אחרי שכתבתי תגובה ארוכה ומלומדת גם קראתי אותה, וראיתי שלא אתה ולא אני לא נצא מהמשך הדיון הזה יותר חכמים, נבונים ויודעים את התורה מאשר אנחנו עכשיו אז החלטתי להיכנע. ושאלה לראובן: היכרות עם איזו שפה או סביבה עומדת כרגע למחסום בדרך למשרות שנראות מעניינות? יכול להיות שיש טריק שעוזר לשבור את פרדוקס הביצה והתרנגולת (מעסיקים דורשים נסיון מוכח בשפה, אבל ללא עזרת מעסיק לא ניתן לייצר ניסיון מוכח). ה"טריק" הוא לתרום לפרויקט קוד פתוח שמתנהל בשפה\סביבה המבוקשות. נכון שיתכן שהניסיון המוכח החסר הוא בשפה\סביבה שלא ניתן למצוא בהן פרויקט קוד פתוח (אני למשל מאד אופתע אם יש פרויקט קוד פתוח ש DB2 מהווה בו קומפוננטה מרכזית), אבל יתכן שהשורות החסרות ברזומה הן דווקא כאלו שקל מאד למצוא פרויקטים שמתרכזים בהם - למשל php, RoR, פייתון ועוד. _____________ 1 בפועל, #C זה שיבוט של ג'אווה שלא טורח להשמע לכללים של סאן בגלל איזו תביעה משפטית בעבר הרחוק או משהו. |
|
||||
|
||||
מצאתם כפתור, תפרתם חליפה ועכשיו אתם שואלים אותי איזה שרוול קצר לי? איפה ראית שאמרתי שמה שחסר לי זה ידיעת שפת תיכנות כלשהי? אם יש שפה שידיעתה עשויה היתה לעזור לי אני מניח שזאת סינית (כמו לכל ההי-טק הישראלי). |
|
||||
|
||||
>> מצאתם כפתור, תפרתם חליפה ועכשיו אתם שואלים אותי איזה שרוול קצר לי? איפה ראית שאמרתי שמה שחסר לי זה ידיעת שפת תיכנות כלשהי? אם יש שפה שידיעתה עשויה היתה לעזור לי אני מניח שזאת סינית (כמו לכל ההי-טק הישראלי). קודם כל אתה צודק - השאלה שלי לא נוסחה טוב. מה שהתכוונתי היה בתגובה למשהו שכתבת כאן: >> כל מה שאתם כותבים זה מעניין מאוד, אבל בפועל, אם תכתבו בגוגל "דרושים תוכנה" תקבלו פירוט על פי ידע בשפות הבנתי מכאן שהכוונה שמעסיקים אכן מחפשים כשרון מסווג לפי קריטריון ה"שפה", וכן שעובדה זו מהווה לפעמים מכשול בפני מהנדס מוכשר שמסיבות אלו ואחרות אין התאמה טובה בין ה"ניסיון המוכח" שהוא יכול להדגים ובין מה שהשוק מחפש ברגע מסוים (במקרה זה, כרגע). השאלה ששאלתי אותך הייתה שאלה של סקרנות - עבר כבר זמן מאז בדקתי את שוק חיפוש העבודה והתעניינתי לדעת אילו כישורים נחשבים "חמים" היום. ההערה האחרונה שלי, לגבי האפשרות לצבור "ניסיון מוכח" דרך פרויקט קוד פתוח וכך לעקוף את בעיית הביצה והתרנגולת לא כוונה דווקא אליך - הכוונה הייתה לאמירה כללית שמעלה דרך התמודדות אפשרית (תאורטית - כאמור לא ניסיתי) למישהו שנמצא במצב הזה. |
|
||||
|
||||
מנסיוני הדל, את המעסיקים לא מעניין הנסיון עם פרוייקטי קוד פתוח. בדיוק דחו אותי ממשרת ג'אווה בגלל שאין לי נסיון מוכח בג'אווה, למרות שיש כמה פרוייקטים משמעותיים של ג'אווה שתרמתי להם קוד. |
|
||||
|
||||
למה הם מתכוונים בנסיון מוכח? |
|
||||
|
||||
יענו שקיבלת עליו כסף. אף מעסיק לא שאל אותי על עברי בקוד הפתוח, למרות שהוא מוזכר אחר כבוד בפסקה שלמה בקורות החיים שלי. |
|
||||
|
||||
כאן לפחות יש דרישה מפורשת לתרומה לקוד פתוח: "Active contributor to open source software" (אבל עדיין נדרש ניסיון בעבודה). |
|
||||
|
||||
נו באמת, לקחת את יאהו!, זה לא באמת דוגמא למעסיק טיפוסי. ברור לי שיש כאלה שמחפשים את זה (למשל lingnu.com), אבל מנסיוני את הרוב זה לא מעניין. כולל מעסיקים שלינוקס עומדת בבסיס המוצר שהם מפתחים (למעשה כמעט כל החברות שפניתי אליהם מבוססים באופן כזה או אחר על קוד פתוח). יכול להיות שהנסיון שלי מוטה (באמת יכול להיות), ונפלתי במקרה על חברות שלא מעניין אותן והרוב כן, אבל בכל זאת לפי נסיוני האנקדוטלי, את החברות בארץ לא מעניין אם עשית קוד פתוח או לא (קרי, לא שואלים אותך על הנושא, על אף שזה מופיע בקורות החיים, ועל אף שהזכרתי את זה בריאיון. לדוג' אני מספר על העבודה הקודמת "עשיתי X..." "ומה עוד? עם מה?", "עשיתי קוד פתוח Y" <שתיקה>. ואני לא מדבר על חברות ההשמה שבכלל לא מבינות על מה אתה שח. |
|
||||
|
||||
רק ניסיתי לעזור... |
|
||||
|
||||
סליחה, אני ניסיתי להמשיך בויכוח... בכל אופן, העבודה שלינקקת אליה נראת מגניבה למדי, ותודה. |
|
||||
|
||||
ההערכה שלי שהדוגמה שלך לא מייצגת במיוחד. נסיון בתכנות תוכנה חופשית הוא נסיון בתכנות. ההבדל העיקרי הוא שלא צריך לסמוך על המלצות כדי לבדוק את איכות העבודה. |
|
||||
|
||||
אגב, ראיינתי פעם מועמד לתפקיד מפתח תוכנה/אלגוריתמאי שבמקום המלצות שלח לי קישורים לקוד פתוח שכתב. במקרה הספציפי ההוא הקוד לא היה ברמה סבירה וגם לא הצביע על פוטנציאל. |
|
||||
|
||||
מעניין. אני מניח שהוא מעריך את הקוד שהוא כתב קצת יותר ממך (לפחות ברמת הפוטנציאל), אחרת הוא לא היה משתמש בו ככרטיס ביקור. מדובר על פרויקט שלו בלבד / בעיקר או משהו שעבר מספיק ביקורת עמיתים? קוד שנמצא בשימוש במקומות אחרים? |
|
||||
|
||||
השאלות במקום, אלא שאני לא זוכר פרטים מעבר לזה. |
|
||||
|
||||
אני חושב שיש כאן עניין של סטנדרט. כשמישהו אומר לך שהוא עבד שנתיים וחצי על X בחברה שאפשר להסכים שהיא סבירה, אז אתה יודע בדיוק מה זה אומר: בערך כמה שעות ביום הוא עבד, שהוא היה כנראה צריך לעבוד עם מנהלים ועמיתים, לתאם דברים עם אנשי בקרת־איכות ומנהלי־מוצר, שהוא עבד עם מערכת ניהול באגים ומערכת ניהול גרסאות, שהוא ראה לכל הפחות ארבעה-חמישה מחזורי גרסאות ויודע להתאים את אופי וקצב העבודה שלו אליהם, וכיו"ב. אתה גם יודע עוד משהו: שבמשך שנתיים וחצי, שזה די והותר זמן להכיר עבודה של אדם, הוא היה לפחות טוב מספיק כדי שלא יפטרו אותו. אם מישהו אומר לך שהוא עבד על Y בקוד פתוח, אתה יכול לראות את הקוד שלו ואולי הוא מקודד טוב (או שעזרו לו, או שהוא השקיע המון זמן בכל שורה), אבל אין לך שמץ של מושג לגבי העבודה שלו המובן הרחב יותר, לא איכותה ולא היקפה ולא הקצב שלה. אז כן, אתה יכול ללכת ולנבור במערכת ניהול הגרסאות וברשימות התפוצה, לראות מה היחסים שלו עם שאר האנשים ומה קצב השינויים שהוא מכניס, ולנסות לעקוב אחרי העבודה שלו בכלל ולגבש איזו תמונה, אבל זה ידרוש ממך הרבה מאוד זמן ולא בטוח שתקבל תמונה מדויקת. אין סטנדרט. איך שאני רואה את זה, נסיון בקוד־פתוח הוא תחליף לחוסר־נסיון (חוסר־נסיון בכלל, או חוסר־נסיון בתחום מסוים). זו דרך להעשיר את ארגז־הכלים הטכני שלך, ולהציג את זה כך בקורות־חיים. זה לא קשור בכלל לסעיף של נסיון עבודה של ממש. |
|
||||
|
||||
אני כמעט מסכים עם מה שאתה אומר, ואולי באמת החברות עשו בשכל שלא התעניינו יותר מדי בעניין הקוד הפתוח (זה לא שווה את ההשקעה). כמעט, כי אני לא בטוח שיש סטנדרט, אני מכיר במקומות שלא עשו בהם יותר מדי ובקוה"ח הם נראים ממש מרשימים. השאלה היא מה המשקל שנותן המעסיק הטיפוסי לנסיון בקוד פתוח במקום נסיון אמיתי (ברור שזה לא 0), ולהערכתי המשקל כ"כ נמוך, שאם אתה נכנס לעניין הקוד פתוח רק בשביל "להכנס לתחום", חבל לך על המאמץ. אתה יכול להגיד ששיחקת עם זה בבית, להדגים ידע בראיון ותקבל תוצאה דומה. |
|
||||
|
||||
"לשחק עם זה בבית" זה אחלה. יש מצב שקל יותר, ויש יותר מה ללמוד, במסגרת של פרוייקט גדול וקיים, מאשר סתם לכתוב מחשבון דואודצימלי ולשמור אותו במגירה, אבל זה עניין של העדפה אישית. לגבי היוקרה של מעורבות בפרוייקט ממש, אני מניח שזה תלוי באיזה פרוייקט. יש פרוייקטים שיש להם יוקרה בתחומים מסויימים. נגיד, אם הכנסת קוד לקרנל לינוקס והוא יצא בגרסה רשמית של לינוס טורוולדס (במיוחד אם הוא לא דרייבר, אבל גם אם כן), יש מצב שיהיה לזה משקל משמעותי בראיון למשרה שמערבת תכנות לקרנל, כי ללינוקס יצא שם שקשה להכניס לשם קוד. אם מצאת ותיקנת חור אבטחה בOpenSSL, כנ"ל, בתחום אבטחת־תוכנה. אם אתה מפתח דביאן רשמי והמשרה קשורה להתעסקות עם הפצה מבוססת־דביאן (נגיד, לתחזק את הappliance של המוצר), כנ"ל. מה שמשותף לשלושת הפרוייקטים האלה זה שהם מפורסמים בסטנדרטים הגבוהים שלהם, כל אחד בתחומו (גם אם בפועל אנחנו מגלים שהם אולי לא תמיד ראויים לסנדרטים האלה...), ועדיין צריך ליפול על מראיין ששמע על הסטנדרטים הגבוהים של הפרוייקט. |
|
||||
|
||||
ברור שתלמד יותר במסגרת פרוייקט קיים מאשר לבד, אבל אנחנו לא רוצים ללמוד אנחנו רוצים לקבל עבודה וללמוד על חשבון המעסיק. אז השאלה היא כמה חשיבות המעסיק ייתן ל"תרמתי קוד" לעומת "שיחקתי עם זה", לא רלוונטי כמה אתה באמת לומד. מבחינתך הכי זול זה לשחק עם זה בבית, אז אם התשואה של שני הדברים דומה - עדיף לשלם פחות. אתה באמת צודק שיש פרוייקטים מסויימים בהם המעסיק בוודאי מודע ומסתכל על קוד פתוח (אם מישהו כותב את הגרסא שלו לקרנל, כנראה שהוא יודע מה זה להכניס קוד לקרנל ויתרשם ממך אם הכנסת) לדעתי תחום המחקר באבטחת מידע לא קשור, שם חברה רצינית בתחום קוראת פרסומים של אנשים פרטיים על פרצות שהם מצאו, וייתנו לך כבוד בין אם מצאת פירצה בקוד פתוח או בקוד סגור. אני דווקא לא מעריך שייתרשמו מעובדת היותך מתחזק של דביאן אם אתה מכוון לעבודה של sysadmin, כי למנהלים שחפשו sysadmin-ים שפגשתי, לא היה מושג מה כרוך בלהיות מפתח דביאן. אבל יכול להיות. |
|
||||
|
||||
ההבדל בין "תרמתי קוד" לבין "שיחקתי עם זה" הוא בדיוק העובדה שלא מדובר רק על כך שזה משחק פרטי שלי. יש עוד מישהו אחר שחושב שזה מספיק מועיל כדי שהוא ישקיע מזמנו בשילוב תרומת הקוד הזו. יש עוד עיניים שהסתכלו על הקוד. הייתי שותף לתהליך של בקרת עמיתים. סתם לדוגמה: ארזנו אצלנו בחברה חבילות תוכנה באריזות deb בצורה עצמאית. זה עבד. לאחר שנה הבננו שזה לא חכם לתחזק מאגרים נפרדים ועדיף להעלות את כל התיקונים שאפשר למעלה. כמובן שהתברר שכל מיני דברים ש"עובדים" הם אינם הדברים הנכונים, וגם אינם מוצלחים במיוחד (עלולים להכשל בדרכים מאוד נחמדות בנסיבות המתאימות). זה בדיוק התהליך של בקרת עמיתים. והוא לא קרה כשהתוכנה לא היתה (מספיק) חשופה למפתחים חיצוניים. אני לא אעז להעלות שטויות לדביאן כי יעלו עלי מהר (בהסתברות גבוהה למדי). מעורבות בפרוייקט תוכנה (ובפרט תוכנה חופשית) אינו מעשה חד-פעמי של כתיבת קוד עצמאית. אתה כותב לפי צרכי הסביבה, מגיב למשוב מהסביבה. מגיב לבעיות שהעלו. וכמובן: אתה מספיק סומך על איכות הכתיבה שלך כדי לשים אותה באינטרנט. |
|
||||
|
||||
על זה אין ויכוח. השאלה היא מתי ועד כמה האתגרים האלה וההתמודדות המוצלחת שלך איתם חשופים למעסיקים פוטנציאליים כשאתה מפרט את התרומות שלך בקורות־החיים. |
|
||||
|
||||
אדרבא, ספר על נסיון אחר (אולי שלך) בו היה משקל לקוד הפתוח שכתבת. אני לא מדבר על זה שלינוס טרובלדס מצא עבודה בגלל קוד פתוח, אלא סטודנט למדעי המחשב שתרם קוד לפרוייקטי קוד פתוח במהלך לימודיו, והמעסיקים התלהבו מעובדה זו כך שהיה לו יותר קל להתקבל לחברה בזכות תרומתו לקוד פתוח. |
|
||||
|
||||
אצלי זה הודית... |
|
||||
|
||||
>> לא הייתי מקבל לעבודה מישהו שמאמין שהוא יכול ללמוד דקויות של שפה תוך שבוע. קרוב לוודאי שהוא לא ממש מבין על מה הוא מדבר. לא זו הנקודה. הנקודה היא שמהנדס טוב שלא מכיר שפה מסוימת יכול ללמוד, ומהנדס מחורבן יישאר מחורבן גם אם הוא כבר מכיר את דקויות השפה עד אחרון הפרטים הטפלים. - http://www.youtube.com/watch?v=0gxKStPXyn8 או כמו שצפריר אומר: אברך אפשר להשיא, אבל C אי אפשר לאברך. |
|
||||
|
||||
כשאתה מציג את זה ככה, זה נשמע כמעט הגיוני. אמנם יש מהנדסים שיכולים לעשות נפלאות בשפה שאתה המצאת בעצמך1, ולעומתם יש כאלה שכבר עשרים שנה כותבים קוד גרוע בשפה כלשהיא - אבל קשה לסווג את כל השאר בצורה בינארית כ"מהנדס טוב" ו"מהנדס מחורבן" כמו שאתה מתאר (ואף לא על ציר קווי בין שני הטיפוסים). בוא נאמר שבהינתן כל התנאים האחרים, ידע מעמיק של השפה הנדרשת הוא יתרון2 בקבלה לעבודה ולו רק בגלל החיסכון בשכר הלימוד. --- 1. ולמי שלא מכיר את הוגג - הוא באמת המציא שפת תכנות שעדיין נמצאת בשימוש מסחרי. 2. יתרון, אבל כמובן שלא השיקול היחיד. |
|
||||
|
||||
קודם כל צר לי לשמוע שעדיין משתמשים. שנית - בלי אאוטינג בבקשה. ושלישית, באמת ובאמונה שלידיעת שפה מסוימת או הכרה עם טכנולוגיה מאד ספציפית1 אין שום משקל לדעתי, ומעסיק שמעניק לכך משקל (ונתקלתי בכאלה לא אחת ולא שתיים בפאזות שונות בחיי כשחיפשתי עבודה) סופו שלא עושה את ההחלטות הטובות ביותר האפשריות בתהליך הגיוס. כמובן שהתעלמות מוחלטת מגישה כמו "מחפשים תכנת C ארבעה כוכבים" לא מבטיחה, כשלעצמה, גיוס מוצלח - ובכל זאת למיטב ניסיוני ושיפוטי נכון להתעלם משיקולים קטנוניים כאלו2. יכול להיות שהשאלה היא מה האופק שלך: אם מדובר בסטרטאפ שהחמצן הולך להיגמר לו עוד 8 חודשים זה דבר אחד, ולעומת זאת אם אתה מאמין שעובד טוב יכול לפתח אצלך קריירה של שנים זה דבר שונה. _________ 1 אני מדבר על התמחות צרה כמו "שפה", להבדיל מהכרות מעמיקה עם דיסציפלינה שלמה כמו "תקשורת", "ארכיטקטורת שרת\לקוח", "קומפיילרים", "בסיסי נתונים", "עיבוד אותות", או realtime - שם כבר יש למומחיות והתמחות משקל ומשמעות. 2 וכמו לכל כלל, גם כאן יש יוצאים מהכלל: מי שחיפש באוגוסט 1999 מהנדס כדי להבטיח שמערכת מיושנת לא תיפול על באג 2000, צדק כשהתעקש על היכרות מעמיקה ואינטימית עם קובול - לא תמיד יש זמן ללמוד... מצד שני, המהנדס שנשכר לא היה צריך להיות מופתע כשבמרץ 2000 שוב שלח קו"ח לכל עבר. |
|
||||
|
||||
2- אנחנו מחכים בסבלנות לבאג 10000. הטמבלים הקצו רק ארבע ספרות עבור השנה. |
|
||||
|
||||
עד כמה שידוע לי, מחשבים לא עובדים בשיטה העשרונית. האם בקובול זה אחרת? |
|
||||
|
||||
המחשבים לא עובדים כך, אבל כך האנשים עובדים. והתוכנה נכתבת ע"י ובשביל אנשים. לכן תמצא שם שימוש בספרות. דוגמה: כל מיני מקומות שבהם משתמשים במיון עפ"י סדר התאריכים. שים לב, לדוגמה, לקוצר הראות המזעזע של אנשי אובונטו: עוד פחות ממאה שנים הם יאלצו לשבור את שיטת הגרסאות שלהם. דרך אגב, יש להם עוד כ־6 שנים להחליט מה לעשות עד שייגמרו להם האותיות. יכול להיות שהם יחזרו להתחלה, כמו עם ההוריקנים. הנה מישהו שלא חשב על כך מראש: |
|
||||
|
||||
>> קוצר הראות המזעזע של אנשי אובונטו: עוד פחות ממאה שנים הם יאלצו לשבור את שיטת הגרסאות שלהם. איזו בעיה תהיה לאובונטו להוציא גרסה 100.04 (וחצי שנה אחר כך 100.10) עוד 90 שנה? |
|
||||
|
||||
השאלה היא איפה מניחים שמספר הגרסה הוא פשוט שתי הספרות האחרונות (ואיפה מניחים שאפשר לעשות מיון פשוט לפי מספרי הגרסאות, ועוד). דרך אגב, כאן המקום לציין את אנשי פדורה, שלא נפלו למלכודת של מאגר מוגבל של כינויים. השיטה שלהם היא שכל כינוי צריך להיות קשור לקודמו: |
|
||||
|
||||
נראה לי שהדיעה שלנו זהה ואנחנו מתמקחים על ניואנסים. (וגם נראה לי שיש סתירה קלה בין ה''שלישית'' בתגובתך ל''יכול להיות'', אבל לא בא לי להיות קטנוני.) |
|
||||
|
||||
אנסה לנסח מחדש את "שלישית" ו"יכול להיות" בצורה שתבהיר את כוונתי: בהינתן מעסיק שאופקיו צרים עד כדי כך שהיכרות אינטימית עם שפה ספציפית מהווה עבורו שיקול רציני ולגיטימי, כדאי לשקול ברצינות אם את בכלל רוצה להצטרף למבנה כה רעוע. הבעיה היא כמובן עם הזן הנפוץ יותר: מעסיק טוב, ששיקול זה *למעשה* חסר חשיבות עבורו, שמחמת תהליך גיוס פגום ושיקולים מוטעים, נותן לפרט הטפל הזה משקל רציני. |
חזרה לעמוד הראשי | המאמר המלא |
מערכת האייל הקורא אינה אחראית לתוכן תגובות שנכתבו בידי קוראים | |
RSS מאמרים | כתבו למערכת | אודות האתר | טרם התעדכנת | ארכיון | חיפוש | עזרה | תנאי שימוש | © כל הזכויות שמורות |