software development

Click here to load reader

Post on 13-Nov-2014




1 download

Embed Size (px)




  • 1. Software development First, solve the problem. Then, write the code. (John Johnson)There are only 10 types of people in the world:those who understand binary, and those who don't.

2. 3 big lies

  • 3 biggest lies
    • It works
    • It's compatible
    • You'll have it tomorrow
  • (Jean-Louis Gasse)
  • 3 biggest Software lies:
    • The program's fully tested and bugfree.
    • We're working on the documentation.
    • Of course we can modify it.

3. Laws

  • Eagleson's law
  • Any code of your own that you haven't looked at for six or more months might as well have been written by someone else.
  • Parkinson's Law
  • Work expands so as to fill the time available for its completion.
  • Conway's Law
  • Any piece of software reflects the organizational structure that produced it ... If you have four groups working on a compiler, you'll get a 4-pass compiler.
  • Murphys Law
  • If anything can go wrong, it will.

4. Laws

  • Niklaus Wirth's law
  • Software gets slower faster than hardware gets faster.
  • Flon's Law
  • There is not now, nor has there ever been, nor will there ever be, any programming language in which it is the least bit difficult to write bad code.
  • Hofstadter's Law
  • It always takes longer than you expect, even when you take into account Hofstadter's Law.
  • Thomas' First Law
  • Nothing is more permanent than a temporary solution.

5. Laws

  • Laws of Computer Programming
  • 1. Any given program, when running, is obsolete.
  • 2. Any given program costs more and takes longer.
  • 3. If a program is useful, it will have to be changed.
  • 4. If a program is useless, it will have to be documented.
  • 5. Any program will expand to fill available memory.
  • 6. The value of a program is proportional to the weight of its output.
  • 7. Program complexity grows until it exceeds the capabilities of the programmer who must maintain it.
  • 8. Any non-trivial program contains at least one bug.
  • 9. Undetectable errors are infinite in variety, in contrast to detectable errors, which by definition are limited.
  • 10. Adding manpower to a late software project makes it later.

6. Choose

  • You can have the project: a.) Done On Time b.) Done On Budget c.) Done Properly
  • (From Bill Bryson)

7. Errors

  • ERROR 406: file corrupt: -- reboot universe? (Y/N)
  • RUNTIME ERROR 6D at 417A: 32CF: Incompetent user

8. Bug you said bug ?

  • DEBUGGING : Removing the needles from the haystack.
  • (Unknown)
  • It's not a bug - it's an undocumented feature.
  • (Unknown)
  • If you don't have a good system,
  • make sure you get good users.
  • (Unknown)
  • NBWAD Not a Bug Work As Designed !!
  • If at first you don't succeed, try/catch, try/catch again

9. Bug you said bug ?

  • Beware of bugs in the above code;
  • I have only proved it correct, not tried it.
  • (Donald Knuth)
  • Sometimes it pays to stay in bed in Monday,
  • rather than spending the rest of the week debugging Monday's code.
  • (Dan Salomon)
  • There are two ways to write error-free programs; only the third works.
  • (Alan J. Perlis)
  • A man is smoking a cigarette and blowing smoke rings into the air.
  • His girlfriend becomes irritated with the smoke and says,
  • "Can't you see the warning on the cigarette pack?Smoking is hazardous to your health!"
  • To which the man replies, "I am a programmer.
  • We don't worry about warnings; we only worry about errors."

10. Bug you said bug ?

  • If debugging is the process of removing software bugs,
  • then programming must be the process of putting them in.-
  • (Edsger Dijkstra)
  • If we can't fix it, then it ain't broke .
  • (Debuggers motto, noted by John Bently)
  • Always code as if a single bugwillbring the building down.
  • (Unknown)

11. Some of the replies you'll hear from programmerswhen something goes wrong.

  • "That's weird..."
  • "It's never done that before."
  • "It worked yesterday."
  • "It must be a hardware problem."
  • "What did you type in wrong to get it to crash?"
  • "I haven't touched that module in weeks!"
  • "You must have the wrong version."
  • "It's just some unlucky coincidence."
  • "I can't test everything!"
  • "It works, but it hasn't been tested."
  • "Somebody must have changed my code."
  • "Even though it doesn't work, how does it feel?
  • "You can't use that version on your system."
  • "Why do you want to do it that way?"
  • "It works on my machine."
  • "Try to reboot your machine and try again."

12. Code as .

  • Debugging is twice as hard as writing the code in the first place.
  • Therefore, if you write the code as cleverly as possible,
  • you are, by definition, not smart enough to debug it.
  • (Brian Kernighan)
  • Always code as if the guy who ends up maintaining your code
  • will be a violent psychopath who knows where you live.
  • (Rick Osborne)
  • Any fool can write code that a computer can understand.
  • Good programmers write code that humans can understand.
  • (Martin Fowler)

13. Numbers

  • The first 90% of the code accounts
  • for the first 90% of the development time.
  • The remaining 10% of the code accounts
  • for the other 90% of the development time.
  • (Tom Cargill)
  • Good programming is 99% sweat and 1% coffee.
  • Programming is 10% science, 25% ingenuity
  • and 65% getting the ingenuity to work with the science.

14. Numbers

  • 99% of the problems with a computer, program, or code
  • are located between keyboard and chair.
  • (Unknown)
  • The 50-50-90 rule:
  • Anytime you have a 50-50 chance of getting something right,
  • there's a 90% probability you'll get it wrong.
  • (Unknown)

15. Simplicity !!

  • KISS
  • Keep It Simple Stupid
  • Simplicity is hard to build, easy to use, and hard to charge for.
  • Complexity is easy to build, hard to use, and easy to charge for.
  • (Chris Sacca)

16. Simplicity !!

  • Elegance is not optional
  • (Richard O'Keefe)
  • Style distinguishes excellence from accomplishment.
  • (James Coplien)
  • You know you've achieved perfection in design,
  • not when you have nothing more to add,
  • but when you have nothing more to take away.
  • (Antoine de Saint-Exupery)

17. Simplicity !!

  • Simplicity is the ultimate sophistication.
  • (Leonardo da Vinci)
  • Make everything as simple as possible, but not simpler.
  • (Albert Einstein)
  • For every complex problem there is an answer
  • that is clear, simple,
  • and wrong.
  • (H L Mencken)
  • Simplicity is prerequisite for reliability
  • (Edsger W. Dijkstra)

18. Release

  • Beta.
  • Software undergoes beta testing shortly before it's released.
  • Beta is Latin for "still doesn't work."
  • (Unknown)
  • You never finish a program, you just stop working on it.
  • (Unknown)
  • The software isn't finished until the last user is dead.
  • (Unknown)
  • If at first you don't succeed:
  • call it version 1.0
  • try management

19. Code

  • Software and cathedrals are much the same :
  • first we build them,
  • then we pray
  • (Unknown)
  • Your code is both good and original.
  • Unfortunately the parts that are good are not original,
  • and the parts that are original are not good.
  • (Unknown)

20. Code

  • Code never lies, comments sometimes do
  • (Ron Jeffries)