©2019 by Doran Bennett

Tools

We use GitHub for shared version control of our group codes. You 

should setup up an account soon and make sure you have been added as a collaborator. 

We often use Fork to manage our local git repositories - especially if you haven't used git before this can ease the transition into shared version control.

We write lots of python code and we use PyCharm to do it. Remember that professional license is free for academics. 

We manage our python environments with anaconda. No python environment is clean for long, but we do our best to make ours maintainable. 

Resources

If you have not done any coding before then it may be a bit intimidating to get started. We recommend the MOLSSI tutorial as a first introduction to python if you have not seen it before. They also have a number of great coding resources on their site, so make sure to look around a bit from time to time. You might also consider going through the software carpentry course on python and plotting

If you have completed the MOLSSI course but still want more formal education in python before jumping into reading and writing python code on your own, then there are a lot of python courses to choose from. One option is the Python3 specialization from Coursera. Make sure not spend all your time on classes though - read some group code that your colleagues have written and try to contribute!

Python

The Chodera lab has written a nice overview of many aspects a developer needs to think about when writing scientific code. They discuss topics like continuous integration, dealing with python bottle necks, software design and reuse. Many of their discussions are short - so you will need to look else where to learn the details but this provides a great summary to think about. 

Have a suggestion for resources? Let's add it to the list!

This guide by Nathan Shammah outlines a collection of useful tools and a rough framework for open source python development. The discussions are not very detailed - it is intended to give you a starting point for learning more about the tools and approaches to writing maintainable open-source code.