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

Recently uploaded (20)

Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
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
 
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
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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...
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 

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