Monday, November 19, 2018

שמן נחשים להמונים

Snake oil for all

Source: http://thehealthcareblog.com/blog/2016/06/28/the-patient-and-the-snake-oil-salesman/

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

ולמה נזכרתי בזה עכשיו? טוב ששאלתם. נתקלתי לאחרונה בפרסומת ל"סדנת אוטומציה", אתם יודעים, הדברים האלה שמבטיחים לכם שבתוך חמש דקות ובלי מאמץ או ידע קודם, אפשר לכתוב אוטומציה. 
בדרך כלל, אני רואה את הדברים האלה ומתרגז בשקט, כי ברור לי לגמרי מה הולך להיות שם בסדנה, או בקורס, או איך שלא רוצים לקרוא לזה - ייקחו חבורה של אנשים שרוצים באמת ובתמים ללמוד משהו, יושיבו אותם מול מחשב, יכתיבו להם כמה שורות קוד, הם יראו דפדפן רץ מול העיניים שלהם ויחשבו "הנה, יש אוטומציה". יש בערך מיליון דברים בעייתיים עם הגישה הזו, אבל לא לשם כך התכנסנו, כי הפעם החלטתי לחרוג ממנהגי וביקשתי ממעביר הסדנה להגיע ולהשתתף. אחרי הכל, מה הן כמה שעות מהחיים שלי עבור היכולת להשמיץ אנשים בצורה מבוססת?
חוץ מזה, אם אני כבר משקיע זמן כדאי להיות הוגן. אז החלטתי להגיע עם ראש פתוח ועם כמה קריטריונים:
  1. הצגה הוגנת של הסדנה - מדובר בסדנה של שעתיים בערך, אי אפשר באמת להספיק המון, חשוב להציג את היעדים בצורה ריאלית כדי שהמשתתפים ידעו למה לצפות. 
  2. האם יש יתרון על פני צפיה בתוכן באינטרנט?
  3. יחס למקצוע (במקרה הזה - לאוטומציה). 
  4. עד כמה הסדנה מכוונת למכירה של התוכן בתשלום?
נתחיל מהסוף - חשבתי שיהיה גרוע יותר, אז אפשר לומר שהופתעתי לחיוב. 
קצת יותר בפירוט, אפשר לומר שהסדנה קיבלה ניקוד מלא בסעיפים 1 ו4, דילמה לגבי סעיף 2 ונכשלה ממש מבחינתי רק בסעיף 3. 
הצגת הסדנה הייתה הוגנת - כמה וכמה פעמים המרצה הזכיר שבשעתיים אי אפשר באמת ללמוד לעשות דברים כמו שצריך, או להבין הכל, ושיש עוד לא מעט ללמוד. בנקודה הזו, מבחינתי, הייתה גם ההצלחה בסעיף 4 כשהמרצה נמנע מלומר בכל רגע "ואת זה נלמד בקורס שאני רוצה למכור לכם" - כל מי שהגיע ידע שהסיבה המרכזית לסדנה הזו היא קידום מכירות, אבל מעט ההפניות לקורס הארוך יותר לא הרגישו כמו יותר מדי והכיתה הייתה ממוקדת משימה. נקודה אחת שקצת כאבה לי בהקשר הזה הייתה שהמדריך עשה כמיטב יכולתו כדי לשכנע את המשתתפים שהסיכוי שלהם למצוא עבודה בבדיקות נמוך אם הם לא יכללו בקורות החיים שלהם כישורי אוטומציה. זה בהחלט נמצא בתוך כללי המשחק, ויש מספיק נתונים שתומכים בטענה כזו, אבל במצב השוק היום אני חושב שעדיין נעשתה פה עבודה יפה של קטיף דובדבנים כדי להציג את המצב כחמור יותר מאשר הוא באמת. עם זאת - לטעמי לפחות, זה לא היה מוגזם. 

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

