(UCCSC, 2017) Vince Kellen CIO, UC San Diego

Slides:



Advertisements
Similar presentations
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
Advertisements

G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
Version Control with git. Version Control Version control is a system that records changes to a file or set of files over time so that you can recall.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Introduction to High-Level Language Programming
1 Programming Concepts Module Code : CMV6107 Class Contact Hours: 45 hours (Lecture 15 hours) (Laboratory/Tutorial 30 hours) Module Value: 1 Textbook:
RMG Study Group Session I: Git, Sphinx, webRMG Connie Gao 9/20/
Healthy Kids Zone Team Introduction Chad Honkofsky 2.
Introduction to Programming Peggy Batchelor.
Version Control. What is it? Software to help keep track of changes made to files Tracks the history of your work Helps you collaborate with others.
Version control Using Git Version control, using Git1.
ITEC 370 Lecture 16 Implementation. Review Questions? Design document on F, feedback tomorrow Midterm on F Implementation –Management (MMM) –Team roles.
1.8History of Java Java –Based on C and C++ –Originally developed in early 1991 for intelligent consumer electronic devices Market did not develop, project.
Information Systems and Network Engineering Laboratory II DR. KEN COSH WEEK 1.
Just as there are many human languages, there are many computer programming languages that can be used to develop software. Some are named after people,
Testing and Debugging Version 1.0. All kinds of things can go wrong when you are developing a program. The compiler discovers syntax errors in your code.
Computer Science and Engineering The Ohio State University  Widely used, especially in the opensource community, to track all changes to a project and.
Introduction to GitHub Alex Bigazzi Dec. 4, 2013 ITS Lab GitHub Introduction1.
BIT 286: Web Applications Automated Web Testing. Selenium  Selenium Is moving from being Firefox based to being more of a 'normal desktop' program that.
Wordpress with Mina Automated Deployment Solution Jonathan Gravato DIG 4104c.
CSC 1010 Programming for All Lecture 2 Introduction to Python Some material based on material from Marty Stepp, Instructor, University of Washington.
Continuous Deployments using SSDT
Unix tools Regular expressions grep sed AWK. Regular expressions Sequence of characters that define a search pattern banana matches the text banana
What is a Computer An electronic, digital device that stores and processes information. A machine that accepts input, processes it according to specified.
Information Systems and Network Engineering Laboratory I DR. KEN COSH WEEK 1.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
BIT 286: Web Applications Automated Web Testing. Selenium  Selenium Is moving from being Firefox based to being more of a 'normal desktop' program that.
CSC 241: Introduction to Computer Science I
Version Control Systems
CMPT 201 Computer Science II for Engineers
CompSci 230 Software Construction
CS5220 Advanced Topics in Web Programming Version Control with Git
Software Carpentry Workshop University of Nebraska – Lincoln Holland Computing Center Instructors: Dr. Jingchao Zhang, Natasha Pavlovikj, Carrie Brown.
Agenda:- DevOps Tools Chef Jenkins Puppet Apache Ant Apache Maven Logstash Docker New Relic Gradle Git.
Software Testing.
Information Systems and Network Engineering Laboratory II
How to Contribute to System Testing and Extract Results
Git and GitHub primer.
Computer Organization, Eclipse Intro
LECTURE 2: Software Configuration Management
Version Control.
Discussion 11 Final Project / Git.
Data Virtualization Tutorial… OAuth Example using Google Sheets
Version control, using Git
Test Driven Development 1 November Agenda  What is TDD ?  Steps to start  Refactoring  TDD terminology  Benefits  JUnit  Mocktio  Continuous.
Teaching a Workshop Kent Schroeder SIL AFA.
CS5220 Advanced Topics in Web Programming Version Control with Git
Software Engineering for Data Scientists
Version Control Systems
Fun with Reporting Services Tools
Lecture 1: Introduction
Part 1: Editing and Publishing Files
CS122B: Projects in Databases and Web Applications Winter 2018
Trainings 11/18 Advanced Java Things.
Implementing Listening Producers in IBM Sterling Filegateway
Topics Introduction Hardware and Software How Computers Store Data
Jupyter Notebooks in Dyalog APL
GitHub A Tool for software collaboration James Skon
Your code is not just…your code
Introduction to Git and GitHub
Git started with git: 2018 edition
Git GitHub.
Intro to Git & GitHub By Sean O’Mahoney.
1. GitHub.
Keeping your SQL Code safe
Using Veera with R and Shiny to Build Complex Visualizations
Web Application Development Using PHP
CSC 241: Introduction to Computer Science I
Your code is not just…your code
Presentation transcript:

“A lot of researchers didn’t realize they were going to have to become programmers” (UCCSC, 2017) Vince Kellen CIO, UC San Diego Code Handoff Pitfalls and Good Practices

The Code Handoff Pitfalls and Good Practices for Handing Code off to a New Developer Researcher Geoffrey Boushey Application Developer, UCSF

Quarterly SWC Workshops Today’s Offerings Classes in Python, SQL, Unix Programming support currently offered by DSI: Classes in Python, SQL, Unix Monthly Programming and Pizza Consulting Sessions So today we have a suite of classes that we offer. We trained a cohort of UCSF staff to teach SWC workshops so we no longer need to bring in several instructors We discovered that one of our library systems engineers was interested in teaching and now he teaches Python, SQL, and Unix classes We still offer monthly programming and pizza sessions And are trying a quarterly collaboration in the makers lab

