פורסם במקור בבלוג עיצוב שמיש, בתאריך 23/06/10
לא מעט אנשי חוויית משתמש, בין אם הם חדשים לתחום או וותיקים, תוהים לדעתי עד כמה ומה עליהם לדעת בכל הקשור לסביבה הטכנולוגית בה הם פועלים. מכיוון שלתחום שלנו מגיעים אנשים מרקעים מקצועיים מאוד מגוונים ישנם אלו שאכלו ושתו שורות קוד לארוחת בוקר וכאלה שהמילה "תיכנות" זרה להם ואולי אף יוצרת אצלהם רתיעה מיידית. מי שעוסק בתחום אינו חייב לבוא מרקע תיכנותי אך הוא כן צריך לדעתי להכיר את התנאים הטכנולוגים בהם הוא פועל ומעבר לכך, להבין ברמה בסיסית איך נראים הדברים מהצד של המתכנתים שיממשו את התכנון שלו.
אחת לכמה זמן פונים אלי אנשים הרוצים להכנס לתחום של איפיון ממשקים ואחת השאלות הנפוצות שאני נשאל היא עד כמה חשוב לדעת לתכנת. התשובה האוטומטית שלי, המבוססת על נסיון אישי, היא שרקע בתיכנות הוא פלוס רציני מכיוון ש:
1. הוא מאפשר לאיש חוויית המשתמש להבין טוב יותר את העולם בו פועלים מתכנתים מבחינת אילוצים, מגבלות ויכולות ועל ידי כך לצמצם חיכוכים וקצרים בתקשורת
2. הוא מאפשר לאיש חוויית המשתמש לחשוב איך ניתן לנצל יכולות טכנולוגיות ומשאבי מחשב בשביל ליצור חוויית משתמש חיובית
3. הוא מאפשר לאיש חוויית המשתמש להבטיח שהחזון שלו לממשק אינו לגמרי תלוש מהמציאות
במקרים רבים (במיוחד בסביבת פיתוח במתודולוגיית Agile) אנשי חוויית המשתמש עובדים ביחד עם מתכנתים וישנה שקיפות של תהליכי העבודה שמאפשרת לשני אנשי המקצוע לתרום מהידע שלהם ולהבטיח שהאיפיון הינו בר-מימוש טכנולוגי ושהמימוש הטכנולוגי הינו שמיש ונבנה בהתאם לאיפיון. מהבחינה הזאת, אנשי חוויית המשתמש אינם מנותקים ודיאלוג רציף עם מתכנתים עוזר להבטיח שאפשר יהיה לבנות בצורה אפקטיבית את הממשק ששורבט על נייר. כל זה טוב ויפה אך עדיין לא אומר לדעתי שאיש חוויית המשתמש לא צריך להבין את השיקולים הטכנולוגיים הבסיסיים ביותר.
הרשימה הבאה מונה מספר שיקולים טכנולוגים בסיסיים ומיועדת לאנשים שאינם באים מרקע טכנולוגי של תיכנות ובניית אתרים אלא מרקעים מקצועיים ואקדמאיים פחות טכנים כגון מדעי ההתנהגות, תקשורת, שיווק, עיצוב גרפי ופסיכולוגיה קוגנטיבית.
1. ממשק נוצר בטכנולוגיה כלשהי
ממשק יכול להיות ממומש באחת מתוך כמה טכנולוגיות-כלים-סביבות פיתוח כאשר לכל אחת יש את היתרונות והחסרונות שלה. אלה כוללות לדוגמא פלאש, html, ג'אווה, סילברלייט, Objective C (לאייפון, אייפד ואייפוד). כאשר מתחילים לעבוד על פרוייקט חשוב להבין ברמה הבסיסית את האילוצים הבסיסיים של הטכנולוגיה בה ימומש הממשק כמו למשל העובדה שמשתמשים ידרשו להתקין פלאג-אין בשביל להשתמש בממשק שפותח בפלאש או בסילברלייט. בסביבה אירגונית למשל יכולות להיות לכך השלכות לא פשוטות. בנוסף, לכל טכנולוגיה יש בדרך כלל אוסף של רכיבי ממשק קיימים והעבודה שלנו היא לדעת איך לסדר אותם בקומפוזיציה המתאימה בהתאם למה שאנשים אמורים לעשות עם הממשק. יצירת רכיבי ממשק חדשים ומקוריים לא תמיד תתאפשר.
2. ממשק = קוד
מימוש ממשק דורש לעיתים קרובות כתיבת קוד. קוד יכול להיות קצר ופשוט או ארוך ומסובך. זה מאוד תלוי במי שכתב אותו, מה שהוא אמור לעשות ושפת התיכנות בה הוא נכתב. כאנשי חוויית משתמש אולי לא תכתבו שורת קוד אחת בחייכם אבל כל החלטה שלכם ממיקום של כפתור עד חישוב המיקום של המשתמש תחייב מישהו לכתוב קוד. אם מדובר בדרישה בסיסית ומוכרת כתיבת הקוד יכולה להיות מהירה ואולי אף תסתכם ב-copy-paste ממקור קיים. מאידך, מימוש של רעיון מקורי וחדשני יכול להסתכם בימים ושבועות של כתיבה ותיקון קוד. לא תמיד יעמדו לרשותכם הזמן, הכסף וכח האדם בשביל להתעסק עם כתיבת קוד מורכב.
3. "אופס. זה לא עובד."
מי שכותב קוד בדרך כלל מעביר הרבה זמן בטיפול בבאגים (תיקון קוד שלא עושה את מה שאנחנו מצפים ממנו). זה בלתי אפשרי לחזות מראש מה יעבוד ומה לא יעבוד ולפעמים דברים לא עובדים ללא הסבר. איש חוויית משתמש צריך לדעת שכשהוא שואל מתכנת לדוגמא האם אפשר לתכנת רכיב שיאפשר לאנשים לגרור שני אובייקטים במקביל ולהניח אותם בתוך איזור מוגדר על המסך גם אם המתכנת מחייך בסיפוק ואומר "ברור! אין בעיה!", בפועל יכול להיות שכן תהיה בעיה. זאת אחת הסיבות מדוע תכנוני ממשק הם מאוד נזילים ומשתנים לפעמים לעיתים קרובות. גם אם האיפיון הראשון שלכם היה מושלם והגדיר את הממשק הכי שמיש ופונקציונאלי בעולם יכול להיות שהמימוש שלו יתקל בקשיים גם עם צוות המתכנתים הכי מוכשר שהבטיח פה אחד שלא תהיה בעיה לתכנת אותו.
4. הממשק הוא רק קצה הקרחון
ממשק משתמש הוא חלק ממערכת מורכבת שרובה נמצא מתחת לפני השטח הרחק מעינו של המשתמש ועיניכם. הרבה מהדברים שקורים בממשק דורשים תקשורת והתממשקות עם מערכות אחרות כמו שרת ומסד נתונים. למערכות הללו ישנן מגבלות ואילוצים שמשפיעים בצורה ישירה ועקיפה על תכנון הממשק שלכם. לדוגמא, אתם יכולים להגדיר באיפיון שהמשתמש יוכל לחפש לפי קריטריון מסויים אך בפועל ביצוע פעולת החיפוש הזאת בין מיליוני רשומות עלולה לקחת מספר בלתי נסבל של שניות. שליחה וקבלת נתונים הם מרכיב בסיסי של כל ממשק המושפעים מזמינות חיבור אינטרנט, איכות חיבור האינטרנט וכו'. בזמן איפיון הממשק קחו בחשבון שהוא לא מתקיים בוואקום ומהירות התגובה שלו והפונקציונאליות שלו יהיו תלויים במערכות אחרות.
5. ממשק תמיד יעטף במספר שכבות טכנולוגיות
הממשק שאתם מתכננים יחיה ויתקיים בסביבות שונות ומגוונות (מערכות הפעלה, רזולוציית מסך, דפדפנים, מכשירים). הסביבות הללו משפיעות על הגודל שלו, המקום בו ישתמשו בו, התוכנות איתן הוא יוכל להתממשק ועוד הרבה דברים אחרים. לשרבט מסכים על מפית וליצור אבות טיפוס בכלים שונים זה מצויין אך התוצאה הסופית, בין אם היא ממשק למכשיר נייד או אפליקציית דסקטופ, תתקיים בסביבה שתשפיעה בצורה ישירה על חוויית השימוש. חשוב לזכור שממשק לעולם לא יתקיים לבד בחלל האוויר ומומלץ לקחת בחשבון את העולם בו הוא יתקיים.
אשמח להוסיף נקודות נוספות שיעלו בתגובות.
תודה רבה אמיר! בהחלט נקודות חשובות.
יש לך עצה איך להתקדם הלאה בנושא הזה? האם אתה יכול להפנות למקור שנותן סקירה למאפיינים על הטכנולוגיות הנפוצות והיכולות והמגבלות שלהן?
היי יוסף. לצערי אני לא מכיר מקורות שנותנים את הסקירה שאתה מתאר ונכתבו עבור אנשי חוויית משתמש, או כל בעל מקצוע אחר לצורך העניין שאינו עוסק בתיכנות. אני מאמין שגם אם ישנה איזשהי סקירה של יכולות ומגבלות היא תהיה מכוונת למתכנתים ויותר מידי טכנית למי שלא מעורה בתחום. את הידע הכי טוב לומדים לדעתי דרך "צלקות" ולפעמים צעקות 🙂