הזמן השאול
בין יקיצה לקימה
הזמן הפרטי שלנו
בין קריאת ילד אחת לאחרת
הזמן הגנוב
בין מטלה למטלה
הזמן היקר מכל
בו נעשית הבניה
נבנה העצמי
נבנה הביחד
ברגעים שאולים
מטירדות החיים
הזמן השאול
בין יקיצה לקימה
הזמן הפרטי שלנו
בין קריאת ילד אחת לאחרת
הזמן הגנוב
בין מטלה למטלה
הזמן היקר מכל
בו נעשית הבניה
נבנה העצמי
נבנה הביחד
ברגעים שאולים
מטירדות החיים
לשקוע בתהום בלתי נשלטת
להסתחרר סחור סחור בין תחושות האובדן והכעס
להקשיב לסביבה
רק מספיק בשביל להתלונן
לקבל כח לסיבוב נוסף
בסחרחרת
לשקוע עוד
עד אפיסת כוחות
באיזור הנוחות
שם אני מרגיש בבית
שם אני נע בלי חשש
שם אני לא שם לב
לפרטים
לשינויים
לחוסר הידיעה שלי
שם אורבת הסכנה
להיתפס לא מוכן
לטעות בלי לשים לב
מוחי קודח
רותח
מחשבות מתערבלות
מתנגשות זו עם זו
נסערות מהחום
ממדורת הדאגות
הבוערת בליבי
עולים אדים
הפורצים מתך עיני
מונעים שינה מעפעפי
כמו מגדל קלפים
נבנה האמון
צעד צעד
מועד ליפול
ברגע אחד
של חוסר זהירות
על בסיס רעוע זה
אנו בונים את חיינו
קשרינו עם אחרים
אהבותינו
שאיפותינו
בניין מדהים
מפעל חיינו
יש רטובות של תשוקה
יש נקירות של חובה
יש ארוכות של אהבה
יש קצרות של מגע
כולן מחברות
נשמה לאחרת
כולן נשיקות
אני רואה אותך מולי
רחוקה כטפח
רחוקה שנות אור
ראשך, פנייך מסחררים את ראשי
בעודך מחשבת מטלות היום והמחר
אני פה ברגע
ואת שם בצורכי העולם הזה
במרחק
וכשאת פה
לוקחת חופש
אזי תורדות אותי הדאגות
ןשוב המרחק ביננו
אני רואה אותך מולי
רחוקה כטפח
רחוקה שנות אור
אין כח
העייפות נוחתת
עיסוקים אחרים
דוחקים את תשומת הלב
ובכל זאת
יש לדחוף בכח
להמשיך לנוע
להתמיד
כדי להגיע
לחוש את האדמה מבעד לשק השינה
לשמוע את נשימות האנשים סביבי
לפקוח עיניים ולסרטט ציורים בין הכוכבים הנפרשים למעלה
לזהות תבניות, להמציא חדשות
לשוחח על צורת העננים
על המטאור או מטוס שאחד ראה והאחרים פיספסו
לקבל שירות השכמה של אור ראשון
לרגיש את צינת הבוקר
בה כיף להכרבל בשק השינה
והיא מעוררת לפעילות כשיוצאים
to see a new person,
see it from his eyes
feel the same fear rise up again
as if it was me
all over again
לקפוץ בחדוות גיל
על כל דבר חדש
לחבר מה שידעת עם החדש
לחלום על ללמוד עוד
פעם ועוד פעם
הרפתקאה אל הלא נודע
לכבוש אותו גילוי אחר גילוי
פעם חברים היו נפגשים
מדברים
משחקים
יוצאים
מטיילים
היום חברים זה רק ברשת
חולקים תמונות
קטעים
הגיגים
מרחוק
בחסות האנונימיות הוירטואלית
קל להסיר את המחיצות
להרגיש קרוב לאדם שלעולם לא אכיר
ורחוק מן הסובבים אותי
האינטימיות של הביחד
הפכה לאינטימיות של הלבד
אני רוצה
את זה ואת זה
מקבל
מזה ומזה
ורק רוצה
עוד מזה
וקצת מזה
בסבב אין סופי
של פינוק
מה יהיה הדבר הגדול הבא?
להתבונן קדימה ולדמיין
להביט אחורה ולהעריך
כמה רחוק לענות על השאלה?
כמה רחוק לדמיין?
אנשים עם חושים טובים יותר
כבר יש מעבר לפינה
יכולות פיסיות על אנושיות
כבר רואים אבות טיפוס
כל זה יהיה
אבל לא יהיה הדבר הגדול הבא
כי זה לא ישנה את מהות החיים
את אורח החיים
חיבור טוב יותר למידע
לענן, למחשב
חיבור ישיר בין אנשים
נראה רחוק יותר
ובהחלט יהיה דבר שונה
תחבורה טובה יותר
תקשורת מהירה יותר
ידיעה היכן כל דבר
מה חסר ואיך להשלים
בדרך
ולא ברור כיצד ועד כמה
ישפיע על חיינו
מביטים ימינה
מביטים שמאלה
רואים צלמית
סמל
תמונה
מבינים שזו שפה חדשה
שצריך ללמוד
אבל לא מבינים את השפה
זה לא בא טבעי להלך בין הצלמיות
באופן וירטואלי
לאחר שנים של הליכה עם הרגליים
במציאות ממשית
ולא וירטואלית
כך אבודים במרחב חדש
מחפשים עזרה מהדור הצעיר
שדובר שפה חדשה זו
כשפת אם
עקרונות מדע בסיסים
נגלים לעין בכל בוקר
עם כניסת האנשים לתחבורה הציבורית
עקרון שובך היונים
שולט באיכלוס המושבים
קשרים קוולנטיים יוצרים קבוצות אנשים
המחזיקות מעמד את העליה והירידה יחד
אנשים זרים
מחליפים בינהם תיקים חופשיים
משיכה מגנטית
זרימה של אנשים
בגז דליל בזמן ההמתנה
משפיעה על כיוון תנועתם
ירידה או עליה יוצרת זרמים
מערבולות נוצרות בהתנגשות הזרמים
ובהן איים של רוגע
של נוסע השקוע בעצמו
נהגתי לקרוא את עצמי לדעת
לשקוע בעולמות אחרים
רחוקים, זרים, יפים, מזוויעים… הכל הולך
לברוח מכאן, להתחבא שם
עם השנים החכמתי
והיום אני קורא את עצמי לדעת
מבקר במקומות אחרים
להביא כלים ותובנות לעולם הזה
“עזרו לי”
“אני מסכן”
“רעב”
“קשה”
“ילדים”
היללות קורעות את הלילה
את הלב
מתי לעזור?
כמה?
האם?
איך?
פעם תשלוף את הארנק
תיתן מטבע או שטר
פעמיים
שלוש?
איפה הסוף? איפה העתיד?
יושב שקוע בעולמי הקטן
עם הדאגות הפשוטות
עם הידיעה מה הולך לקרות בזמן המיידי
ומסרב לשנות
בוהה החוצה דרך החלון
מביט בעולם הצועד קדימה
עיוור לקיומי
שלי
שלנו
אני
אנחנו
קבוצות השיוך להם אנחנו משייכים את עצמינו
נוזליות כמו מזק האויר
מושפעות מנושא השיחה
כמו מהאדם עימו משוחחים
משתנות משעה לשעה
מאדם לאדם
ויחד עם זאת
הם מקור תחושת היציבות שלנו
הידיעה שיש אנחנו
ואני בתוכם
Those are my own definitions, that i know intuitively:
If you have a service: any change that can break a client implementation without him changing anything.
In a library or code: any API or behavior change that will force users of the API to change their code in order to continue using a new version.
You can find more dictionary like definition on Wiktionary
I identifying a breaking change is hard on developers since it force us to wear the hat of the user who uses our code.
Good testing culture, one that force creating unit tests (TDD anyone?) and UI automation tests helps in that regard. Makes it easier on the developer see the other direction, simply since he supposed to see it as part of his day to day job.
But even in the world of code to code APIs - breaking changes slip through unidentified simply since the language customers use and that used by the developers is usually not the same language.
In the world of on-line services and UI things are a lot worse.
Breaking changes to API is like refactoring to implementation.
If you do it in the correct amount, at the correct time, it helps your code grow.
If you do it at the wrong places, you end up costing to much to your customers that they will start abandoning your code/service and move on to other greener libraries/services.
Breaking changes can be forced on you for security reasons, design flows that needs to be corrected, unintuitive API/behavior that makes it harder than necessary to use your code/service.
They can be done as part of a new design or new vision. And they have the potential of opening new uses for your code that were closed before.
As with anything there is no one right way, but there are guideline:
Since customers are paying the price, you need to notify them as early as possible, help them prepare.
Always assume that there is a customer that will be hurt from that change, so try and identify them before hand and fix it with them in advance.
If you can support multiple versions (using multiple/versioned APIs, or package management or any other means) do it and leave the old versions functional for a while.
If possible deprecate the old behavior before you actually break it.
And even doing all that, breaking changes will have their price.
The hard part about breaking changes is not to define them, or identify them. It is making a sensible behavior around them.
Create a culture that accept their role in your product.
Understand and gives the place for the price that comes with those changes on the clients.
Encourage everyone on the pipe to identify and communicate the breaking change and its price.
And then implement the guidelines in the correct way for your project.
פיצול האישיות שלי
אני אחד מתמודד עם העולם
אני אחר חולם
אני אחד לוקח אחריות
אני אחר ממציא פחדים
אחד עף
אחר מתחפר
אחד כותב
אחר קורא
וכולם אני
ומי אני?
שם קדימה
יש סימן שאלה ענקי
מפחיד
הדרך אליו מפותלת
נחבאת בין הצללים
חלקה הקרוב אלי
מלא מהמורות
וכך אנו יוצאים לדרך
בחבורה קרובה
במשפחה
וחברים
עם השמחות המקילות על הקשיים
עם המריבות המאפילות על הצללים
עם האהבה המחברת את כולנו
נותנת את הכח
להמשיך לנוע
i am sending my void across the deep
reaching out to someone who may never answer
reaching out to me
with hope that along the way
some friends will jump up on the message
and by the time it gets to me
i will not be alone any more
הלכנו יחד
מדברים על מה שקרה
עוברים מנושא לנושא
חולקים תובנות, אבחנות
מדברים על הרגש
מדברים
מדברים
מברברים
היתה שיחה טובה
וטוב שהיתה
אבל כמה נשאר ממנה?
מה נלמד?
תמיד נשאר כשאלה פתוחה
לפעמים בשיחה אחרת
בזמן אחר
יש תשובה
עולה מן האוב
משהו מהשיחה הזו
כל כך יותר קל לי לדבר על פחד
כל כך יותר קל לי להכיר בו
להבין אותו
ואילו שמחה, אהבה
למרות שחיי מלאים בהם
קשה לי להעלות אותם על הכתב
השעות הגנובות של הלילה
רגע אחרי שכבר היה צריך לישון
המלאות במתיקות של עוד להספיק היום
הבאות עם המחיר של מחר
אילו השעות בהן אני מרשה לעצמי
לנוח מדאגות היום
בלי לנוח באמת
אילו השעות שאני משלם עליהן
ביוקר בימי המחרת
Fun to see the child wake up
In people over 50
For the sound of a childhood song
That send them dancing to meet their future with a smile
For the smell of rain,
causing them to run through puddles with glee,
to see splashes of water all around
כמו הדם הגועש בעורקינו אחרי ריצה
כמו נשימה עמוקה של אויר בראש ההר
כמו ביס ראשון של לחם חם לאחר יום צום
כך תחושת החיבור לרשת לאחר ניתוק
לשים כיסוי עיניים
וללכת ישר
לעתיד בו הטכנולוגיה תהפוך אדם לאחר
כי איש לא טורח לכוון את העתיד
לזיקנה ללא עצמאות
כי המדינה לא חישבה אקטוארית נכון
להווה ללא תקווה
כי החיים מורכבים מכדי לתכנן
למשרפות ולבערות
כי זו הייתה ההוראה מגבוה
לשים כיסוי עיניים
וללכת ישר
עם שאר אנשי העדר
שקט של בוקר
לפני שכולם קמים
טיול של שעה עם הכלב
כשעוד אין את המולת היום
לשמוע ציפורים מתעוררות
לנשום רגע של חופש
לפני שחוזרים לחיים הרגילים
אנשים העסוקים בלהקיף את עצמם במוות בין מאות שנים
מחליפים פרחים בפסלי פלסטיק
דשא ביריעות ירוקות של ניילון
מרססים את ביתם ברעל
בונים רשתות חומות וגדרות בפני החיים
אנשים אילו מסיימים את חייהם בקבר בטון
עם תכריכי פלסטיק
ומצבה משיש מלאכותי
במקום לראות את היופי
של ציפור, חרק או פרח
להינות מהאווירה של עץ או דשא
לחוש באהבה של חיית מחמד
ולחיות מוקפים בכל זה
גם באמצע מערות הפלדה של העיר
We are programmers, and we get paid to write code. And we all faced the situation when we get in someone else’s code (could be mine from a few hours ago, I am evolving you know) and see code that hurts my eye.
So when should I fix it?
Here are the 10 commandments:
if it works and this is an area you don’t need to touch. Don’t touch it.
if touching it is a long and hard refactor, think long and hard before jumping into it.
if the change is not covered by tests you already plan on doing. Consider the test workload addition. Automatic tests coverage is great, if you are certain it cover the necesary scenarios.
If you are already in the code, and the added workload is ok, then go and refactor like crazy.
Get in touch with me at: lee [plus] blog [at] elenbaas [dot] org [dot] il