קטגוריה: כלכלה

webrtc ORTC

הקדמה

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

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

היא תומכת ב OPUS, ו G711, ומחייבת אותנו לעבוד בצורה מאובטחת תחת DTLS,

עכשיו כל מה שנשאר זה לממש מערכת סיגנלים כדוגמת SIP או כל פתרון אחר – פשוט יותר עם web sockets,שגם הוא כיום (לפי התקן של webrtc) חייב כבר להיות מאובטח תחת TLS, ויש לנו פיתרון סטרימינג מלא.

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

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

הדגמה קלה (מה RFC):

v=0
o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com
s=.
c=IN IP4 host.atlanta.example.com
t=0 0
m=audio 49170 RTP/AVP 0 8 97
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:97 iLBC/8000
m=video 51372 RTP/AVP 31 32
a=rtpmap:31 H261/90000
a=rtpmap:32 MPV/90000

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

הנה הסבר על מה שאתם רואים מול העיניים שלכם:
האות v, מייצגת version – גרסת הפרוטוקול, שלפחות כרגע היא תמיד 0.
האות o, מייצגת origin של הבקשה, ומכילה (לפי הסדר) – שם משתמש, session id, בנוסף session-version, סוג רשת (אינטרנט), סוג הכתובת, כתובת הרשת.
האות s מייצגת את session, כלומר השם שלו.
האות c מייצגת מידע על connection. זה אומר סוג הרשת, סוג כתובת הרשת, כתובת הרשת.
הכוונה היא לאן רוצים להתחבר בשביל המדיה.
האות t מייצגת זמנים.
האות m מייצגת מדיה, עם סוג מדיה, פורט דינאמי, פרוטוקול משלוח של המדיה, ומידע הקשור לפרוטוקול.
האות a מייצגת attribute, שזה תכונות שונות, למשל כאן, זה מייצג איזה קוקדים של אודיו ישלחו, כולל הקוד שלהם שמוגדר ב RFC עבור כל סוג קודק.

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

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

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

תוכן

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

לפני ORTC, תכננו פרוטוקול אחר לגמרי, אשר היה מאוד low level, ומאוד קשה להגנה, וסיפק יותר מידי כוח בצד המשתמש. הפרוטוקול קיבל את השם Open Peer. אז בגלל הסיבות האלו, החליטו לרדת ממנו.

ואז ישבו הרבה אנשים, אשר רובם יצרו את webrtc ואת Open Peer, והחליטו על גרסה 1.1 לwebrtc בכנס מסחרי מסוים, אם כי למרות ההכרזה על 1.1 ההכרזה מרגישה יותר כמו 2.0.
השם לפרוטוקול החדש באותו כנס, קיבל את השם ORTC או Object Real Time Communication, אשר ה draft הראשון (מבחינת יכולת מימוש) שלו שוחרר באוגוסט 2014.
היכולת לעקוב אחרי דברים, נעשת באתר ייעודי לכך בשם ortc.org.

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

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

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

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

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

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

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

אבל הגישה הזו של ORTC ובעצם שכתוב של חלק מאוד חשוב ב webrtc גורם לכך כי במקום לסייע לאנשים לאמץ את webrtc, מרבית השוק כרגע מנסה להתעלם ממנו לגמרי, וזה רק מעקב את האימוץ הזה, אך האם המאמץ הזה יהיה שווה ? רק ימים יגידו.

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

node.js כן או לא ?

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

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

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

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

אמנם node.js לא משתמש ב webkit או ב blink, אבל הוא יוצר לי בעיות קשות:

  1. האם v8 ישאר גם מחר ?
  2. האם יהיה fork ?
  3. האם הוא ימשיך להיתמך ?
  4. האם הכיון שלו כיום ישאר, או אולי ישוכתב/ישתנה לגמרי בגרסאות חדשות יותר ?

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

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

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

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

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

סליחה, יש לכם אולי זמן ללמוד טכנולוגיה חדשה ?

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

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

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

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

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

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

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

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

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

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

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

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

ממליץ בחום לצפות בה:


 

עייפות הIT

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

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

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

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

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

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

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

מוקדש כחומר למחשבה

תם עידן הפרטיות, תחי הפרטיות

Le roi est mort, vive le roi !

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

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

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

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

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

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

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

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

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

זה תלוי בנו בלבד, ובבחירות שלנו. אני מקווה שכולנו ננהג בחוכמה בנושא.

מוגש כחומר למחשבה.

תכנון מודלארי של מערכת

"If I had eight hours to chop down a tree, I'd spend six sharpening my ax." — Abragam Lincoln

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

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

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

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

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

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

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

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

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

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

אנטגוניזם מקצועי

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

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

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

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

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

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

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

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

תרבות החשיפה

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

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

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

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

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

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

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

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

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

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

מוקדש כחומר למחשבה

דרך קצרה שהיא ארוכה ודרך ארוכה שהיא קצרה

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

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

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

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