Loosely Coupled Thoughts

978 views

Published on

A collection of related ideas about software development picked up over the last couple of years of experience.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
978
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • NESCent, The National Evolutionary Synthesis Center, is a collaborative effort of Duke University, The University of North Carolina at Chapel Hill and North Carolina State University and is sponsored by the National Science Foundation.Our mission is to facilitate broadly synthetic research to address fundamental questions in evolutionary biology.
  • Small team, communication was extremely important
  • Small team, communication was extremely important
  • Small team, communication was extremely important
  • Small team, communication was extremely important
  • Small team, communication was extremely important
  • Unit testing helps prevent too much “good days” for QA! Jerry Schneider on the Core Software team says this all the time.
  • “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.” src: http://en.wikipedia.org/wiki/Cyberinfrastructure
  • “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.” src: http://en.wikipedia.org/wiki/Cyberinfrastructure
  • “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.” src: http://en.wikipedia.org/wiki/Cyberinfrastructure
  • “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.” src: http://en.wikipedia.org/wiki/Cyberinfrastructure
  • “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.” src: http://en.wikipedia.org/wiki/Cyberinfrastructure
  • “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.” src: http://en.wikipedia.org/wiki/Cyberinfrastructure
  • “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.” src: http://en.wikipedia.org/wiki/Cyberinfrastructure
  • “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.” src: http://en.wikipedia.org/wiki/Cyberinfrastructure
  • “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.” src: http://en.wikipedia.org/wiki/Cyberinfrastructure
  • “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.” src: http://en.wikipedia.org/wiki/Cyberinfrastructure
  • Loosely Coupled Thoughts

    1. 1. Loosely Coupled Thoughts<br />Andrew Lenards<br />Feb. 12, 2010<br />
    2. 2. Andrew Lenards<br />iPlant Collaborative<br />S/W Eng on Core S/W team<br />University of Arizona<br />CS Grad, 2001<br />Reformed .NET developer<br />Former consultant, instructor, & technical trainer<br />Domain experience:<br />Motor Vehicle Domain<br />Phylogenetics / Bioinformatics (sort of) <br />
    3. 3. Andrew Lenards - Activities<br />Learning about:<br />Requirements, User Stories, etc. <br />S/W Design/Architecture, Patterns, SOA<br />Molecular Biology, Phylogenetics, Phyloinformatics, Genetics, and Genomics<br />Active in:<br />Tucson Java Users Group<br />Semi-active in:<br />Tucson Startup Drinks<br />Ubuntu Arizona Local Community / TFUG<br />
    4. 4.
    5. 5. What do you expectwhen you graduate? <br />
    6. 6.
    7. 7.
    8. 8.
    9. 9. The Myth of the Lone Developer <br />
    10. 10.
    11. 11. SRS -&gt; * -&gt; Code<br />(rarely talking to anyone else, if so only other devs)<br />
    12. 12. in-practice: lots of interaction w/ technical&non-technical people<br />
    13. 13.
    14. 14.
    15. 15. Small team <br />
    16. 16. Varying backgrounds <br />
    17. 17. (brilliant co-workers)<br />
    18. 18. Diverse skill-sets <br />
    19. 19. What’d I get out of it?<br />
    20. 20.
    21. 21.
    22. 22.
    23. 23.
    24. 24. “Lone” Developer, Meet your team:- PastYou-FutureMe<br />
    25. 25.
    26. 26. Systems grow & change in organic ways<br />(related topic: Entropy)<br />
    27. 27. Learned importance of unit testing <br />
    28. 28. “Safety net for refactoring”<br />
    29. 29.
    30. 30. Ruthless refactoringw/ extreme confidence <br />
    31. 31. Automation keepsyou & your team honest<br />(Continuous Integration)<br />
    32. 32. Broken Window Theory<br />(Pragmatic Programmer)<br />
    33. 33. Need an infectious attitude towardtesting…<br />
    34. 34. Robust software is well-tested software<br />
    35. 35. Good day for QA ==Bad day for Dev<br />
    36. 36. &quot;Testing is the engineering rigor of software development.&quot;<br />-- Neal Ford<br />
    37. 37. ExecutableDocumentation<br />
    38. 38. Testing affects your design<br />
    39. 39. TDD: Test-driven Development<br />
    40. 40. TDD: Test-driven Design<br />
    41. 41. Flexible design grows out of making code“testable”<br />
    42. 42. “Legacy Code”:any source w/o unit tests<br />
    43. 43.
    44. 44. … of the community, by the community,for the community <br />
    45. 45. Empowering the next generation of biologist<br />
    46. 46. Why?<br />
    47. 47. The world faces tough problems in the future<br />
    48. 48. Fuel/Energy<br />
    49. 49. Food<br />
    50. 50. Water Supply<br />
    51. 51. …<br />
    52. 52. Cyberinfrastructure<br />
    53. 53. “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.” <br />
    54. 54. Large systems designleads to diverse,interdisciplinary teams<br />
    55. 55. With the direction of Computational Biology & Bioinformatics… <br />
    56. 56.
    57. 57. Software Development as aCollaborative Game<br />
    58. 58. Soft skills are important<br />
    59. 59. Speaking in tongues is not allowed<br />
    60. 60. Working in pairs, not just forpair-programming ordebugging<br />
    61. 61. Impromptu design discussions <br />(they often include more than just technical folks)<br />
    62. 62.
    63. 63. Code for Science<br />
    64. 64. I wasn’t always interested in science/biology<br />
    65. 65.
    66. 66. Confused looks are commonplace for me<br />
    67. 67. YOU &gt; me<br />
    68. 68. Biology is an interesting domain<br />
    69. 69.
    70. 70. I know too much aboutAuto titling & international trucking fees<br />
    71. 71.
    72. 72.
    73. 73.
    74. 74.
    75. 75.
    76. 76. Going forward…<br />
    77. 77. Test, test, test<br />
    78. 78. If not test-first, test-very-soon-after<br />
    79. 79. Help a FOSS project(best place to start: testing)<br />[FOSS or F/OSS: Free or Open Source Software]<br />
    80. 80. Practice communicating<br />Join/start a FOSS project (as a group)<br />Writing / Blog / Whatever<br />Present@User Groups<br />Toastmasters?<br />UTA Program?<br />
    81. 81. Design<br />READ<br />Books, Blogs, Magazines, PublicationsAND other people’s code<br />Code<br />Make mistakes and learn from them<br />
    82. 82. Suggested Reading<br />Pragmatic Programmer<br />Andy Hunt & Dave Thomas<br />97 Things Every Programmer Should Know<br />Productive Programmer<br />Neal Ford<br />Read “Uncle Bob”<br />“The Humble Dialog Box”<br />Michael Feathers<br />
    83. 83. Learn a new programming languageevery year (or two)<br />
    84. 84. Groovy, Python, Ruby,Perl, Icon, Scala, Lisp, Self, Scheme, Smalltalk, SML, …<br />
    85. 85. Become familiar with popular FOSS projects… <br />
    86. 86. What’s Inversion of Control?Don’t know? Learn more about Spring or Guice<br />
    87. 87. Interested in biologyor computational biology? <br />
    88. 88. Fun Foundational Materials<br />The Manga Guide to Molecular Biology<br />The Stuff of Life: the Graphic Guide to Genetics and DNA<br />Cartoon Guide to Genetics<br />The Manga Guide to Statistics <br />Cartoon Guide to Statistics<br />
    89. 89. Still interested? <br />
    90. 90. Really?!?<br />
    91. 91. More Materials<br />Lawrence Hunter<br />Introduction to Molecular Biology for Computer Scientists<br />http://compbio.uchsc.edu/Hunter/01-Hunter.pdf<br />The Processes of Life: An Introduction to Molecular Biology<br />A Computer Scientist’s Guide to Cell Biology<br />…<br />
    92. 92. Miscellaneous Info<br />Contact Info<br />lenards@iplantcollaborative.org<br />lenards@email.arizona.edu<br />Slides<br />Will be posted here:<br />http://www.slideshare.net/lenards<br />
    93. 93. Image Acknowledgements<br />http://www.flickr.com/photos/lenards/3955049100/<br />“Mad Scientist Photo” of Andrew by Alex Yelich<br />http://www.flickr.com/photos/thatgrumguy/402041540/<br />http://www.flickr.com/photos/freya_gefn/2777209147/<br />http://www.flickr.com/photos/pkmousie/2652404430/<br />http://www.flickr.com/photos/sklathill/479528238/<br />http://www.flickr.com/photos/lorelei-ranveig/2294093649/<br />http://www.flickr.com/photos/roadsidepictures/389828793/<br />http://www.flickr.com/photos/graylight/72935997/<br />http://www2.genome.arizona.edu/images/bio5bldg.jpg<br />http://www.flickr.com/photos/7298460@N03/4335819270/<br />http://www.teachforamerica.org/assets/images/img/logo_tfa.gif<br />
    94. 94. The content of this work is licensed under a Creative Commons <br />Attribution-NonCommercial-ShareAlike License. Your use of this material constitutes acceptance of that license and the conditions of use of materials on this site: <br />http://creativecommons.org/licenses/by-nc-sa/3.0/<br />

    ×