Top Banner
Loosely Coupled Thoughts Andrew Lenards Feb. 12, 2010
94

Loosely Coupled Thoughts

Nov 12, 2014

Download

Technology

Andrew Lenards

A collection of related ideas about software development picked up over the last couple of years of experience.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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/