למה TDD לא שולט בעולם?

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

לטובת החסומים
תרגום של הפוסט בהודעה הבאה
 
  • הוסף לסימניות
  • #2
מבוא
כמנהל התוכן של ערוץ היוטיוב של דייב פארלי Continuous Delivery, זה תמיד נפלא לראות את התגובות שהציוצים של דייב מקבלים מהקהילה הידענית והנלהבת של מפתחי התוכנה בטוויטר (אה... X). כמפתחים, כולנו ראינו את ה"דבר החדש והאחרון" בפרקטיקות ובמתודולוגיות של פיתוח תוכנה מגיעות והולכות במהלך השנים, כשכל אחת מבטיחה לחולל מהפכה באופן שבו אנחנו יוצרים, בודקים ומפרסמים את האפליקציות שלנו. הקריירות שלנו זרועות בהבטחות למכשיר/שפה/גימיק אחד וסופי שיפתור את כל הבעיות שלנו (אני אקח את Jini, אבל בבקשה השאירו הספד למועדף עליכם בתגובות למטה).

עם זאת, פרקטיקה אחת שצברה תומכים נלהבים וגם כמה מבקרים נחרצים בשנים האחרונות היא פיתוח מונחה בדיקות (Test-Driven Development - TDD).

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

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

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

אז, בוא נראה... בלי סדר מסוים...

קטגוריות תגובה

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

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

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

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

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

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

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

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

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

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

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

מהחלוקה השרירותית שלי של עשרת הנושאים האלה (אנא נסה את שלך), מעניין ששניים בלבד נראים קשורים באופן מהותי לפרקטיקות הנדסת תוכנה ישירות (טבלה 1, עמודה 1: הנדסת תוכנה), בעוד ארבעה נראים מצומדים להתנגדות ארגונית (טבלה 1, עמודה 2: ארגוני) וארבעה נוספים נראים כחששות או חוסר ביטחון ביישום TDD (טבלה 1, עמודה 3: היסוס/ביטחון).

1715694476217.png


טבלה 1: נושאים מקובצים לפי חסמים נתפסים המונעים יישום TDD.

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

1715694492731.png

איור 1: נושאים מקובצים לפי חסמים נתפסים המונעים יישום TDD, בצורת ונ-יש ;)

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

העולם של מחר?
בעוד שמרבית התגובות של משתמשי טוויטר דנו בסיבות מדוע TDD לא השתלטה על העולם, היו כמה תגובות שהביעו אמונה ש-TDD תיאמץ בסופו של דבר באופן נרחב יותר. הנה כמה נושאים משותפים בין התגובות האלה:

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

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

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

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

שינוי תרבותי: כמה תגובות הציעו ששינוי תרבותי בקהילת פיתוח התוכנה יכול להניע את אימוץ TDD. ככל שיותר מפתחים מאמצים את TDD ומשתפים את יתרונותיה, היא יכולה להפוך לזרם המרכזי.

אינטגרציה רציפה: TDD מתאימה היטב לפרקטיקות פיתוח תוכנה מודרניות כמו אינטגרציה רציפה ומסירה רציפה (CI/CD). היא מבטיחה ששינויי קוד לא יוצרים נסיגות וקלים יותר לשילוב בבסיס הקוד הקיים.

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

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

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

סיכום

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

אולי זה נותן לנו רמז היכן טמונה הסיבה האמיתית מדוע TDD עדיין לא השתלטה על העולם.

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

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

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

כמתרגלים של CD אנו יכולים לקחת את התובנות מנושאים אלה ולטפל בהם במקומות העבודה, בהכשרה ובצוותים שלנו - ואז אולי, יום אחד, TDD סוף סוף תשתלט על העולם!
 
  • הוסף לסימניות
  • #3
למי שרוצה להעמיק בנושא יותר
יש כאן בחור שנתן הרצאה בו מדבר בגנות של TDD
ואז באו חסידי הTDD ועשו איתו סדרת מפגשים בו ניסו להחזיר אותו בתשובה
ובו הם דנים לעומק בנושאים שונים ומציגים את כל הצדדים
https://martinfowler.com/articles/is-tdd-dead

אם זה מעניין מישהו אולי אחרי שאגמור לצפות בכל מה שיש להם לומר אנסה לעשות כאן סיכום
 
  • הוסף לסימניות
  • #4
בהחלט מענין.
אם כי אני לגמרי יכולה להבין למה הוא לא שולט.
 
  • הוסף לסימניות
  • #6
מבהיר גם למה נחרצות בנושא הזה לא נכונה מהיסוד
בשום נושא בתכנות נחרצות היא לא נכונה
תמיד התשובה היא "זה תלוי"

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

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

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

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

הנה דוגמה לאיך קוד יראה בלי טסטים ואיך נכתוב את כדי שנוכל לעשות לו טסט

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

