code for science (rev 1)

99
Code for Science Andrew Lenards June 24, 2010

Upload: andrew-lenards

Post on 29-Nov-2014

496 views

Category:

Documents


0 download

DESCRIPTION

Slides that accompanied a talk given to undergraduate biologists and computer scientists.

TRANSCRIPT

Page 1: Code for science (rev 1)

Code forScience

Andrew LenardsJune 24, 2010

Page 2: Code for science (rev 1)

slideshare.net/lenards

Page 3: Code for science (rev 1)

Andrew Lenards • iPlant Collaborative– on Core S/W team

• University of Arizona– CS Grad, 2001

• Experienced developer, former consultant, instructor, & technical trainer

• Domain experience:– Motor Vehicle Domain– Phylogenetics / Bioinformatics (sort of)

Page 4: Code for science (rev 1)

Andrew Lenards - Activities• Learning about:

– Requirements, User Stories, etc. – S/W Design/Architecture, Patterns, SOA– Molecular Biology, Phylogenetics, Phyloinformatics, Genetics, and

Genomics

• Active in:– Tucson Java Users Group

• Semi-active in:– Tucson Startup Drinks– Ubuntu Arizona Local Community / TFUG

Page 5: Code for science (rev 1)

Hybrid Vigor

Page 6: Code for science (rev 1)
Page 7: Code for science (rev 1)
Page 8: Code for science (rev 1)
Page 9: Code for science (rev 1)

Computational ___________

Page 10: Code for science (rev 1)

Computational _Thinking_

Page 11: Code for science (rev 1)

Computational _Biology_

Page 12: Code for science (rev 1)

Computational _Gardening_

Page 13: Code for science (rev 1)

Computational _Gardening_

Page 14: Code for science (rev 1)

Bio________

Page 15: Code for science (rev 1)

Biofuels

Page 16: Code for science (rev 1)

Biochemistry

Page 17: Code for science (rev 1)

Biophysics

Page 18: Code for science (rev 1)

Bioinformatics

Page 19: Code for science (rev 1)

Page 20: Code for science (rev 1)
Page 21: Code for science (rev 1)
Page 22: Code for science (rev 1)
Page 23: Code for science (rev 1)

What do you expectwhen you graduate?

Page 24: Code for science (rev 1)

… for the computer sciencemajors

Page 25: Code for science (rev 1)
Page 26: Code for science (rev 1)
Page 27: Code for science (rev 1)
Page 28: Code for science (rev 1)

Myth of the Lone

Developer

Page 29: Code for science (rev 1)
Page 30: Code for science (rev 1)

in-practice: lots of interaction w/ technical& non-technical people

Page 31: Code for science (rev 1)

Communication is amajor challenge

Take Away:

Page 32: Code for science (rev 1)

What might help?

Page 33: Code for science (rev 1)
Page 34: Code for science (rev 1)

Software projects fail.

Page 35: Code for science (rev 1)

… quite often

Page 36: Code for science (rev 1)

Why?

Page 37: Code for science (rev 1)

Adaption

Page 38: Code for science (rev 1)

Adaption & Quality lead to success

Page 39: Code for science (rev 1)

Quality Researchrequires

Quality Software

Page 40: Code for science (rev 1)

“good enough” Softwarecan help produceQuality Research

Page 41: Code for science (rev 1)

Starts with understanding

purpose…

Page 42: Code for science (rev 1)

… and leadsto testing

Page 43: Code for science (rev 1)

"Testing is the engineering rigor of software development."

-- Neal Ford

Page 44: Code for science (rev 1)

Testing affects your design

Page 45: Code for science (rev 1)

Flexible design grows out of making code

“testable”

Page 46: Code for science (rev 1)

testing brings about higher quality

Take Away:

Page 47: Code for science (rev 1)
Page 48: Code for science (rev 1)

Code for Science

Page 49: Code for science (rev 1)

I wasn’t always interested in

science/biology

Page 50: Code for science (rev 1)

Biology is an interesting domain

Page 51: Code for science (rev 1)
Page 52: Code for science (rev 1)

I know too much aboutAuto titling & international trucking fees

Page 53: Code for science (rev 1)

Conclusion: Act I

Page 54: Code for science (rev 1)

Miscellaneous Info

• Contact Info– [email protected][email protected]

• Slides– Will be posted here:• http://www.slideshare.net/lenards

Page 55: Code for science (rev 1)
Page 56: Code for science (rev 1)

