Open Water Foundation / Learn Software Development


This documentation provides an overview of important software development concepts, with best practices and working examples. The documentation has been created by the Open Water Foundation to facilitate our work and is being made available in the hopes that it also helps others.

If you are reading this documentation, you are somewhere on the spectrum of being new to software development ... to being able to create simple software programs ... to being very accomplished with one programming language ... to being very accomplished with multiple programming languages. This documentation focuses on new developers, although accomplished developers may find the documentation useful themselves, or if they are training a new developer.

At OWF, we often face the dilemma of whether to teach software skills to water professionals, or teach water topics to software developers so that they have context for their software development work. This problem can be even more difficult at an organization where full-time software developers do not focus on the water sector, and water sector jobs where software is a minor part of the job. This documentation may be useful to multi-skilled staff, as a reference.

There is no perfect approach and other sectors (health care, energy, transportation, etc.) face similar issues. The approach in this documentation is to assume that the software developer has enough interest in developing skills that they will learn on their own and don't need to be spoon fed everything. However, the internet is full of information and technologies, and sometimes it can be very difficult to get started and be efficient in learning. Therefore, this documentation is an attempt at collecting good information.

This documentation is a work in progress and will contain notes for inserts for awhile until time can be devoted to filling in blanks.

About the Open Water Foundation

The Open Water Foundation is a 501(c)3 nonprofit social enterprise that focuses on developing and supporting open source software for water resources, so that organizations can make better decisions about water. OWF has created this documentation to educate its staff and other developers that are doing software development.

See also other OWF learning resources.

How to Use This Documentation

The documentation is organized in the order of basic concepts and steps needed to develop software. As time allows, additional sections will be added for more advanced topics such as use of useful Python API libraries for water resources.

This documentation is not intended to be a full reference for the Fortran language but focuses on important topics that will help a Fortran programmer understand important technical concepts and be successful with software tools.


The OWF Learn Software Development website content and examples are licenses under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Source Repository on GitHub

The source files for this documentation are maintained in a GitHub repository: owf-learn-software-dev.

Release Notes

This documentation was last updated 2017-10-21. See the Release Notes in the GitHub Project.