כשל האדם החושב

מאת זהר ארד 12 בספטמבר 2010. 13 תגובות. שייך לקטגוריות טכנולוגיה

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

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

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

הכל בהכשרה

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

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

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

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

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

השינוי מתחיל ונגמר במוסדות להשכלה גבוהה ובמל"ג האחראי לאישור התכנים הנלמדים במוסדות אלו.

לא רלוונטי

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

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

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

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

  1. התקינו לינוקס על המחשב שלכם. רוב הסיכויים שאחד מהאתרים העתידיים שתבנו יהיה מאוחסן על שרת לינוקס ולכן מן הראוי שתערכו הכרות עם המערכת הזו. את אובונטו אתם יכולים להתקין בקלות מתוך חלונות בלי לשבור את ההתקנה הקיימת.
  2. התקינו את Git, Mercurial, Bazaar ובחרו מי מהם מתאים לכם ככלי לניהול קוד. שימו לב, הדגש הוא על התנסות ובחירה. שלושת האופציות טובות באותה מידה בשלב זה של החיים המקצועיים שלכם.
  3. הרשמו לרססים במגוון אתרי הטכנולוגיה הזמינים ברשת – TechCrunch, Ajaxian, High Scalability, Slashdot, Ars Technica ועוד רבים וטובים (אתם מוזמנים להוסיף את האתר החביב עליכם בתגובות לפוסט).
  4. התקינו את ריילס, דג'נגו, קוהנה, וורדפרס, סינטרה או כל תשתית פתוחה שתבחרו והחליטו שכל פרוייקט אתם עושים באמצעות תשתית אחרת.
  5. התקינו את Eclipse, NetBeans ו Komodo Edit רק בשביל לדעת שיש פיתרונות חינמיים טובים לסביבות פיתוח.
  6. התקינו את MySQL, CouchDB, MongoDB ו Riak (או רק MySQL ואחד האחרים) כדי לעמוד על טיב ההבדלים ביניהם.
  7. ערכו הכרות עם Memcached ומנגנוני Caching.
  8. למדו ג'אווהסקריפט וקראו על node.js. דמיינו את העיניים הפעורות וההערכה לה תזכו מכך שהפרוייקט הבא שלכם יהיה כתוב רק בג'אווהסקריפט.
  9. בנו שרת ווב ב Erlang במקום ב C++.
  10. קחו קוד שכתבתם ב PHP או ב .NET ושכתבו אותו ברובי או בפייתון.
  11. השמרו מהצהרות בזכות או בגנות טכנולוגיה X. אין טכנולוגיות גרועות, רק טכנולוגיות שאינן מתאימות לפיתרון הבעיה.
  12. זכרו שהרשימה הזו תהפוך ללא רלבנטית בחלקה תוך מקסימום שנתיים.

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

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

 
 

זהר ארד

בן 35, קיבוצניק שהדרים לעיר הגדולה, מפתח client-side בנשמתו (מטהקפה, קול הקמפוס 106fm ואחרים). משתמש מקינטוש מושבע (שחוטא גם בלינוקס בשעות הפנאי). מעדיף הכל פשוט, מינימליסטי ועובד טוב ומשתדל להמנע מדברים עם הלוגו של מיקרוסופט ונהגי מוניות כעסנים. אוהב הרבה ...

http://www.zohararad.com

פוסטים נוספים של זהר ארד

 

