KEMBAR78
Competitive code | PPTX
Survey
1. Scan the QR Code
2. Like + Share
3. Fill-in the Survey
4. Win a Gift Card 
Competitive Code
Arnon Axelrod
Copyright © SELA Software & Education Labs, Ltd. | 14-18 Baruch Hirsch St., Bnei Brak 51202, Israel | www.selagroup.com
About me
Arnon Axelrod
https://blogs.microsoft.co.il/blogs/arnona
ArnonAxelrod
The Time Arrow and Code Quality
http://www.thegreateverything.com/how-time-really-works/
Moving to Agile
The Testing Bottleneck
Spaghetti Code
Long Debugging Sessions…
Are We Still Agile?
Let’s Start Over!
Is it Really Better?
And Here We Go Again…
The Solution: Keep The Code Clean!
How Important Clean Code Is?
Correctness Proving
Complexity
Complexity
Inherent Complexity Accidental Complexity
Complexity
Inherent Complexity Accidental Complexity
Complexity
Adding
features
Complexity
Adding
features
Refactoring
Complexity
Adding features
Crumbling the Monolith
Wrap Old with New
…and gradually improve internals
So Why Don’t We Do It?!
Some Reasons…
• Business effect is late and concealed
• Developer’s awareness
• Hard to measure
• Industry focus on new technologies…
Skills and Practice
Important Skills
• Object-Oriented Design
• Clean Code
• Effective use of Exceptions and Logging
• Effective use of: programming language, base-class
libraries, IDE, and even the keyboard…
How We Can Improve?
• Awareness
• Code reviews and
pair-programming
• Get assistance…
Sela Services
• Planning and implementing gradual
architecture improvement
• Teaching and mentoring:
– Refactoring techniques
– Clean Code
– Effective use of IDE and tools
– Unit tests and TDD
• Helping implement effective code-reviews
• Improving Team and Project productivity

Competitive code

Editor's Notes

  • #4 באתי מהכיוון של Clean code ו-Unit tests לתחום הבדיקות האוטומטיות. היום אני רוצה לחזור כי לדעתי שם נמצאות הבעיות האמיתיות...
  • #5 עם זאת, אם לומדים להשקיע את "האנרגיה" הזו בצורה נבונה קצת-קצת לאורך הדרך, אז צריך להשקיע הרבה פחות ממנה בסה"כ.  
  • #7 הבדיקות האוטומטיות אמורות לפתור את הבעיה הזו, אבל הן לא לגמרי מצליחות בגלל שתמיד כמות הבדיקות שצריך עולה...
  • #8 קוד ספגטי לא קשור הבכרח ל-Goto או למתודות ארוכות ומסובכות (כמובן שגם...), אלא בעיקר לספגטי של תלויות.
  • #11 אבל אנחנו לא יכולים לזרוק את הישן עדיין... אבל עד שאנחנו מסיימים, בינתיים אנחנו לא נותנים ערך נוסף ללקוח, ולכן אנחנו לא באמת מקיימים את ההבטחה של אג'ייל. כמובן שלקוח לנו יותר זמן ממה שחשבנו, וברגע שאנחנו עולים לאויר עם הגרסה החדשה, מתגלות הרבה תקלות ובעיות ופערים מול הגרסה הישנה. ואז יש תקופה של תחזוקה של שתי מערכות (הישנה והחדש) זו לצד זו, שלא נוחה לא למפתחים ולא למשתמשים, עד שבהדרגה מצליחים למזג ביניהם.
  • #13 דוגמאות למעבר בין טכנולוגיות וארכיטקטורות: WinForms  WPF  Angular  React. ארכיטקטורה: Client/Server, 3-tiers, SOA/WCF, SOAP, REST, MicroServices, Containers, ענן וכו' וכו' וכו'... העניין הוא שבכל טכנולוגיה אפשר להשתמש בצורה טובה יותר או פחות מה שלא משתנה זה הנדסת תוכנה טובה ומיומנויות! ואז קל יותר לעבור מטכנולוגיה אחת לשניה בלי לכתוב הכל מחדש.
  • #14 (איך בדיוק עושים את זה - על כך בהרצאה השניה)
  • #16 דוגמא: הוכחת נכונות של Merge Sort ההבדל בין בדיקות לבין הוכחה כשהקוד נקי יותר, יותר קל להוכיח (אפילו לעצמנו) שהוא נכון וכשהוא לא, אז אנחנו עוסקים בניסוי וטעיה וזה הרבה פחות יעיל...
  • #18 למה זה קורה? לחץ של זמן חוסר היכרות עם הטכנולוגיה חוסר היכרות עם ה-Business domain חוסר מודעות... חוסר מיומנויות
  • #20 החוכמה היא לשמור על קוד נקי ולסדר כל הזמן. Refactoring זה לא לכתוב חלק מחדש! כן - בהתחלה זה יכול קצת לעכב - אבל אם עושים את זה נכון ומתרגלים לעשות את זה כל הזמן, אז לא רק שנחסך זמן יקר מתישהו בהמשך, אלא גם כשכותבים את הפיצ'ר החדש, הרבה יותר קל לוודא שהוא עובד נכון, הסכוי לבאגים יורד, והזמן שמתבזבז על debugging נחסך.
  • #21 מאיפה להתחיל? כל פעם קצת, איפה שנוגעים.
  • #22 במקום לכתוב מחדש, ניתן לפורר את המונולית, ובהדרגה להחליף את ה"אבנים" הישנות בחדשות
  • #23 לפעמים כדאי להתחיל מעטיפה חדשה, ובהדרגה לשנות או להחליף חלקים בפנים. זה מאפשר לנו להמשיך לפתח פיצ'רים חדשים ולשפר את המערכת באופן שיתן למשתמשים ערך מיידי, ולנו פידבק מהיר!
  • #25 ההשפעה על לקוחות ועל מנהלים היא לטווח הרחוק יותר ומוסוות קשה למדוד את ההשפעה כתעשיה, אנחנו רצים כל הזמן אחרי הטכנולוגיות החדשות, בגלל שהחברות הגדולות רוצות למכור לנו אותם...