Skip to content
Mikhail Panko edited this page Jul 14, 2013 · 7 revisions

Prototyping

Writing code to test an idea.

Important:

  • speed of coding: minimal overhead, few lines of code
  • ability to make a definite decision about the idea hypothesis

Not important:

  • code robustness: ability to run under various regimes, inputs, and systems
  • code readability
  • code speed and memory usage
  • ability to get results other than testing the idea
  • ability to easily expand code beyond idea testing

Can benefit from using high-level packages/libraries and searching for available similar projects (literature search in science).

Optimizing

Refactoring code to:

  • minimize execution time
  • minimize memory consumption
  • increase ability to run under various regimes, inputs, and systems
  • display results better

Can benefit from using debugging tools.

Maintaining

Expanding existing code and fixing bugs.

Important:

  • good modular data and code design
  • code readability

Can benefit from from implementing version control system and applying standard software engineering techniques described in this wiki.

Sharing

Writing code that can be easily used by others and/or working on code together with other people.

Important:

  • good API
  • good GUI if applicable
  • code readability if intended to be modified by users

Can benefit from using GitHub and applying standard software engineering techniques.

Standardizing

Writing code which will become a standard in the field. This is extremely hard because it requires:

  • top-notch code quality
  • ability to solve important users problems better than existing alternatives
  • great marketing (or power to enforce using your software)
Clone this wiki locally