SlideShare a Scribd company logo
1 of 21
Download to read offline
The 7 Sins of Software
   Engineers in HEP



Ioannis Baltopoulos
CERN Summer Student 2004



CSC Student Lectures (Vico Equence)
Monday, 6th September, 2004
Outline

• The Context (HEP)
• The Sins!
  • Observation
  • Problem
  • Solution (definitely not exclusive)
• Conclusion




                                          2
Establishing the Context

• Although these sins are applicable in many other
  situations, they are going to be addressed in the
  context of HEP.
• Agree that HEP Software Engineering is a special
  case because of the:
   •   Size of projects
   •   Amount of money invested
   •   Amount of people involved
   •   High expectations from research




                                                      3
Sin#1: Tool-coupled Productivity

Observation:
• We’ve used the same tools for the past 25 years
• Religious “wars” about the toolkit

Problem:
• Tools don’t scale.
• They slow us down.

Solution:
• New free tools can do the “dirty” repetitive work for you.
• Automate as much as you can!

                                                               4
Sin#2: Code Infected

Observation:
• Software Engineers love writing code.
• Write it in small chunks; its easier to understand.

Problem:
• Easy to write code.
• Easy to prototype a system.

Solution:
• Understand the problem & the solution before coding.
• Design first, code later.

                                                         5
Sin#3: Process Infected

Observation:
• Very detailed and specific processes
• Quality Assurance is postponed or flawed

Problem:
• Reduce productivity/creativity
• Create unnecessary overhead

Solution:
• Process Reengineering from the SE themselves
• Have bare minimum that will save us from chaos
• Describe only the functional aspects of the work

                                                     6
Sin#4: Reinventing The Wheel

Observation:
• Recurring problems get solved all over again
• Rewriting algorithms (sorting?)
• Several projects that do almost the same thing

Problem:
• Duplicated effort, wasted man-power/months
• Half completed projects (80% maybe?)

Solution:
• Use patterns/templates/existing code/catalogs
• Ask for other peoples’ experiences

                                                   7
Sin#5: Functional but not Usable

Observation:
• Overexposing interfaces
• Information packed applications/websites
• Inadequate help system/updated documentation

Problem:
• User’s given too much choice and makes wrong one

Solution:
• Get feedback. Don’t think for your users, ask them!
• Be consistent! Guide the users’ actions.
• Spend that 10% of time to make the application shine!

                                                          8
Sin#6: Documentation Paralysis

Observation:
• Huge amount of documentation

Problem:
• Out of date
• Manually produced
• Not informational/relevant

Solution:
• Source code metadata documentation
• Reverse engineer diagrams during implementation

                                                    9
Sin#7: Change Resistant

Observation:
• Pieces are only added, never taken away
• “This is how we do it here, try and adapt.”

Problem:
• People like to stay in their zone of comfort

Solution:
• Be flexible!
• “The reasonable man adapts himself to the
environment; the unreasonable man persists in trying to
adapt the environment to himself. If any progress has
been achieved it was due to the unreasonable man.”
                                                          10
Summary

Things to take home:
• Automate as much as you can.
• Over-design, under-engineer.
• Be lazy! Re-use code, Patterns, Templates.
• Looks matter!
• Be unreasonable! Change how things are done.




                                                 11
Thank You!



Ioannis Baltopoulos
CERN Summer Student 2004



CSC Student Lectures (Vico Equence)
Monday, 6th September, 2004
Tools of the Trade: Build tools

•   ANT (ant.apache.org)
•   Maven (maven.apache.org)
•   GNU Make (www.gnu.org/software/make)
•   NAnt (nant.sourceforge.net)




                                           13
Tools of the Trade: IDEs