Code Handoff Pitfalls and Good Practices

What do researchers ask about? Common questions Data processing Getting software to compile and run Taking ownership of a new code base Archiving and versioning Less common questions Math, science, stats, machine learning, algorithms Code Handoff Pitfalls and Good Practices

Why are code transfers difficult? UC grad students, postdocs, and researchers are conscientious, motivated, and busy. Technical skills are varied and uneven The code used by UC labs is often essential to continuity of research. When things go wrong, it’s frustrating interesting. How and why do code transfers become difficult to manage? Code Handoff Pitfalls and Good Practices

The setup A graduate student applies for a postdoc, and lists “Python” just high enough on the CV to meet the requirements, but just low enough on the CV to avoid becoming a programmer. The PI looks at the CV and says “Python? Excellent!” “Hey could you take over this Python code base?” Code Handoff Pitfalls and Good Practices

Taking ownership of a new code base Common problems, in the order they are typically encountered No Code No Repository No Build No Data No Tests No Documentation No Collaborators Code Handoff Pitfalls and Good Practices

No Code Code Handoff Pitfalls and Good Practices

Code Handoff Pitfalls and Good Practices

No Code No files Executable files only Generated files only Interpreted files only Code Handoff Pitfalls and Good Practices

Executable Files Only – No Source Code Handoff Pitfalls and Good Practices

Encoded Files Only Code Handoff Pitfalls and Good Practices

What to do? Email the original developer Search or grep development or qa servers Search through old email threads Use a decompiler Create an archive! Code Handoff Pitfalls and Good Practices

No Repository or Versioning Code Handoff Pitfalls and Good Practices

Code Handoff Pitfalls and Good Practices

No Repository or Versioning No versioning No copy of record Prod, test, development, qa are handled through code changes Run time environment is determined by examining the code Code Handoff Pitfalls and Good Practices

Code Handoff Pitfalls and Good Practices

Code Handoff Pitfalls and Good Practices

What to do? Git init Git add . Git commit –m “first commit” Git push Minimal Use of Versioning Git init Git add . Git commit –m “first commit” Git push Be careful with protected information Be careful with information overload Code Handoff Pitfalls and Good Practices

No Build Instructions Code Handoff Pitfalls and Good Practices

Code Handoff Pitfalls and Good Practices

No Build Instructions Run, install, repeat Manual list of dependencies List of installation commands Installation scripts (bash, python,…) Make files Ant, maven, bundle,... Code Handoff Pitfalls and Good Practices

No Data Code Handoff Pitfalls and Good Practices

Code Handoff Pitfalls and Good Practices

Missing Data Files Reverse engineer a data file Look for file i/o Look for database calls Look for web based apis or json files Follow error messages Create and archive a test data file! Code Handoff Pitfalls and Good Practices | [footer text here]

No Data Preparation Information Code Handoff Pitfalls and Good Practices

No Data Preparation Information Missing Information about how data was collected JSON Web APIs Databases On line spreadsheet Data harvesting on web, social media Code Handoff Pitfalls and Good Practices

No Data Preparation Information Missing information on how data was prepared Scripts File I/O calls Regular Expressions Unix Commands Code Handoff Pitfalls and Good Practices

Code Handoff Pitfalls and Good Practices

Code Handoff Pitfalls and Good Practices

No Data Preparation Information List data sources Treat data preparation code as essential code Save unix commands in a shell script Save unix or vi editing histories Code Handoff Pitfalls and Good Practices

No Tests Code Handoff Pitfalls and Good Practices

Did it run the way it was supposed to? Formal vs Informal Testing Formal Unit, Functional, Integration, Regression JUnit, PyUnit, Rspec, TestUnit, … Informal Scripted parsing of output files Instructions for how to visually verify an output file Code Handoff Pitfalls and Good Practices

No Code Documentation Code Handoff Pitfalls and Good Practices

No Code Documentation Code doesn’t make use of methods Code was exported from interactive shell to scripts Code emerges from a series of operations on data “Cut and Paste” or “Copy and Modify” Lack of awareness of standard Confusion about what standard to adopt Code Handoff Pitfalls and Good Practices

Code Handoff Pitfalls and Good Practices

Code Handoff Pitfalls and Good Practices

No Code Documentation Epytext reST Google Numpydoc Documentation styles abound Epytext reST Google Numpydoc Comments (# // /**..**/) Code Handoff Pitfalls and Good Practices

No Overview Code Handoff Pitfalls and Good Practices

No Context What is this application for? What does it do? What kind of input is needed? What kind of output is produced? What benefit does it bring? Code Handoff Pitfalls and Good Practices

No Collaborators Code Handoff Pitfalls and Good Practices

No Collaborators If at all possible, ask a collaborator to… Fix a bug Add a feature Write some documentation Create or respond to an issue Merge a pull request Use github or other versioning system Code Handoff Pitfalls and Good Practices

“Le mieux est l'ennemi du bien. (The perfect is the enemy of the good - Voltaire Tech support analyst, UC Davis Code Handoff Pitfalls and Good Practices

Good practices Find and identify an the official code of record If you do these things, you’ll be alright. Find and identify an the official code of record Create a repository with versioning Write simple build instructions Provide a sample input file Write tests Retain and archive data creation files Write a brief overview of purpose and context Find and engage with collaborators Code Handoff Pitfalls and Good Practices