Programming-related Links

Categories: Programming, Links

This page provides links to articles, books, and videos, which may be of interest to programmers of all levels; they are certainly things I thought were useful.

Getting Started with Programming

Development Processes

Useful links related to Software Development Methodology and related topics

Advanced Programming Topics (see also Java-specific resources)

Software Testing

  • [video] Ian Cooper: TDD, Where Did It All Go Wrong – Argues that tests are intended to verify system requirements/behaviours, not methods - so do that, ie only write tests which express requirements on the overall system. Refactoring then doesn’t break tests - because refactoring never changes external behaviour, even when it changes internal implementations. This implies not testing classes in isolation; use “deep” tests instead of shallow ones. This in turn suggests that dependency isolation and injection is pointless except where code meets “the external world”.
  • Continous Delivery: Don’t Chase Test Coverage - excellent advice on writing tests
  • CodingHorror: doing terrible things to your code – a great discussion of code-testing and producing production-ready code.

Programming Reference Documents

Database-related Topics

Security and Cryptography

Interesting Blogs

Distributed Systems

Amusing (but also sadly true)

  • [video] The Expert - a short example of the “business analysis” phase of a project
  • The half-arsed Agile Manifesto - when the Agile Manifesto meets reality
  • OPS Lessons - the hard truth about how complex IT systems actually work, eg:
    • Some of your most critical services are kept alive by a handful of people whose job description does not mention those services at all
    • If you break it, you own it - for now; if you fix it, you own it - forever.
  • Commit Strip: A Comprehensive and Precise Spec - when programmers are no longer needed..

Other

Quotes

  • “A complex system that works is invariably found to have evolved from a simple system that worked.” – John Gall, Systemantics (as seen on slashdot)
  • “My point today is that, if we wish to count lines of code, we should not regard them as ‘lines produced’ but as ‘lines spent’. – Edsger Dijkstra
  • “Doubt is not a pleasant condition, but certainty is an absurd one.” – Voltaire