Friday, April 11, 2008

Pragmatic Software Development for Outsourcers

So your work has been outsourced and you no longer have a job? The new developers spout Bullshit Bingo like they actually know how what they're talking about and "network" with management?
Well don't worry, a colleague of mine recently found a badly translated copy of their Pragmatic Software Development Tips!!!


  • DRY - Do Repeat Yourself
    Copy as much code as possible, CTRL-C and CTRL-V are your friend (don't use CTRL-X)

  • Never Use Source control
    Why have complex code control systems when comments will suffice?

  • Don't test your software, your users will
    As the users will test the software, testing can be cut from the development cycle to save time

  • Use Blackboards to coordinate workflow
    Then erase them, the only documentation necessary is the code, if you can't work that out you ain't smart enough.

  • Don't care about your craft
    There is more to life than programming.

  • Don't be a catalyst for change
    Ensure the code is as complex as possible and therefore cannot be changed (job security)

  • Program close to the computer not the problem domain
    Call variables x and y, don't use a meaningful name like "customer"

  • Iterate the schedule with the code
    As the code gets worse and worse from one iteration to the next this will require even more iterations (and profit)

  • Finish What you Start.
    Badly, so rework will be required.

  • Assume It, don't prove it
    We don't have time to prove it, not with all the complex code, just assume it works (it will be tested by the users when live anyway)

  • Never design for concurrency
    This is too complex and can be handled by the client once the project is over.

  • Use Exceptions
    To swallow the cause of the problem, without the call stack they will never figure out what you did wrong or even if it went wrong

  • Don't refactor
    The code is brittle and will almost certainly break, remember we don't have time for unit tests.

  • Don't gather requirements, bury them
    Hide business rules deep within the system where no-one will find them (or better in the view layer)

  • Some Things Are Better Done than Described
    Don’t fall into the specification spiral, code what you like, no-one will ever know.

  • Abstractions live longer than details
    Make sure you get the interface wrong it will be really difficult to change later

  • Don't think outside the box
    Think lunch box, it's time for lunch forget the code problems.

  • Don't use manual procedures.
    In fact, don't use procedures at all it will only slow you down

  • Coding ain't done till all the tests run
    Luckily we don't have any tests, that's the users' job.

  • English is just a programming language.
    But if you don't speak it you can leave it out right?

  • Estimate to avoid surprises.
    But they will be surprised by our estimates.

  • You can't write perfect software.
    So we don't try - this is our excuse for the 10^6 bugs in the system

  • Don't fix it, blame somebody else
    This always works, nobody will know you got it wrong.

  • Find bugs once
    And then leave them, somebody else can fix it.

  • Sign your work
    Leave lots of comments such as // Change 10-10-2007, but don't add anything meaningful so they can figure it out, why make it easy?

No comments: