There is no doubt. All scientists and engineers need to have basic
programming knowledge to solve their daily problems. Unfortunately,
there is still a large number of people of this group having very little or
no usable programming skills.
Although these people often understand that programming skills
would help them considerably but they tend to think
programming is extremly difficult and can only be done properly
after an extended computer science education.
These are some experiences gained in teaching programming to scientists
and engineers:
- Make clear what programming can be used for and that it can be
really useful for many types of problems.
- Reduce fear. Often people are afraid that they may seam stupid in
front of experienced programmers.
- Simple is better. It seems
really simple examples that solve a relevant problem are best for the beginning.
- Show relevance. Solve a relevant problem. Parsing data files in different
formats often useful.
- Reduce the options to a minimum during the first introduction.
Even though Python has the "one preferred way to do things", there are still
plenty of not so often used features that can be very useful but make
the language appear big and complicated. "Less is more" is often the best
approach here.
- Call it something different from programming like "templating" or "controlling".
Even such a simple technique as using a different name for what to
do may help in some cases to make the topic more approachable.
- Integrate into the existing environment. It is important that Python
can be used in combination with whatever tools used so far. Spreadsheets
are a good example here.
- Small steps. Really small units are good for retention.
- Clarify that using libraries is often an order of magnitude simpler than writing it.
These topics can serve as a entry points for the discussion.