C:
func isHoliday() bool {
    currentTime := time.Now()
    currentYear, currentMonth, currentDay := currentTime.Date()

    // Check for New Year's Day
    if currentMonth == time.January && currentDay == 1 {
        return true
    }

    // Check for Christmas Day
    if currentMonth == time.December && currentDay == 25 {
        return true
    }

    // Check for Hanukkah (assuming it starts on December 10th)
    if currentMonth == time.December && currentDay >= 10 && currentDay <= 18 {
        return true
    }

    // Check for Passover (assuming it starts on April 15th)
    if currentMonth == time.April && currentDay >= 15 && currentDay <= 22 {
        return true
    }

    // Check for Kwanzaa (assuming it starts on December 26th)
    if currentMonth == time.December && currentDay >= 26 && currentDay <= 31 {
        return true
    }

    // Add more holiday checks as needed

    return false
}

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

C:
type Holiday struct {
    Name      string
    StartDate time.Time
    EndDate   time.Time
}

func isHoliday() bool {
    currentTime := time.Now()
    holidays := GetHolidaysFromDB()
    for _, holiday := range holidays {
        if date.Equal(holiday.StartDate) || date.Equal(holiday.EndDate) ||
            (date.After(holiday.StartDate) && date.Before(holiday.EndDate)) {
            return true
        }
    }

    return false
}

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

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

C:
type Holiday struct {
    Name      string
    StartDate time.Time
    EndDate   time.Time
}

func isHoliday(date time.Time, holidays []Holiday) bool {
    for _, holiday := range holidays {
        if date.Equal(holiday.StartDate) || date.Equal(holiday.EndDate) ||
            (date.After(holiday.StartDate) && date.Before(holiday.EndDate)) {
            return true
        }
    }

    return false
}

ועכשיו קל לכתוב לזה טסטים אוטומטים שמכסים את כל התרחישים

C:
package main

import (
    "testing"
    "time"
)

func TestIsHoliday(t *testing.T) {
    // Define a list of holidays for testing
    holidays := []Holiday{
        {
            Name:      "New Year's Day",
            StartDate: time.Date(2023, time.January, 1, 0, 0, 0, 0, time.UTC),
            EndDate:   time.Date(2023, time.January, 1, 0, 0, 0, 0, time.UTC),
        },
        {
            Name:      "Hanukkah",
            StartDate: time.Date(2023, time.December, 10, 0, 0, 0, 0, time.UTC),
            EndDate:   time.Date(2023, time.December, 18, 0, 0, 0, 0, time.UTC),
        },
        {
            Name:      "Christmas Day",
            StartDate: time.Date(2023, time.December, 25, 0, 0, 0, 0, time.UTC),
            EndDate:   time.Date(2023, time.December, 25, 0, 0, 0, 0, time.UTC),
        },
    }

    // Test cases
    testCases := []struct {
        name     string
        date     time.Time
        expected bool
    }{
        {
            name:     "Holiday - New Year's Day",
            date:     time.Date(2023, time.January, 1, 0, 0, 0, 0, time.UTC),
            expected: true,
        },
        {
            name:     "Holiday - Hanukkah Start",
            date:     time.Date(2023, time.December, 10, 0, 0, 0, 0, time.UTC),
            expected: true,
        },
        {
            name:     "Holiday - Hanukkah Middle",
            date:     time.Date(2023, time.December, 15, 0, 0, 0, 0, time.UTC),
            expected: true,
        },
        {
            name:     "Holiday - Hanukkah End",
            date:     time.Date(2023, time.December, 18, 0, 0, 0, 0, time.UTC),
            expected: true,
        },
        {
            name:     "Holiday - Christmas Day",
            date:     time.Date(2023, time.December, 25, 0, 0, 0, 0, time.UTC),
            expected: true,
        },
        {
            name:     "Non-Holiday",
            date:     time.Date(2023, time.July, 15, 0, 0, 0, 0, time.UTC),
            expected: false,
        },
    }

    // Run test cases
    for _, tc := range testCases {
        t.Run(tc.name, func(t *testing.T) {
            result := isHoliday(tc.date, holidays)
            if result != tc.expected {
                t.Errorf("Expected %v but got %v", tc.expected, result)
            }
        })
    }
}


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

פרוגבוט

תוכן שיווקי
פרסומת

פוסטים חדשים שאולי לא קראת....

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

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

והם יממנו לך את ארוחות וסעודות החג
בס"ד

ההבדל בין נוכלות לבין כישלון



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

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

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

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

מה שלא אהבתי זה ההתמקדות במתווך חרדי מסוים כאילו הוא שורש הרע בעולם כולו ואיך מלאו ליבו כביכול, ומעשה שהיה כך הווה בעשרות עותקים ברחבי הארץ שרובם מוכרים לי היטיב:

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

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

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

ואיך הדלפון שלנו יממן את מה שעשירי טבריה מתקשים?

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