אבל, החלק החשוב הוא היחס למקצוע. זו הסיבה בגללה הייתי צריך ללכת לסדנה ולא סתם לשפוט אותה מרחוק - בעוד שהתוכן של סדנה כזו הוא ברור מאליו ושונה רק בכמה ניואנסים, מה שמשנה באמת הוא הסאבטקסט שנמצא בסדנה - הצורה בה מדברים על התוכן והאווירה הכללית בחדר. בקיצור - כל מה שישפיע על הדרך בה המשתתפים בסדנה יתקדמו הלאה. חשוב לומר: כל סדנה קצרה שמנסה ללמד אנשים שאינם מתכנתים להשתמש בספרייה ספציפית (סלניום, במקרה שלנו) מתחילה את ההערכה בסעיף הזה בציון נכשל. עם זאת, סדנה טובה תצליח בכל זאת לעבור את ההערכה הזו אם המסרים שמועברים בה נכונים. 
כאן, די בהתחלה, הייתה נקודה קטנה של אור -  המרצה ציין שהדבר החשוב למי שרוצה ללמוד אוטומציה הוא ללמוד לתכנת. בעולם בו לא מעט אנשים מנסים למכור "Codeless automation", זה מסר שאסור לוותר עליו. נקודות אור נוספות היו האמירה שצריך להשקיע לא מעט עבודה ומאמץ כדי להיות טובים באוטומציה או תזכורת לכך שאוטומציה היא לא רק סלניום.
אבל, זה לא מספיק. קודם כל, כי פעולות הן חזקות הרבה יותר ממילים, והפעולות בשטח משדרות את המסר ההפוך. אוטומציה זה לא רק סלניום? אבל גם בסדנה וגם בקורס הארוך יותר זה הדבר הראשון (והיחיד, אם הבנתי נכון) שמלמדים, היתר הם "נושאים מתקדמים".  צריך להשקיע עבודה ומאמץ כדי להיות טובים? צריך ללמוד לתכנת היטב? איך זה מסתדר עם אמירות כמו "באוטומציה אנחנו לא כותבים 'קוד של מתכנתים' ברמה גבוהה" או "מתכנת שבוחר לכתוב אוטומציה זה כי אין לו את היכולת להיות מפתח מוצר"? ואיך זה מסתדר עם כל המטרה של הקורס שהיא "לפרוץ מהר לעולם האוטומציה"? בנוסף, אפילו בסדנה של שעתיים, שמתמקדת בסלניום ומטרתה היא מכירות, הייתי מצפה לראות מילה או שתיים על כתיבת קוד נכון - גם אם אין זמן להסביר מה הן פונקציות, או מה הם משתנים, אפשר היה להגניב מילה או שתיים על מתן שמות נכונים, ועל הוצאה של מחרוזות לתוך משתנים בעלי שם נורמלי. אפשר היה גם להזכיר, בחצי מילה, שמה שכתבנו בסדנה איננו בדיקה עד שמוסיפים לפחות שורת assert אחת.
אם זו הגישה - בטח שאפגוש בראיונות אנשים שיחשבו שזה לגיטימי לומר שהם אנשי אוטומציה ולא מפתחים.

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





A couple of years ago we had an opening for another tester in our team and I found myself interviewing a lot of candidates. It was a bit long and very painful, but one of the candidates left a lingering impression. Like with most candidates, we've asked him to solve a simple coding problem on the whiteboard. How simple? Simple enough so that I asked my brother (who's programming background at the time was the stuff taught in high-school) to solve it, and he had no real difficulty with it. The candidate sat and thought about it. He pondered and considered and then contemplated a bit. Then, with an outburst of honesty said "look, I'm an automation person, I'm not a programmer".
We managed to keep a straight face.

The reason I recalled this now is that last week I stumbled upon an advertisement for a "introduction to automation workshop", free of charge, only two hours long. You know, the stuff that is usually done to sell a longer, pricey course that will teach someone "automation" from scratch. Normally  I see these things and fume silently. Those workshops have a constant format: You gather a bunch of people with no prior knowledge on coding, make them copy-paste some selenium commands in your language of choice and voilà! Automation! There are a million things wrong with this, but that's not what we're here for, since this time I changed my normal habit and asked the organiser to join. After all, what are a few hours of my time for the possibility to smear people on a founded basis?

However, as I was investing some time in it I decided I'll try to be fair and set some criteria according to which I'll pass my judgement. They are (in no particular order):

  1. Fair presentation of the workshop. One can only achieve so much in a two hours session, especially when assuming no prior knowledge. Making sure to explicitly say that and let people set realistic expectations is important.
  2. Is there a real advantage to attending the workshop over just going through some online tutorials?
  3. Respect to the profession (in this case - automation) - A sales pitch that conveys the message of "Automation is not that difficult, everyone can do it" will gain my contempt faster than one that will say "Automation is a complex task, let me help you do the first steps". 
  4. How much is the workshop geared towards sales? It is one thing to attend such an event when it is clear that it is only a taste of a bigger course, it is another to have the speaker mention it every other sentence and pushing it down the audience's throat. 
