Syntax Error

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

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

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

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

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

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

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

☼ עוד מאת מאיר סדן ← גאים להציג: אנטייטלד אובג'קט

  1. 1
    שבת 20.02.2010, 20:20

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

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

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

  2. 2
    יום ראשון 21.02.2010, 0:42

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

    ובעניין אחר, נדמה לי שהתיכנות as in, תיכנות יילך ויהפוך לעבודה שחורה, עבודת מפעלים. תמיד יהיה משהו ב-Level גבוה שיידרוש את האיש החושב, אבל אני חושבת שנלך עוד שלב אחד של מרחק משפת מחשב, שפת תוכנה. אבל נבואה ניתנה לשוטים :)

  3. 3
    יום ראשון 21.02.2010, 0:45

    והרדיו מהלינק על דיטר… אאוץ'!
    http://images.mouse.co.il/storage/e/1/02_pp_radio.jpg

  4. 4
    אלדד אבל
    יום ראשון 21.02.2010, 11:01

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

  5. 5
    אסתר פרישמן
    יום ראשון 21.02.2010, 15:14

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

  6. 6
    יום שני 22.02.2010, 1:34

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

    לול @ניר, זה באמת מתאים לך לעצב את האינדנטציות בקוד :)

  7. 7
    יום שני 22.02.2010, 19:51

    מסכים עם מאיה, ש-css זה עיצוב לכל דבר. ההבדל הוא בממשק: בפוטושופ בוחרים מתוך ארגז כלים ומחילים (we apply – יש מילה פחות מוזרה?) עם סמן העכבר, וב-css בוחרים באמצעות כתיבה ומחילים באמצעות כתיבה.
    כשזה מגיע לעיצוב של חוויה אינטראקטיבית, קוד הופך להכרח; אבל שוב, מדובר בסוגיה ממשקית, לא מהותית – ישנם ממשקים גרפיים לתכנות קוד (Quartz Composer זו דוגמה יפה).
    אני הייתי פריק של אינדנטציות – הייתי מכניס שורה גם אם לא כל כך צריך. אני קצת חוזר לזה לאחרונה – זו השיטה הכי טובה, מלבד הערות מילוליות, להפוך קוד לקריא.
    במישור המהותי, שוב זה דיון של "חומר מול לא-חומר" – היעלמות הנייר, הדיו והמגע החם והחלפתם במכשירי קלט-פלט קרים, שאם נפשיט מהם את הממשק נקבל צרכן קוד כפייתי שיורה אפסים ואחדות.
    אה, ולגבי כל סוגיית החינוך – בסופו של דבר לא תהיה ברירה אלא ללמד איזשהם עקרונות תכנות. מעניין לבדוק את העשייה בתחום החינוך לתכנות בהקשר הזה.