Forty Things Wiki My Blog My Book Reviews Pictures

40 Things Every Programmer Should Know...But Doesn't!!!

A Brief Overview of What You Don't Know

Tanton H. Gibbs

  1. Classical Algorithms
    1. On Performance
    2. Big "O"
    3. Sorting
    4. Searching
    5. Hashing
  2. Graph Algorithms
    1. Depth First Search
    2. Breadth First Search
    3. Transitive Closure
    4. Matching
    5. Shortest Path
  3. Code Maintenance
    1. Refactoring
    2. Automated Builds, Unit Tests, and Acceptance Tests
    3. Coding Standards and Idioms
    4. When (and how) to Rewrite Code
    5. When (and how) NOT to Rewrite Code
  4. Design Patterns and Principles
    1. Design Patterns and Pattern Languages
    2. DRY and YAGNI
    3. DIP and DI
    4. Open/Closed Principle and LSP
    5. Code Smells
  5. Design by Contract
    1. Invariants
    2. Pre-Conditions
    3. Post-Conditions
    4. Hierarchy Constraints
    5. Language Support
  6. Programming Languages
    1. O'Caml
    2. Haskell
    3. Eiffel
    4. D
    5. Ruby
  7. Domain Specific Languages
    1. Why do you need them?
    2. Using an existing language pt 1
    3. Using an existing language pt 2
    4. Rolling your own pt 1
    5. Rolling your own pt 2
  8. Language Interoperability
    1. FFI and LCD
    2. JNI
    3. Boost.Python
    4. SWIG
    5. The Heavyweights