To start with the conclusion: I expected worse, so one might even say I was positively surprised. The workshop got full points for criteria 1 and 4, sort of passed the 2nd and failed only in the 3rd criterion, and even that was less severe than I expected it would be.  
The workshop was presented in a fair way - the speaker mentioned that no one will leave this room an expert, and threw some terms around to show that there is more to learn. This is also where I decided that the level of sales promotion was decent - the fact that most of the mentioned "stuff we won't learn today" is taught at the courses was almost unmentioned - Naturally, it was there in the background, but  I appreciated that it was not mentioned bluntly. The only discomfort I felt here was that the speaker did spend some time to convince the audience that it is becoming more and more difficult to find work without "automation skills", and while the market is probably going in that direction, I think there was some cherry picking in the job-ads presented as "evidence" to make it look more significant than it actually is. Still - it felt well within the boundaries  of the game. 

An advantage over the internet was a bit tricky to determine. On one hand, there's someone who knows his way around that can answer questions, explain what is needed and point the way forward. On the other - when one studies alone there isn't this pesky time limitation that forces the approach of "just copy paste this, we don't have time to explain this in detail", and being forced to deal with some technical difficulties usually mean better understanding. It is quite clear to me that in comparison to a good internet tutorial (such as the free parts of Alan Richardson's course), this workshop falls very short: The explanations in the video series are far better than what one could have got in the workshop, and the content is far superior in that that by the end of the workshop the participants had a "main" function that couldn't be used or extended in any way, while following the video tutorial would have left one with a fully functional, albeit very basic, testing project (maven+Junit). However - I knew what to look for. I was familiar enough with Richardson work to suspect he would have a very good tutorial, and I had the knowledge to evaluate the content one I saw it. Simply googling for "selenium for beginners" gave a lot of results that would put the workshop contents in a very good place. So, taking that into consideration, I think there is a small benefit to attending this workshop over trying to learn alone (unless you are reading this post, in which case, you know where to find better content).

Finally, the main pain point is in what I labeled as "respect for the profession". This is the main reason I felt the need to actually attend the workshop: The content of such workshops is pretty much well defined by the genre and will differ only in a few small nuances, but the real difference in in the subtext - in the way things are presented and the subtext of the whole activity. It is important to say that in my eyes every short workshop with the goal of teaching non-programmers to use selenium starts this evaluation with a failing score. A good workshop might flip my impression by focusing on the correct messages, but it isn't trivial to do so.
Here, it actually started with a small bright spot, when the speaker mentioned that in order to learn automation one needs to learn coding, which is an important message to hear when the market is so full with solutions selling "codeless automation". I was also happy to hear that this speaker did not equate automation with selenium (and has provided some reasons for focusing on it first) and that people wanting to know how to automate will have to work hard at it.
However, this wasn't enough. Primarily because actions are stronger than words, and they were sending the opposite message. Automation is not only selenium? then how come that the workshop (and, as far as I understood, the "basic" course as well) is only about selenium? I would have been satisfied with even a single, simple assertion.
Hard work is required to be able to learn automation? How does this align with statements such as "When automating we are not writing 'developers code' " or "A programmer that decides to write automation is probably lacking the skills to write production code"? And how does it align with the whole goal of teaching non-coders to write automation in less than 15 lessons? If I'm generous, that's the amount of time invested in CS101, and no one would dream consider CS101 graduates as decent programmers. In addition, even in a 2 hours workshop, if good coding was something the course provider believes in, I would expect to see some minor tips about naming variables, or extracting logic to function, even if it was only to say "normally I would do this, but here we don't have the time".
If this is the approach taken by course providers, it is no surprise that a candidate thought it is legitimate to claim that they were "an automation engineer, not a programmer".

In conclusion, the situation isn't good.
The speaker is answering a market need - I believe his claims that his students are able to find work in automation. In that he is providing his clients a valuable service. But, I think that this course (and its similar competition) is doing a disservice to both their students and to the profession. The students are getting to the market with a lacking skillset and a skewed perspective about how good automation should look like. Therefore, they are not doing as good a job as they should have been doing. In fact, I would wager that any automation project based on the principles demonstrated in the workshop will fail within three years.
Meanwhile, the market is flooded with low skilled "automators"and the many places that are now venturing into the automation space are finding a lot of bad candidates around - some of them will get hired since the hiring company doesn't know better. In fact, that market learns that "Bad programmers are good enough for automation" and this has an impact in three ways: Good programmers are considering automation to be beneath them, companies paying less those that have automation skills (compare to "real" programmers), and the expectation from an automation project is lowered - making it a self fulfilling prophecy.
In my opinion (which I kept pretty much to myself, as my goal was not to ruin the sales event) any person wanting to learn automation would do well to avoid such courses and focus on learning to code well. If, after doing so, automation will still be a challenge, just take a two hours course on some of the specific tools used in testing. 

2 comments:

  1. האמירה "כמה וכמה פעמים המרצה הזכיר שבשעתיים אי אפשר באמת ללמוד לעשות דברים כמו שצריך, או להבין הכל, ושיש עוד לא מעט ללמוד." עשויה להיות בגלל שאם זה *כן* היה אפשרי - לא צריך קורס. מאותה סיבה הוא לא ידבר על "Codeless automation".
    לגבי המסקנה, לדעתי אתה שם חשיבות רבה מדי על המרצה והקורס. מקום שיקח מישהו לתפקיד פיתוח אוטומציה עם סט כישורים שבא רק מקורס כזה - כנראה שהוא עושה עוד הרבה טעויות ויכשל בכל מקרה (ואז שהמסקנה כנראה תהיה שאוטומציה פשוט לא עובדת ולא ש"לא עשינו את זה נכון").
    תודה על עוד פוסט מעניין.

    ReplyDelete
  2. שלום דורון!
    בהחלט יכול להיות שהיו סיבות "פרקטיות" כמו הצורך למכור את הקורס מאחורי האמירה ש"צריך ללמוד ואי אפשר לכסות הכל בשעתיים", אבל במקרה הזה אני בהחלט מוכן לתת למרצה ליהנות מהספק ולשפוט אותו לכף זכות: לא משנה למה זה נאמר, זו אמירה שחשוב להשמיע בפני קהל היעד.
    אני לא לחלוטין בטוח שהבנתי את מה שאמרת על חשיבות המרצה והקורס, אני לא יכול לומר ששמעתי על קורס אוטומציה או מרצה בקורס כזה שמה שכתבתי לא יהיה נכון לגביו (ולכן אני לא מזכיר מי המרצה או איפה ניתן הקורס). אבל - זה שכל הקורסים הנוכחיים לא עומדים בסטנדרטים שלי לא אומר שלא יכול להיות קורס טוב, כי אני לא מאלו שמאמינים שתכנות זה מקצוע שחייבים ללמוד באוניברסיטה - המגבלה היחידה היא שללמוד לתכנת היטב דורש זמן ותרגול. נדמה לי שבבסמ"ח הם מלמדים תכנות בחצי שנה, אבל כל מסלול אינטנסיבי פחות צריך לקחת לפחות שנתיים ומחוץ לאוניברסיטה זה משהו יקר מאוד - סדר גודל של 50,000 ש"ח אם לנחש לפי מחירי הקורסים ה"ארוכים" של הסבה לתכנות שמוצעים במכללות השונות (ולא עושות עבודה טובה מספיק בשמונת החודשים האלה). אם מישהו השקיע שנתיים ולמד לתכנת היטב, אפשר להציע גם מודול קצר על כלים נפוצים באוטומציה כמו סלניום, או RestAssuered או כל מה שאולי יעזור, בדיוק כמו שיש מודולים קצרים שמלמדים מתכנתים על Spring או על Hibernate.
    אילו היה קורס מקיף כזה, מקומות שהיו שוכרים "מפתחי אוטומציה" שהשלימו אותו היו מקבלים סיכוי דומה לאלו ששכרו בוגרי אוניברסיטה (ואולי, אפילו יתרון מסוים לבוגרי הקורס שקיבלו הכוונה מאוד מדויקת) - אבל עד שזה יהיה המצב, אנחנו במעגל קסמים.

    ReplyDelete