13 תגובות על כשל האדם החושב

  1. מאתomeraloni:‏
    פוסט מצוין!
  2. מאתגידי:‏
    בהחלט.
  3. מאתפליקס גרצמן:‏
    כשלמדתי באוניברסיטה גם אני התלוננתי למה לומדים scheme, ולמה הפרוייקטים ב-C, ולמה צריך כל כך הרבה מתימטיקה, ולמה כל דבר. אבל גם הכל היה יוניקס (סולריס ולינוקס) ושנאתי כל רגע.
    עשר שנים קדימה והכל נראה הגיוני היום. בלי שפות פונקיונליות אין מקביליות, בלי C אין ניהול משאבים, בלי מתימטיקה אין פתרון בעיות. אם אתה לא מכיר טכנולוגיות ישנות, אתה לא תבין באמת את החדשות. פייתון ורובי לא הופיעו יש מאין, הם ניסו לפתור בעיות בשפות הקיימות ומאוד יעזור להבין מה הן.כנ"ל עם ניהול קוד מבוזר, אתה לא לומד לטוס לפני שלמדת לנהוג.
    הרשימה היא דבר נהדר, אבל לא בהכרח מציאותי. להיות מתכנת טוב זה עניין של השקעה רבה (מאוד), ולא לכולם יש זמן.
    לומר ש-C++/C#/Java זה כלים מיושנים פשוט מגוחך. אולי אין דוגמאות סקסיות כמו פייסבוק/טוויטר/וכו', אבל יש עולם חוץ מרשתות חברתיות. גופים קטנים כמו וולמארט, גולדמן זקס, שברון ויתר פורצ'ן 500 בהחלט מסתדרים יפה איתם.
  4. מאתN:‏
    אוי ואבוי. מה שתיארת פה היא בדיוק הדרך לזרוק את ההיטק הישראלי לפח. אתה מתאר איך ללמד מתכנתים, לא מהנדסים. ומתכנתים יש המווון בהודו ובסין.
    לא הכל מתחיל ונגמר בפיתוח אתרים\ווב. כל מילה של פליקס נכונה - ואני, 15 שנה אחרי התואר, מבין עכשיו עד כמה. שפות תכנות הולכו ובאות, פלטפורמות משתנות - אבל את היכולת שלי לנתח ולתכנן מערכת ולשאול שאלות אף אחד לא יקח ממני. את היכולת הזו לא קבלתי בשיעורי תכנות, אלא בשעורים על אלגוריתמים, מתמטיקה כזו או אחרת ופרויקט בתכנון מערכת.
  5. מאתזהר:‏
    פליקס ו N אני מסכים עם דבריכם. כנראה לא ירדתם לסוף דעתי. אני לא נגד מתמטיקה ואלגוריתמים וכל לימודי הבסיס שכל מתכנת צריך לעבור. אני כן חושב שיש הבדל עצום בין מתכנת Web למתכנת תוכנה בגלל אופי המוצרים. כמו שיש דרך לכתוב תוכנה לדסקטופ, או למיין-פריים, כך יש דרך לכתוב תוכנה ל Web וההבדלים הם עצומים.

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

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

    דיברתי לאחרונה עם סטודנט למדמ"ח שעושה פרוייקט גמר. אחרי שהוא גמר להלל את MVC.NET הוא סיפר לי על רכיב פרוייקט שעושה משהו שאמור להעשות ב Message Queues. אף אחד לא הסביר לו על זה או הנחה אותו לכיוון (הוא בחר בפיתרון אחר מבוסס סקריפט מתוזמן).

    ובנוסף, בגלל שהוא עובד ב MVC.NET תהיה לו מגבלה עם איזה Message Queue לעבוד (לא את כולם אפשר להתקין על חלונות), וייתכן שהוא יהיה תקוע עם רעיון טוב שמבוצע בצורה בינונית. למה? לא בגלל שהוא מתכנת לא טוב אלא בגלל לא לימדו אותו איך לפתור בעיות ללא תלות בפלטפורמה.

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

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

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

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

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

    הטכנולוגיות והשפות החזקים נשארים, הם לא הולכים לשום מקום והם גם "מתקנים" אחורה ומשנים את נקודות המבט על מתודולוגיות קלאסיות (דוגמה טובה הוא noSQL), השוק זז במהירות מדהימה והאקדמיה חייבת ליישר קו.

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

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

    עובד שיגיע עם ידע בשפות מודרניות, עם הבנה של מה זה ווב, מה ההבדל בין פיתוח "רגיל" לפיתוח לאינטרנט, שלא ייצטרך לרוץ לוויקיפדיה כל פעם שבאזוורד חדש נזרק לאוויר יזכה ביתרון על מי שיש לו רק ידע קלאסי של ניתוח ואלגוריתמיקה.
  7. מאתברק ברודו:‏
    פוסט מצויין. כמי שלמד הוראה (אמנם הוראת אמנות אבל עדיין..) אני מסכים לחלוטין אם הגישה של "ללמד ללמוד ולחשוב בעצמם". זה נכון לכל כך הרבה יותר תחומי חיים בחברה המודרנית שחבל להגביל את הגישה לתחומי הטכנולוגיה בלבד.
  8. מאתרן בר-זיק:‏
    ראשית חשוב לסייג ולהגביל את המאמר לתחום התכנות הוובי. כפי שפליקס גרצמן ו-N טענו יפה, יש הבדל עצום וגדול בין מהנדסים למתכנתים וההיי-טק הישראלי בוודאי שלא נשען כולו על תחום הווב וטוב שכך. מה שכן, בעולם יותר ויותר חברות נשאבות לתחום הווב. ללא ספק מדובר באחד הענפים המרתקים והמעניינים ביותר שיש וגם תובעני מבחינת לימוד. אני משקיע כ-10 שעות לימוד נטו בשבוע רק כדי 'לעמוד במקום'.

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

    לכל אחד יש את הטכנולוגיה שבה הוא מרגיש הכי נוח ושולט בה הכי טוב. אבל אם לא נצא 'מאיזור הנוחות', יש סכנה שנשאר מאחור.
  9. מאתתום:‏
    ובדיוק ברוח הזו -
    מאמר נפלא על אסטרטגיית בחירת מערכות ניהול תוכן בA List Apart
    http://www.alistapart.com/articles/strategic-content-management/

    שנו את "מערכת ניהול תוכן" ל"סביבת פיתוח" וזה מדבר כמעט על אותו דבר.
  10. מאתשי:‏
    NET.MVC רץ יפה מאוד תחת מונו על גבי Apache מעל MySQL (עוד מימי 8.04)
    והפלטפורמה לא מוגבלת לאתרים "בינוניים" (ע"ע Stackoverflow)
  11. מאתזהר:‏
    שי, דמיין שכתבתי ריילס במקום MVC.NET. השתמשתי בה כדוגמה ולא מתוך רצון להמחיש שהיא לא מתאימה לאתרים גדולים.
  12. מאתאור:‏
    אחלה פוסט. אני חושב שיש עוד סיבה עיקרית למצב שאתה מתאר.

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

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

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

    לטעמי, c# ו java דווקא מתאימים לחלק לא קטן מהסטרטאפים האינרטנטים הישראלים. נכון, שאלו סביבות מיושנות שאין להם סיכוי מול הסביבות החדשות, אבל הן מתאימות לשיטות העבודה המיושנות באותם הסטרטאפים.

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

כתיבת תגובה

האימייל שלך לא יוצג באתר. (*) שדות חובה מסומנים

Protected by WP Anti Spam