Date post: | 30-Dec-2015 |
Category: |
Documents |
Upload: | harry-douglas |
View: | 214 times |
Download: | 0 times |
Copyright © Software Carpentry 2012
This work is licensed under the Creative Commons Attribution License
See http://software-carpentry.org/license.html for more information.
Putting it all together
Putting it all together
Version control
Preserve the evolution of your code
Bind data to the code that produced it
Work collaboratively
Python
Testing
Databases
Putting it all together
Version control
Python
Develop readable and understandable code
Testing
Databases
Putting it all together
Version control
Python
Testing
Develop code that can be shown to be correct
Change code without introducing bugs
Databases
Putting it all together
Pair programming
Test-driven development
Version control
Continuous integration
Putting it all together
Pair programming
Test-driven development
Version control
Iteration and release
Continuous integration
Putting it all together
Pair programming
Test-driven development
Version control
Iteration and release
Continuous integration
Putting it all together
Pair programming
and/orcode
reviews
Test-driven development
Version control
Iteration and release
Continuous integration
Putting it all together
Review code before commit
Prevent bugs entering the repository
Ensure that reviews are done
Distributed version control
Merge developer branch into trunk after review
Patch files
List of differences between two sets of files
Putting it all together
It’s all just data
Shopping list
DNA sequence
Galactic coordinates
Function
Program
0s and 1s
Putting it all together
Data doesn’t mean anything on its own,
it has to be interpreted
01100100011000010111100001100001
data
1,684,108,385
1.6635613602263159e+22
Putting it all together
Programming is about creating and
composing abstractionsMeaningful names
Comprehensible units
Separate interface from implementation
Clarity over cleverness
Putting it all together
Models are for computers,
views are for us
Structured data is better than unstructured data
Putting it all together
Paranoia makes us productive
Improving quality improves productivity
Think before you code
Validate
Review
Automate
Putting it all together
Better algorithms are better than
better hardware
Algorithmic complexity
Insertion sort: O(n2) … O(n2)
Quick sort: O(n log n) … O(n2)
Merge sort: O(n log n) … O(n log n)
Putting it all together
Better algorithms are better than
better hardware
Algorithmic complexity
Insertion sort: O(n2) … O(n2) O(1)
Quick sort: O(n log n) … O(n2) O(log n)
Merge sort: O(n log n) … O(n log n) O(n)
Putting it all together
Better algorithms are better than
better hardware
Algorithmic complexity
Insertion sort: O(n2) … O(n2) O(1)
Quick sort: O(n log n) … O(n2) O(log n)
Merge sort: O(n log n) … O(n log n) O(n)
Algorithms and data structures
Putting it all together
The tool shapes the hand
Using a tool changes how you do the work
the tool helps you to do
Writing software changes your understanding
of what computers/software can do
Putting it all together
“All work and no play…”
Greatest productivity occurs in the first four
to six hours
Continuous work reduces cognitive function 25%
for every 24 hours!
“Why Crunch Modes Doesn't Work: Six Lessons”, Evan Robinson
http://www.igda.org/why-crunch-modes-doesnt-work-six-lessons
Putting it all together
Why Software Carpentry is as it is
http://software-carpentry.org/4_0/softeng/ebse
Putting it all together
Iterative development does not just
apply to software!
so
what do you think of this course?
Putting it all together
Pair programming
Test-driven development
Version control
Iteration and release
Continuous integration