… of the community, by the community, for the community

Page 57: Code for science (rev 1)

Empowering the next generation of biologist

Page 58: Code for science (rev 1)

Why?

Page 59: Code for science (rev 1)

The world faces tough problems

in the future

Page 60: Code for science (rev 1)

Fuel/Energy

Page 61: Code for science (rev 1)

Food

Page 62: Code for science (rev 1)

Water Supply

Page 63: Code for science (rev 1)

Page 64: Code for science (rev 1)

Cyberinfrastructure

Page 65: Code for science (rev 1)

“In scientific usage, cyberinfrastructure is a technological solution to the problem of efficiently

connecting data, computers, and people with the goal of enabling

derivation of novel scientific theories and knowledge.”

Page 66: Code for science (rev 1)

Large systems designleads to diverse,

interdisciplinary teams

Page 67: Code for science (rev 1)

With the direction of Computational Biology &

Bioinformatics…

Page 68: Code for science (rev 1)
Page 69: Code for science (rev 1)

Software Development

as aCollaborative Game

Page 70: Code for science (rev 1)

Soft skills are important

Page 71: Code for science (rev 1)

Speaking in tongues is not allowed

Page 72: Code for science (rev 1)

Working in pairs, not just for

pair-programming ordebugging

Page 73: Code for science (rev 1)

Impromptu design discussions

(they often include more than just technical folks)

Page 74: Code for science (rev 1)

Conclusion: Act II

Page 75: Code for science (rev 1)
Page 76: Code for science (rev 1)
Page 77: Code for science (rev 1)

Small team

Page 78: Code for science (rev 1)

Varying backgrounds

Page 79: Code for science (rev 1)

(brilliant co-workers)

Page 80: Code for science (rev 1)

Diverse skill-sets

Page 81: Code for science (rev 1)

What’d I get out of it?

Page 82: Code for science (rev 1)
Page 83: Code for science (rev 1)
Page 84: Code for science (rev 1)
Page 85: Code for science (rev 1)
Page 86: Code for science (rev 1)

“Lone” Developer, Meet your team:

- PastYou-FutureMe

Page 87: Code for science (rev 1)
Page 88: Code for science (rev 1)

Systems grow & change in organic ways

(related topic: Entropy)

Page 89: Code for science (rev 1)

Learned importance of unit testing

Page 90: Code for science (rev 1)

“Safety net for refactoring”

Page 91: Code for science (rev 1)
Page 92: Code for science (rev 1)

Ruthless refactoringw/ extreme confidence

Page 93: Code for science (rev 1)

Automation keepsyou & your team

honest

(Continuous Integration)

Page 94: Code for science (rev 1)

Broken Window Theory

(Pragmatic Programmer)

Page 95: Code for science (rev 1)

Need an infectious attitude toward

testing…

Page 96: Code for science (rev 1)

Robust software is well-tested software

Page 97: Code for science (rev 1)

Good day for QA ==Bad day for Dev

Page 98: Code for science (rev 1)

Image Acknowledgements• “Mad Scientist Photo” of Andrew by Alex Yelich• http://www.flickr.com/photos/sskennel/4496534369/• http://upload.wikimedia.org/wikipedia/commons/3/32/Charles_Darwin_by_Elliott_and_Fry.jpg• http://en.wikipedia.org/wiki/File:Koeh-283.jpg• http://jitterypenguin.com/images01/SWG%20Screenshots/Zoee/Master%20Commando%20Skill%

20Tree.jpg• http://www.flickr.com/photos/tonivc/2283676770/• http://www.flickr.com/photos/lorelei-ranveig/2294093649/• http://www.flickr.com/photos/thatgrumguy/402041540/• http://www.flickr.com/photos/freya_gefn/2777209147/• http://www.flickr.com/photos/pkmousie/2652404430/• http://www.flickr.com/photos/sklathill/479528238/• http://commons.wikimedia.org/wiki/File:Babel_fish_badge.jpg• http://www.flickr.com/photos/lorelei-ranveig/2294093649/• http://www.flickr.com/photos/roadsidepictures/389828793/• http://www.teachforamerica.org/assets/images/img/logo_tfa.gif• “Take Away” font: http://www.dafont.com/mailart-rubberstamp.font

Page 99: Code for science (rev 1)

The content of this work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike License. Your use of this material constitutes acceptance of that license and the conditions of use of materials on this site:

http://creativecommons.org/licenses/by-nc-sa/3.0/