- Acquiring the data and getting in a database.
- Extracting the data from the database into .csv and .mat files and into the form that can be sent directly into an algorithm.
- Designing new models, coding up the inference methods, and testing the algorithms on synthetic data.
- Creating a test bed to divide the data into training and test, evaluate different methods, and report results.
- Determining what feature matrices and models to use and putting everything together.
- Implementing libraries that can be used in actual applications
- Testing the real world libraries
From what I've seen not enough emphasis is placed on the division of the tasks academically or industrially. I think it is most effiecient to divide these tasks among different people who can be specialized. It is somewhat wasteful to take a person who is an expert in designing inference algorithms and have them spend most of their time setting up a database.