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

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
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
 
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
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
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
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
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
 
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
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
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
 
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, ...
 

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