Transcript
Page 1: Loosely  Coupled  Thoughts

Loosely Coupled Thoughts

Andrew LenardsFeb. 12, 2010

Page 2: Loosely  Coupled  Thoughts

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

• University of Arizona– CS Grad, 2001

• Reformed .NET developer• Former consultant,

instructor, & technical trainer• Domain experience:– Motor Vehicle Domain– Phylogenetics / Bioinformatics (sort of)

Page 3: Loosely  Coupled  Thoughts

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 4: Loosely  Coupled  Thoughts
Page 5: Loosely  Coupled  Thoughts

What do you expectwhen you graduate?

Page 6: Loosely  Coupled  Thoughts
Page 7: Loosely  Coupled  Thoughts
Page 8: Loosely  Coupled  Thoughts
Page 9: Loosely  Coupled  Thoughts

The Myth of the Lone Developer

Page 10: Loosely  Coupled  Thoughts
Page 11: Loosely  Coupled  Thoughts

SRS -> * -> Code

(rarely talking to anyone else, if so only other devs)

Page 12: Loosely  Coupled  Thoughts

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

Page 13: Loosely  Coupled  Thoughts
Page 14: Loosely  Coupled  Thoughts
Page 15: Loosely  Coupled  Thoughts

Small team

Page 16: Loosely  Coupled  Thoughts

Varying backgrounds

Page 17: Loosely  Coupled  Thoughts

(brilliant co-workers)

Page 18: Loosely  Coupled  Thoughts

Diverse skill-sets

Page 19: Loosely  Coupled  Thoughts

What’d I get out of it?

Page 20: Loosely  Coupled  Thoughts
Page 21: Loosely  Coupled  Thoughts
Page 22: Loosely  Coupled  Thoughts
Page 23: Loosely  Coupled  Thoughts
Page 24: Loosely  Coupled  Thoughts

“Lone” Developer, Meet your team:

- PastYou-FutureMe

Page 25: Loosely  Coupled  Thoughts
Page 26: Loosely  Coupled  Thoughts

Systems grow & change in organic ways

(related topic: Entropy)

Page 27: Loosely  Coupled  Thoughts

Learned importance of unit testing

Page 28: Loosely  Coupled  Thoughts

“Safety net for refactoring”

Page 29: Loosely  Coupled  Thoughts
Page 30: Loosely  Coupled  Thoughts

Ruthless refactoringw/ extreme confidence

Page 31: Loosely  Coupled  Thoughts

Automation keepsyou & your team

honest

(Continuous Integration)

Page 32: Loosely  Coupled  Thoughts

Broken Window Theory

(Pragmatic Programmer)

Page 33: Loosely  Coupled  Thoughts

Need an infectious attitude toward

testing…

Page 34: Loosely  Coupled  Thoughts

Robust software is well-tested software

Page 35: Loosely  Coupled  Thoughts

Good day for QA ==Bad day for Dev

Page 36: Loosely  Coupled  Thoughts

"Testing is the engineering rigor of software development."

-- Neal Ford

Page 37: Loosely  Coupled  Thoughts

ExecutableDocumentation

Page 38: Loosely  Coupled  Thoughts

Testing affects your design

Page 39: Loosely  Coupled  Thoughts

TDD: Test-driven Development

Page 40: Loosely  Coupled  Thoughts

TDD: Test-driven Design

Page 41: Loosely  Coupled  Thoughts

Flexible design grows out of making code

“testable”

Page 42: Loosely  Coupled  Thoughts

“Legacy Code”:any source w/o unit tests

Page 43: Loosely  Coupled  Thoughts
Page 44: Loosely  Coupled  Thoughts

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

Page 45: Loosely  Coupled  Thoughts

Empowering the next generation of biologist

Page 46: Loosely  Coupled  Thoughts

Why?

Page 47: Loosely  Coupled  Thoughts

The world faces tough problems

in the future

Page 48: Loosely  Coupled  Thoughts

Fuel/Energy

Page 49: Loosely  Coupled  Thoughts

Food

Page 50: Loosely  Coupled  Thoughts

Water Supply

Page 51: Loosely  Coupled  Thoughts

Page 52: Loosely  Coupled  Thoughts

Cyberinfrastructure

Page 53: Loosely  Coupled  Thoughts

“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 54: Loosely  Coupled  Thoughts

Large systems designleads to diverse,

interdisciplinary teams

Page 55: Loosely  Coupled  Thoughts

With the direction of Computational Biology &

Bioinformatics…

Page 56: Loosely  Coupled  Thoughts
Page 57: Loosely  Coupled  Thoughts

