Should <designers></code>? (Hebrew)
קודם כל, גילוי־נאות: אני מעצב־מתכנת. את הפורטפוליו שלי אפיינתי, עיצבתי ופיתחתי בעצמי. אפילו היה לקוח שהאשים אותי שהאתר שלי הוא טמפלייט קנוי. (אני עדיין מחכה לקבל קישור לטמפלייט ש”קניתי”). מה שבעצם אני רוצה לומר הוא שאני מרגיש שאני יכול לדבר על הנושא ולסקור אותו מזוויות שאוהבים להתעלם מהן.
הסיבה שהחלטתי לכתוב על נושא זה (ובעיקר לכתוב אותו בעברית) היא כי נתקלתי בפוסט הזה “מעצבים צריכים לדעת לפתח”. כותב הפוסט מציין שהוא מתבסס על דברים שאמרו אחרים ברשת. כאמור יש גם דעות אחרות ואני בה לייצג את חלקן. אני לא הולך להגיד לאף מעצב שרוצה ללמוד תכנות, אל תעשה את זה. אבל יש השלכות בעבודת תכנות על־ידי מעצב שכדאי לקחת אותן בחשבון.
ידע בתכנות = כח
ידע אף־פעם לא מזיק, להפך. מצד שני, מעולם לא שמעתי על מקומות־עבודה שמחפשים מעצב עם ידע בפסיכולוגיה או עריכת־דין. בלא מעט מקרים ידע מסוג זה יכול להיות שימושי ואפילו יותר.
הבעיה מתחילה כשמעצב ניגש לעבודת־עיצוב הוא לא יכול לדעת את האפשרויות או חוסר־האפשרויות שעומדות בפניו. אין לו זמן לדעת מה הולך בתקנים של ה־W3C, מה התוכניות של גוגל, אפל, מוזילה ומיקרוסופט לדפדפנים שכולם משתמשים. חוסר־זמן שנובע בעיקר בגלל כמות החומר והשינויים שקורים כל הזמן בתחום.
קריזה של מעצב יכולה להכניס קוד שעתיד התמיכה בו אינו ברור ומחר הוא יכול להפסיק להיתמך. סה”כ הכוונה טובה. המעצב רוצה ליצור אתר יותר מועצב, אבל לא היה לו את הזמן או היכולת המקצועית להבין שהוא מכניס קוד ניסיוני שעתידו לא ברור.
אגב, מילה על תכנות Native, כמעט כל הכללים של לדעת HTML / CSS לא חלים עליו. זה לא אומר שיש דברים שאפשר לעשות ב־HTML ואי־אפשר ב־Native. זה אומר שמה שנראה ממש פשוט ב־HTML יכול להסתיים בהרפתקה יקרה ולא רצויה ב־Native. אם נמשיך בגישה הזו, אז למה שמעצבים לא ילמדו גם Objective-C, Java, C Sharp ועוד כל מיני דברים מגעילים כאלה?
העולם של היום לא יכול להסתמך על סופרמנים
אז איפה כדאי למעצב להשקיע את זמנו? להתעדכן בטכנולוגיות חדשות זה משהו שקשה גם למתכנתים כי היא משתנה כל־כך מהר, אלא אם יש לך כשעתיים ביום שמוקדשות רק בשביל זה (וזה כולל סופ”שים). אז בהצלחה למי שרוצה להיות מעודכן בשתי העולמות.
מעצב הוא לא מתכנת. אל תצפו ממעצב לדעת תכנות. אם תתנו למעצב לתכנת רוב הסיכויים שזה יסתיים בקוד מנופח בגודלו ממה שצריך, קוד עם בעיות נגישות, קוד עם בעיות בביצועים (ובעיות קשות), קוד לא מודרני, סיכוי לא קטן לבעיות אבטחה (על XSS שמעתם?) והכי גרוע: קוד לא שמיש, כזה שהדבר הראשון שהמתכנת יעשה זה למחוק ולהתחיל מחדש.
לכתוב HTML ו־CSS זה קל. לכתוב אותם נכון זה משהו שהטובים ביותר בתחום מתקשים ומתווכחים עליו וזה עלול להוביל הרבה פעמים להבדל של אפילו עד פי 10 בביצועים, שלא לדבר על לפתור בעיות תחזוקה בהמשך ועוד.
אומרים גם שהידע בתכנות מביא לכך שמעצב מנסה טכנולוגיות חדשות. עצוב להודות, אבל טכנולוגיות חדשות הן לא מושלמות, ותאמינו או לא זו אפילו לא הבעיה. זה לא חוסר בידע שמהווה חסם, זה חוסר־ברצון לעשות עיצובים שונים ומקוריים בדפדפן. אין הרבה בעלי־מקצוע בעלי מוטיבציה לעשות דברים חדשים ובנוסף שמוכנים לקחת את הסיכון, כי הוא יכול להיות כואב בכיס כשטכנולוגיה מסתברת כלא בשלה.
בסופו של יום, כמה מעצביי־פרינט טובים אתם מכירים שיודעים איך דפוס־דיגיטלי עובד? כמובן שיש מעצבים סופרמנים תותחים נינג’ות מעולים וכמובן שהם מתכנתים יותר טוב מג’ון קרמק (מתכנת שבזמנו הפנוי מייעץ ל־NASA). אבל הם בודדים וימשיכו להיות בודדים. אם יש תכונה משותפת למעצביי־האינטראקטיב הכי טובים שאני מכיר, היא לא ידע בתכנות אלא, שהם חכמים.
בפיתוח יש הבדל בין הבנה למימוש
אלה שני דברים שונים. בבקשה אל תבלבלו ביניהם. הבנה בטכנולוגיה ומה היא מסוגלת או לא מסוגלת לעשות אינה קשורה לידע בתכנות, וידע לא מספק בתכנות יכול לגרום ליותר נזק מאשר תועלת. אני לא אחזור על נאום ה־“קוד הגרוע”. אבל אני תוהה, מישהו באמת חושב שידע ב־web components יכול לגרום למעצב לעצב טוב יותר? אולי ידע ב־MVC? אם אתם מעצבים, זה בסדר שלא הבנתם על מה דיברתי. אתם לא אמורים לדעת מה המושגים האלה אומרים. הייתי מוסיף ואומר שזה אפילו די מיותר מבחינתכם לדעת. אבל מתכנת שלא יידע, זה מתכנת שאני לא ארצה לעבוד איתו.
עם זאת, לדעת מה זה History API זה משהו שכל מעצב שמעצב לדפדפן צריך לדעת, לרגע אני לא מצפה ממנו לדעת איך מתכנתים את זה. זה פשוט לא העיסוק שלו.
בנוסף כל מעצב צריך לדעת שפונטים ב־Illustrator ו־Photoshop לא ייראו אותו הדבר ב־Safari, ב־Chrome וב־Internet Explorer. האמת שזה משהו שגם כל מתכנת צריך לדעת ועם זאת, רובם לא יודעים.
בנוסף, יש גם בעיה קשה שנקראת תאימות־דפדפנים. ברמה הבסיסית מעצב צריך לדעת שב־Internet Explorer 8 אין פינות מעוגלות, אבל שם זה בערך מסתיים (נכון להיום) ולגבי המתכנת, אם טובי המתכנתים לא באמת יודעים ורובם באמת לא יודעים לגבי כל אפשרות ואפשרות איפה היא נתמכת או לא, קשה לצפות זאת ממעצבים.
דרושים נינג’ות!
אני אחלק את זה לשתי קטגוריות שונות:
- עצמאי
- שכיר
כמעצב עצמאי ובטח בודד, אתה בבעיה. אתה חייב למכור חבילה כדי שהלקוח יהיה מעוניין. מצד שני, אם עדיין אין לך שם, אתה לא יכול לגבות מחיר נורמלי, כי החלק של התכנות מאוד יקר. גם אם אתה שוכר הודים בשביל פיתוח, הצורך לעשות שינויים קטנים בעצמך, בלתי נמנע.
אבל איך שהוא רוב אלה שכותבים על כך שמעצבים חייבים לדעת לתכנת, לא עושים את זה מרצון לעבוד כעצמאיים או עם עצמאיים. הם עושים את זה מלקדם אינטרסים פרטיים. איך שהו לרוב זו דרישה שמגיעה ממנהלי־חברות שמעוניינים לשלם פחות, וזו אחת הסיבות למה אנחנו לא רואים מודעות דרושים בסגנון “דרוש מתכנת תותח עם ידע מוכח בעיצוב”. שכר מתכנת יקר משמעותית משכר מעצב. בסופו של יום, מנהלים רוצים לשלם פחות, לא ההפך.
יש גם את הטיעון שגוגל ופייסבוק דורשים מכל המעצבים שלהם לדעת לתכנת:
- בואו נודה, פייסבוק הוא אחד האתרים האחרונים שמדברים עליו כאתר “מעוצב”. יש גם וויכוח לגבי האיפיון שלו אבל זה כבר לדיון אחר
- לגבי גוגל, דווקא העיצובים של גוגל שכולם מתלהבים מהם, לא נעשים בגוגל. הם נעשים בכל מיני סטודיואים חיצוניים. השינויים המסיביים האחרונים שכולם נדהמים מהם, נעשו על־ידי סטודיו חיצוני, לא על־ידי מעצבים שעובדים בגוגל
אז מה אנחנו צריכים?
אנחנו נמצאים בתקופת מעבר בין מדיות וטכנולוגיות. הכלים שיש לנו מיושנים או מותאמים למדיות אחרות כגון דפוס וברודקאסט. גם בתחילת עידן המחשב־האישי, לא היו כלים מספקים לשום מטלה, לקח זמן עד שהכלים הגיעו לבשלות. למזלינו התהליך הזה הרבה יותר מהיר היום. אנחנו נגלה שכלים מסורתיים כמו Illustrator ו־Photoshop יעברו שינוי מסיבי או שיוחלפו על־ידי תוכנות חדשות (לפחות בכל הקשור לעיצוב־אינטראקטיב).
אבל מה שאנחנו באמת צריכים זה אנשים שיודעים לעבוד בצוות. יש הרבה מפתחים עם אגו בעייתי, אבל בואו נודה שלרוב המעצבים יש אגו שלא היה מבייש אפילו ביחס לאגו של הרודנים הגדולים בהיסטוריה. יש למעצבים בעיה של עבודת־צוות שלרוב המפתחים אין, פשוט כי בפיתוח אין לך ברירה בלעבוד עם קוד של אחרים. למעצבים יש פריבילגיה שכמעט תמיד באים אליהם בשביל להתחיל עיצוב חדש מאשר לעבוד על עיצוב שמישהו אחר התחיל.
אגב, יש אופנה שנקראת עיצוב בדפדפן, לגבי זה נאמר: “להשתמש בתוכנות עיצוב בשביל לעצב? מה השתגעתם?!” ומי שלא הבין, זה נאמר עם הרבה ציניות על־ידי Chris Coyier שהוא אחד מהגורואים של CSS. מי אני שאתווכח איתו?
לסיכום
אני ממליץ ללמוד תכנות אבל מסיבות אחרות. תכנות זה בעיקר פילוסופיה (כן!). זו פילוסופיה שעוזרת לי בהרבה תחומים אחרים כולל עיצוב וממש לא מהידע אם אפשר או אי־אפשר לממש עיצוב. זה נובע מעקרונות שנועדו להקל על המפתח לעבוד עם הקוד של עצמו. לצער כולם, אלה דברים שבקושי תמצאו ב־HTML ו־CSS.
עם זאת, יש הרבה דברים שמעצבים צריכים לדעת. אבל לדעת לכתוב CSS זה לא אחד מהם. כן, זה יתרון אבל בהשוואה לדעת איך לפרק את העיצוב לאבני־בניין נכונים ובעיקר איך לעבוד בצוות, לדעת לכתוב CSS כמעט לא רלוונטי. לתת למעצב לתכנת CSS יכול לגרום לדחיפת קוד שיהרוס את המוצר הסופי ולאו דווקא יעזור במימושו.
אם אנחנו רוצים ליצור מוצרים יותר טובים, אנחנו לא צריכים להכריח מעצבים ללמוד תכנות, אנחנו צריכים להכריח אותם ללמוד לעבוד בצוות. עבודת־צוות זו הדרך היחידה שנוכל להפוך את עולם־האינטראקטיב לטוב יותר.