אז איפה הקצ'?

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

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

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

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

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

אז מה קרה בכל הפרוייקטים הכושלים?

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

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

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

המחיר פשוט לא עלה, ולפעמים אפילו ירד.

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

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

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

לא בהרבה, אך מספיקה ירידה של 8% כדי שכל העסק יהפוך להפסד.

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

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

אז להפסיק להשקיע בנדל"ן?

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

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



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

הרקע וההתפרצות (סוף דצמבר 2025):

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


הטבח והחשכת המידע (ינואר 2026):
  • דיכוי אלים: המשטר האיראני הגיב באכזריות יוצאת דופן. לפי נתוני ארגון זכויות האדם HRANA, נכון ל-23 בינואר, מספר ההרוגים המאומת עומד על למעלה מ-5,000 בני אדם, בהם 4,716 מפגינים ועשרות ילדים.
    יש דיווחים לא מאומתים מצד האופוזיציה האיראנית על מעל 60,000 הרוגים!

  • מעצרים המוניים: למעלה מ-26,500 בני אדם נעצרו, וקיים חשש כבד להוצאות להורג המוניות בבתי הכלא.

  • חסימת אינטרנט: החל מה-8 בינואר הוטל מצור דיגיטלי כמעט מוחלט על המדינה כדי למנוע זליגת תיעודים מהטבח.

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


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

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

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

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

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

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

רשימות קרנות כשרות:

הצטרפות לניוזלטר

איזה כיף שהצטרפתם לניוזלטר שלנו!

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

לוח מודעות

הפרק היומי

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


תהילים פרק כה

אלְדָוִד אֵלֶיךָ יי נַפְשִׁי אֶשָּׂא:באֱלֹהַי בְּךָ בָטַחְתִּי אַל אֵבוֹשָׁה אַל יַעַלְצוּ אֹיְבַי לִי:גגַּם כָּל קוֶֹיךָ לֹא יֵבֹשׁוּ יֵבֹשׁוּ הַבּוֹגְדִים רֵיקָם:דדְּרָכֶיךָ יי הוֹדִיעֵנִי אֹרְחוֹתֶיךָ לַמְּדֵנִי:ההַדְרִיכֵנִי בַאֲמִתֶּךָ וְלַמְּדֵנִי כִּי אַתָּה אֱלֹהֵי יִשְׁעִי אוֹתְךָ קִוִּיתִי כָּל הַיּוֹם:וזְכֹר רַחֲמֶיךָ יי וַחֲסָדֶיךָ כִּי מֵעוֹלָם הֵמָּה:זחַטֹּאות נְעוּרַי וּפְשָׁעַי אַל תִּזְכֹּר כְּחַסְדְּךָ זְכָר לִי אַתָּה לְמַעַן טוּבְךָ יי:חטוֹב וְיָשָׁר יי עַל כֵּן יוֹרֶה חַטָּאִים בַּדָּרֶךְ:טיַדְרֵךְ עֲנָוִים בַּמִּשְׁפָּט וִילַמֵּד עֲנָוִים דַּרְכּוֹ:יכָּל אָרְחוֹת יי חֶסֶד וֶאֱמֶת לְנֹצְרֵי בְרִיתוֹ וְעֵדֹתָיו:יאלְמַעַן שִׁמְךָ יי וְסָלַחְתָּ לַעֲוֹנִי כִּי רַב הוּא:יבמִי זֶה הָאִישׁ יְרֵא יי יוֹרֶנּוּ בְּדֶרֶךְ יִבְחָר:יגנַפְשׁוֹ בְּטוֹב תָּלִין וְזַרְעוֹ יִירַשׁ אָרֶץ:ידסוֹד יי לִירֵאָיו וּבְרִיתוֹ לְהוֹדִיעָם:טועֵינַי תָּמִיד אֶל יי כִּי הוּא יוֹצִיא מֵרֶשֶׁת רַגְלָי:טזפְּנֵה אֵלַי וְחָנֵּנִי כִּי יָחִיד וְעָנִי אָנִי:יזצָרוֹת לְבָבִי הִרְחִיבוּ מִמְּצוּקוֹתַי הוֹצִיאֵנִי:יחרְאֵה עָנְיִי וַעֲמָלִי וְשָׂא לְכָל חַטֹּאותָי:יטרְאֵה אוֹיְבַי כִּי רָבּוּ וְשִׂנְאַת חָמָס שְׂנֵאוּנִי:כשָׁמְרָה נַפְשִׁי וְהַצִּילֵנִי אַל אֵבוֹשׁ כִּי חָסִיתִי בָךְ:כאתֹּם וָיֹשֶׁר יִצְּרוּנִי כִּי קִוִּיתִיךָ:כבפְּדֵה אֱלֹהִים אֶת יִשְׂרָאֵל מִכֹּל צָרוֹתָיו:
נקרא  2  פעמים
למעלה