Software Development

as aCollaborative Game

Page 58: Loosely  Coupled  Thoughts

Soft skills are important

Page 59: Loosely  Coupled  Thoughts

Speaking in tongues is not allowed

Page 60: Loosely  Coupled  Thoughts

Working in pairs, not just for

pair-programming ordebugging

Page 61: Loosely  Coupled  Thoughts

Impromptu design discussions

(they often include more than just technical folks)

Page 62: Loosely  Coupled  Thoughts
Page 63: Loosely  Coupled  Thoughts

Code for Science

Page 64: Loosely  Coupled  Thoughts

I wasn’t always interested in

science/biology

Page 65: Loosely  Coupled  Thoughts
Page 66: Loosely  Coupled  Thoughts

Confused looks are commonplace for me

Page 67: Loosely  Coupled  Thoughts

YOU > me

Page 68: Loosely  Coupled  Thoughts

Biology is an interesting domain

Page 69: Loosely  Coupled  Thoughts
Page 70: Loosely  Coupled  Thoughts

I know too much aboutAuto titling &

international trucking fees

Page 71: Loosely  Coupled  Thoughts
Page 72: Loosely  Coupled  Thoughts
Page 73: Loosely  Coupled  Thoughts
Page 74: Loosely  Coupled  Thoughts
Page 75: Loosely  Coupled  Thoughts
Page 76: Loosely  Coupled  Thoughts

Going forward…

Page 77: Loosely  Coupled  Thoughts

Test, test, test

Page 78: Loosely  Coupled  Thoughts

If not test-first, test-very-soon-after

Page 79: Loosely  Coupled  Thoughts

Help a FOSS project(best place to start: testing)

[FOSS or F/OSS: Free or Open Source Software]

Page 80: Loosely  Coupled  Thoughts

Practice communicating

• Join/start a FOSS project (as a group)• Writing / Blog / Whatever• Present @ User Groups– Toastmasters?

• UTA Program?

Page 81: Loosely  Coupled  Thoughts

Design

• READ– Books, Blogs, Magazines, Publications

AND other people’s code• Code– Make mistakes and learn from them

Page 82: Loosely  Coupled  Thoughts

Suggested Reading

• Pragmatic Programmer– Andy Hunt & Dave Thomas

• 97 Things Every Programmer Should Know• Productive Programmer– Neal Ford

• Read “Uncle Bob”• “The Humble Dialog Box”– Michael Feathers

Page 83: Loosely  Coupled  Thoughts

Learn a new programming language

every year (or two)

Page 84: Loosely  Coupled  Thoughts

Groovy, Python, Ruby,Perl, Icon, Scala, Lisp, Self, Scheme, Smalltalk, SML, …

Page 85: Loosely  Coupled  Thoughts

Become familiar with popular FOSS projects…

Page 86: Loosely  Coupled  Thoughts

What’s Inversion of Control?Don’t know?

Learn more about Spring or Guice

Page 87: Loosely  Coupled  Thoughts

Interested in biologyor computational biology?

Page 88: Loosely  Coupled  Thoughts

Fun Foundational Materials

• The Manga Guide to Molecular Biology• The Stuff of Life: the Graphic Guide to Genetics and DNA

• Cartoon Guide to Genetics• The Manga Guide to Statistics • Cartoon Guide to Statistics

Page 89: Loosely  Coupled  Thoughts

Still interested?

Page 90: Loosely  Coupled  Thoughts

Really?!?

Page 91: Loosely  Coupled  Thoughts

More Materials

• Lawrence Hunter– Introduction to Molecular Biology for Computer

Scientists• http://compbio.uchsc.edu/Hunter/01-Hunter.pdf

– The Processes of Life: An Introduction to Molecular Biology

• A Computer Scientist’s Guide to Cell Biology• …

Page 92: Loosely  Coupled  Thoughts

Miscellaneous Info

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

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

Page 93: Loosely  Coupled  Thoughts

Image Acknowledgements• http://www.flickr.com/photos/lenards/3955049100/• “Mad Scientist Photo” of Andrew by Alex Yelich• 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://www.flickr.com/photos/lorelei-ranveig/2294093649/• http://www.flickr.com/photos/roadsidepictures/389828793/• http://www.flickr.com/photos/graylight/72935997/• http://www2.genome.arizona.edu/images/bio5bldg.jpg• http://www.flickr.com/photos/7298460@N03/4335819270/• http://www.teachforamerica.org/assets/images/img/logo_tfa.gif

Page 94: Loosely  Coupled  Thoughts

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/


Top Related