•   Eclipse (www.eclipse.org)
•   NetBeans (www.netbeans.org)
•   JCreator (www.jcreator.com)
•   IntelliJ IDEA (www.jetbrains.com)
•   Sun Java Studio Creator (www.sun.com/jscreator)
•   JDeveloper (otn.oracle.com/products/jdev)
•   Visual Studio (http://msdn.microsoft.com/vstudio/)




                                                         14
Tools of the Trade: Testing

•   JUnit (www.junit.org)
•   Clover (www.cenqua.com/clover)
•   JCoverage (www.jcoverage.com)
•   SQLUnit (sqlunit.sourceforge.net)
•   DBUnit (dbunit.sourceforge.net)
•   HTTPUnit (httpunit.sourceforge.net)




                                          15
Tools of the Trade: Quality Assurance

• Checkstyle (checkstyle.sourceforge.net)




                                            16
Tools of the Trade: Auto Documentation

• JavaDoc (www.sun.com)
• Doxygen (www.doxygen.org)
• yDoc (www.yworks.com)




                                         17
Tools of the Trade: Design Tools

•   ArgoUML
•   Poseidon for UML
•   Rational Rose
•   MagicDraw
•   Visio
•   Together




                                   18
Tools of the Trade: Version Control

•   CVS (www.cvshome.org)
•   Subversion (subversion.tigris.org)
•   Visual SourceSafe (msdn.microsoft.com/ssafe)
•   RCS




                                                   19
Source Code Resources

•   Java Almanac
•   Java Forums (forums.java.sun.com)
•   Numerical Recipes in C
•   Stony Brook Algorithm Repository




                                        20
Design Patterns Resources




                            21

More Related Content

Similar to The 7 Sins of Software Engineers in HEP

Hey open source, don’t forget the user! - by Chad Kieffer
Hey open source,  don’t forget the user! - by Chad KiefferHey open source,  don’t forget the user! - by Chad Kieffer
Hey open source, don’t forget the user! - by Chad Kieffer
dmthompson
 
Presentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss ToolsPresentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss Tools
Ganesh Samarthyam
 
Laird Best Practices Ajax World West2008
Laird Best Practices Ajax World West2008Laird Best Practices Ajax World West2008
Laird Best Practices Ajax World West2008
rajivmordani
 
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
Steve Lange
 

Similar to The 7 Sins of Software Engineers in HEP (20)

Static Analysis Techniques For Testing Application Security - Houston Tech Fest
Static Analysis Techniques For Testing Application Security - Houston Tech FestStatic Analysis Techniques For Testing Application Security - Houston Tech Fest
Static Analysis Techniques For Testing Application Security - Houston Tech Fest
 
Scripting Recipes for Testers
Scripting Recipes for TestersScripting Recipes for Testers
Scripting Recipes for Testers
 
Hey open source, don’t forget the user! - by Chad Kieffer
Hey open source,  don’t forget the user! - by Chad KiefferHey open source,  don’t forget the user! - by Chad Kieffer
Hey open source, don’t forget the user! - by Chad Kieffer
 
Week7
Week7Week7
Week7
 
Challenges In Managing Embedded Product Development
Challenges In Managing Embedded Product DevelopmentChallenges In Managing Embedded Product Development
Challenges In Managing Embedded Product Development
 
Jonathon Rochelle @ FOWA Feb 07
Jonathon Rochelle @ FOWA Feb 07Jonathon Rochelle @ FOWA Feb 07
Jonathon Rochelle @ FOWA Feb 07
 
Introduction To Software Engineering
Introduction To Software EngineeringIntroduction To Software Engineering
Introduction To Software Engineering
 
Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)
 
Becoming A Php Ninja
Becoming A Php NinjaBecoming A Php Ninja
Becoming A Php Ninja
 
Pownce Lessons Learned
Pownce Lessons LearnedPownce Lessons Learned
Pownce Lessons Learned
 
2011_esc.pdf
2011_esc.pdf2011_esc.pdf
2011_esc.pdf
 
Presentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss ToolsPresentations Unusual Java Bugs And Detecting Them Using Foss Tools
Presentations Unusual Java Bugs And Detecting Them Using Foss Tools
 
Jun Heider - Flex Application Profiling By Example
Jun Heider - Flex Application Profiling By ExampleJun Heider - Flex Application Profiling By Example
Jun Heider - Flex Application Profiling By Example
 
Extracting Plugins And Gems From Rails Apps
Extracting Plugins And Gems From Rails AppsExtracting Plugins And Gems From Rails Apps
Extracting Plugins And Gems From Rails Apps
 
Laird Best Practices Ajax World West2008
Laird Best Practices Ajax World West2008Laird Best Practices Ajax World West2008
Laird Best Practices Ajax World West2008
 
Agile Development Methodologies
Agile Development MethodologiesAgile Development Methodologies
Agile Development Methodologies
 
Where's the Play in Programming?
Where's the Play in Programming?Where's the Play in Programming?
Where's the Play in Programming?
 
Understand Open Source ecosystems
Understand Open Source ecosystemsUnderstand Open Source ecosystems
Understand Open Source ecosystems
 
4gl code parser
4gl code parser 4gl code parser
4gl code parser
 
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
PHX Session #3 - "It Works on My Machine!" Closing the Loop Between Developme...
 

More from Ioannis Baltopoulos (6)

Advanced Issues and Future Trends
Advanced Issues and Future TrendsAdvanced Issues and Future Trends
Advanced Issues and Future Trends
 
Consuming, providing and publishing Web Services
Consuming, providing and publishing Web ServicesConsuming, providing and publishing Web Services
Consuming, providing and publishing Web Services
 
Introduction to Web Services
Introduction to Web ServicesIntroduction to Web Services
Introduction to Web Services
 
Secure Compilation of a Multi-Tier Web Language (TLDI)
Secure Compilation of a Multi-Tier Web Language (TLDI)Secure Compilation of a Multi-Tier Web Language (TLDI)
Secure Compilation of a Multi-Tier Web Language (TLDI)
 
Secure Compilation of a Multi-Tier Web Language (Semantics Lunch)
Secure Compilation of a Multi-Tier Web Language (Semantics Lunch)Secure Compilation of a Multi-Tier Web Language (Semantics Lunch)
Secure Compilation of a Multi-Tier Web Language (Semantics Lunch)
 
