TechTalkתובנה של הייטקיסט-מוזיקאי: לתכנת זה כמו לנגן בטרומבון
TechTalk
תובנה של הייטקיסט-מוזיקאי: לתכנת זה כמו לנגן בטרומבון
גם כדי להיות מתכנת צריך לדעת לאלתר בעזרת כלים שנרכשו במאמץ רב, ממש כמו טרומבוניסט בלהקת ג'אז שמג'מג'מת בברים. ינון גולן סבור שהעובדה שהוא גם זה וגם זה תורמת מאוד לביצועיו בשני התחומים. מתכנת, לדידו, הוא לא פחות "אמן" ממוזיקאי
אם תחפשו "אומנות" בויקיפדיה, המשפט הראשון יהיה "אומנות היא מלאכה הנעשית על ידי בעל מקצוע שהגיע לדרגת מומחיות בתחומו". המשפט השני: "מבחינה פילוסופית ההבדל בין אמנות לאומנות טמון באופן השימוש בתוצרים שלהן".
יש קונצנזוס על הטענה שמוזיקה היא תוצר של אמנים - מה שהופך אותה לאומנות - אבל האם תהיה הסכמה לטענה שפיתוח תוכנה גם הוא למעשה אמנות שתוצרו היא מערכת טכנולוגית? אם נסכים על כך, אז נגזרת הכרחית היא המסקנה שמהנדסי תוכנה הם למעשה אמנים.
במאמר זה אני טוען שמהנדסי תוכנה הם אכן אמנים שיוצרים יש מאין, כשלרשותם סט של כלים וידע המקביל לזה של המוזיקאי וכי ההבדל בין שני תחומי האמנויות טמון אך ורק באופן השימוש בתוצרים שלהן. לפני 30 שנה התחלתי לנגן בטרומבון - כלי נשיפה ממתכת, כ-9 מטר של צינור שכופפו אותו עד שהתקבל צליל נעים, נמוך משל חצוצרה וגבוה משל טובה. הכלי מפורסם בעיקר ביכולתו ליצור "גליסנדו" טבעי - צליל רציף, עולה או יורד, שמתקבל בשימוש בסלייד (Slide), אותו יכול הנגן להחליק מעלה ומטה כדי לשנות את גובה הצליל.
בשיעור הראשון הנגן הצעיר לומד הפקת צליל ולאחר מכן את רוב האימון הוא יעביר בנגינת צלילים ארוכים. המטרה העיקרית בשיעורים היא חיזוק שרירי השפתיים. לאחר שיגיע הנגן ליכולת בסיסית של הפקת צליל, הוא יתחיל בלימוד תווים, בדגש על לימוד סולמות.
בדומה לנגן הצעיר שמתחיל את דרכו באומנויות הבמה, כך גם מפתח תוכנה מתחיל את דרכו בלימודי הנדסה, במדעי המחשב, במערכות מידע או בלימודים זהים\מקבילים אחרים. מקצועות לימוד ראשונים הם כמעט תמיד "מבוא ל… ", בליווי מקצועות מתמטיים שונים שבהם ירחיב האמן הצעיר את ידיעותיו ומחשבותיו, כשגם כאן המטרה העיקרית היא חיזוק שרירים, פחות בשפתיים ויותר באזור הראש.
לנגן טרומבון צעיר ייקח בממוצע שנה להגיע לצליל חזק, יציב, וברור, ובתוספת של כמה שנות לימוד ונגינה בהרכבי תזמורת נוער יוכל לבסוף הנגן הצעיר להגיע לרמה שבה יוכל להוביל יצירות קצרות, אך חייו כנגן שיכול להופיע על במות עוד רחוקים בשלבים אלה. למזלו של הנגן המתחיל הממוצע, גילו כנראה 6-10, כך שעד גיל 18 הוא יוכל ללמוד לא מעט ולהפוך לנגן שגם מסוגל להופיע.
ומה עם המפתח שלנו? מצבו מאוד דומה. לאחר 3-4 שנות לימודים רמת הידע שלו בסיסית ביותר ודרכו למומחיות בתחום עוד רחוקה, אך כמו המוזיקאי, לאחר 10 שנים בתחום גם הוא יוכל למצוא התמחות, בהינתן שהמשיך להשקיע וללמוד - וגם כאן, קצת כישרון לא יזיק.
מה, בעצם, הופך את את הנגן לאמן? בראש ובראשונה, היכולת ליצור מוזיקה - בין אם זה בנגינה, בכתיבה של מוזיקה חדשה, או עיבוד למוזיקה של אחר. ב-15 שנים האחרונות אני לומד את מוזיקת הג'אז - מוזיקה שמתמקדת בעיקר ביכולת של הנגן לאלתר (אלתור - תופעה שהחלה בשנות ה-20, בה נגנים מנגנים קטע מוזיקלי קצר שאחריו הם מנגנים משהו בספונטניות, תוך הישענות על הקצב ועל ההרמוניה של הקטע המוזיקלי המקורי).
למרות הספונטניות שבאלתור, הנגן מגיע עם אוצר מילים, אותו למד ויצר לפני, כך שברגע האלתור הנגן בעצם מלחין יצירה קצרה המורכבת מאותן המילים. ככל שלנגן יש אוצר מילים יותר רחב, כך הוא ימצה את יכולתו הווירטואוזית מול מאזיניו.
ומה עם המפתח שלנו? הרי הדבר זהה. על כל מפתח תוכנה מוטלת החובה ללמוד שפת תכנות ולהעמיק בה, בדומה ללמידת תווים. בנוסף, המפתח ילמד כלים נוספים שירחיבו את יכולתו לפתור בעיות מתקדמות. ניקח דוגמא מיום ממוצע בחייו של המפתח, הכולל פתירת באג Production. ברגע לחוץ לזה, על המפתח לדעת לאלתר, למצוא את שורש בעיית הבאג ולחשוב על פתרון מהיר ויעיל בעזרת הכלים שברשותו. ככל שלמפתח יש יותר מילים, כך יכולתו הווירטואוזית לאלתר, למצוא ולפתור את הבאג תגדל.
בסופו של יום, יצירתו של המפתח היא המערכת עליה הוא עובד. בחלק מהמקרים יידרש להפגין במסגרת העבודה עליה יכולת אלתור ואף וירטואוזיות. שמירה על ההרמוניה חשובה גם כן שכן זו יכולה להתפרש כמאין flow במערכת - אלגוריתם או מספר שירותים שמתקשרים ביניהם להעברת נתונים ממקום למקום - שהוא תוצר של יצירתיות שמשתנה בין מפתח אחד לאחר.
לכן, אני טוען שמפתח שהגיע למומחיות הוא אמן וההבדל בינו לבין מוזיקאי הוא פילוסופי, כשהתוצרים שלהם ואופן השימוש בהם פשוט שונה. ההמלצה שלי למתכנתים שביניכם: לכו תלמדו מוזיקה ותגלו שההשקעה מובילה ליצירתיות אינסופית - וזו תעזור לכם גם בעבודתכם בהייטק. כפי שעזרה לי.
ינון גולן הוא Director of R&D בחברת סקאי