מתודות עבודה

הדרך שהולכים בה פחות – מה הדרך הטובה ביותר לפתור בעיות?

By אוקטובר 12, 2017 2 Comments

"משתי הדרכים שביער עבות, בחרתי בזו שהלכו בה פחות"

the road not taken, רוברט פרוסט, בתרגום עדנה אולמן מרגלית

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

פתרון בעיות דאטה בדרכים שונות

בחירת הדרך לפתרון תהיה מורכבת יותר ככל שיש לכם יותר ידע

מה הדרך הנכונה לעבוד עם מאגר מידע, מה הדרך הנכונה ביותר לנתח מידע?

אקסל? פייתון? אולי בכלל SQL?

איך יהיה הכי נכון את הנתונים?

R? אולי דווקא ב-seaborn? אולי זה מספיק בשביל וויזואליזציה של אקסל?

איזה גרף להשתמש?

קופסאות? Violin plots? גרף פיזור?

 

אז ככה, התשובה היא, למרבה ההפתעה, לא נכונה תמיד לכל המקרים –

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

  1. מהירות הפתרון.
  2. מורכבות הפיתרון/אלגנטיות הפתרון.
  3. שיתופי פעולה הכרחיים על מנת להגיע לפתרון.

עולם העסקים משתנה במהירות, הצורך בתוצאות נשאר קבוע

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

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

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

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

 

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

(מאסלו)

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

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

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

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

 

שיתופי פעולה הכרחיים על מנת להגיע לפתרון

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

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

במקביל, רק בשביל הנקודה,  סרקתי את הדפים הרלוונטיים עם פייתון ושלפתי את המידע – את המידע בפועל קיבלתי שלושה ימים אחרי בבקשה שלי –

למה?

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

הדבר היחיד שחששתי ממנו, הוא שאולי המידע שאני אשאב יהיה לא מדויק או עדכני, ולכן לא היה מנוס אלא לבדוק את זה אל מול הנתונים שהוא שלח (במקרה שלנו, הכל היה בסדר).

ולסיכום?

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

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

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

 

 

אה, ועוד משהו שאני מנסה (אולי לא תמיד מצליח) – תהיו צנועים.

 

2 Comments

  • איילת הגיב:

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

    • analysis-paralysis הגיב:

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

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

Leave a Reply