Audio Walks
Audio WalksAudio Walks
Audio Walks
 

Recently uploaded

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Recently uploaded (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

The 7 Sins of Software Engineers in HEP

  • 1. The 7 Sins of Software Engineers in HEP Ioannis Baltopoulos CERN Summer Student 2004 CSC Student Lectures (Vico Equence) Monday, 6th September, 2004
  • 2. Outline • The Context (HEP) • The Sins! • Observation • Problem • Solution (definitely not exclusive) • Conclusion 2
  • 3. Establishing the Context • Although these sins are applicable in many other situations, they are going to be addressed in the context of HEP. • Agree that HEP Software Engineering is a special case because of the: • Size of projects • Amount of money invested • Amount of people involved • High expectations from research 3
  • 4. Sin#1: Tool-coupled Productivity Observation: • We’ve used the same tools for the past 25 years • Religious “wars” about the toolkit Problem: • Tools don’t scale. • They slow us down. Solution: • New free tools can do the “dirty” repetitive work for you. • Automate as much as you can! 4
  • 5. Sin#2: Code Infected Observation: • Software Engineers love writing code. • Write it in small chunks; its easier to understand. Problem: • Easy to write code. • Easy to prototype a system. Solution: • Understand the problem & the solution before coding. • Design first, code later. 5
  • 6. Sin#3: Process Infected Observation: • Very detailed and specific processes • Quality Assurance is postponed or flawed Problem: • Reduce productivity/creativity • Create unnecessary overhead Solution: • Process Reengineering from the SE themselves • Have bare minimum that will save us from chaos • Describe only the functional aspects of the work 6
  • 7. Sin#4: Reinventing The Wheel Observation: • Recurring problems get solved all over again • Rewriting algorithms (sorting?) • Several projects that do almost the same thing Problem: • Duplicated effort, wasted man-power/months • Half completed projects (80% maybe?) Solution: • Use patterns/templates/existing code/catalogs • Ask for other peoples’ experiences 7
  • 8. Sin#5: Functional but not Usable Observation: • Overexposing interfaces • Information packed applications/websites • Inadequate help system/updated documentation Problem: • User’s given too much choice and makes wrong one Solution: • Get feedback. Don’t think for your users, ask them! • Be consistent! Guide the users’ actions. • Spend that 10% of time to make the application shine! 8
  • 9. Sin#6: Documentation Paralysis Observation: • Huge amount of documentation Problem: • Out of date • Manually produced • Not informational/relevant Solution: • Source code metadata documentation • Reverse engineer diagrams during implementation 9
  • 10. Sin#7: Change Resistant Observation: • Pieces are only added, never taken away • “This is how we do it here, try and adapt.” Problem: • People like to stay in their zone of comfort Solution: • Be flexible! • “The reasonable man adapts himself to the environment; the unreasonable man persists in trying to adapt the environment to himself. If any progress has been achieved it was due to the unreasonable man.” 10
  • 11. Summary Things to take home: • Automate as much as you can. • Over-design, under-engineer. • Be lazy! Re-use code, Patterns, Templates. • Looks matter! • Be unreasonable! Change how things are done. 11
  • 12. Thank You! Ioannis Baltopoulos CERN Summer Student 2004 CSC Student Lectures (Vico Equence) Monday, 6th September, 2004
  • 13. Tools of the Trade: Build tools • ANT (ant.apache.org) • Maven (maven.apache.org) • GNU Make (www.gnu.org/software/make) • NAnt (nant.sourceforge.net) 13
  • 14. Tools of the Trade: IDEs • Eclipse (www.eclipse.org) • NetBeans (www.netbeans.org) • JCreator (www.jcreator.com) • IntelliJ IDEA (www.jetbrains.com) • Sun Java Studio Creator (www.sun.com/jscreator) • JDeveloper (otn.oracle.com/products/jdev) • Visual Studio (http://msdn.microsoft.com/vstudio/) 14
  • 15. Tools of the Trade: Testing • JUnit (www.junit.org) • Clover (www.cenqua.com/clover) • JCoverage (www.jcoverage.com) • SQLUnit (sqlunit.sourceforge.net) • DBUnit (dbunit.sourceforge.net) • HTTPUnit (httpunit.sourceforge.net) 15
  • 16. Tools of the Trade: Quality Assurance • Checkstyle (checkstyle.sourceforge.net) 16
  • 17. Tools of the Trade: Auto Documentation • JavaDoc (www.sun.com) • Doxygen (www.doxygen.org) • yDoc (www.yworks.com) 17
  • 18. Tools of the Trade: Design Tools • ArgoUML • Poseidon for UML • Rational Rose • MagicDraw • Visio • Together 18
  • 19. Tools of the Trade: Version Control • CVS (www.cvshome.org) • Subversion (subversion.tigris.org) • Visual SourceSafe (msdn.microsoft.com/ssafe) • RCS 19
  • 20. Source Code Resources • Java Almanac • Java Forums (forums.java.sun.com) • Numerical Recipes in C • Stony Brook Algorithm Repository 20