software development

30
Software development http://beariscool.blogspot.com 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.

Upload: olivier-marechal

Post on 13-Nov-2014

2.414 views

Category:

Business


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Software development

Software development

 

http://beariscool.blogspot.com/

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.

Page 2: Software development

3 big lies

• 3 biggest lies 1. It works

2. It's compatible

3. You'll have it tomorrow (Jean-Louis Gassée)

• 3 biggest Software lies: 1. The program's fully tested and bugfree.

2. We're working on the documentation.

3. Of course we can modify it.

2

Page 3: Software development

Laws

Eagleson's lawAny 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 LawAny 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.

Murphy’s LawIf anything can go wrong, it will.

3

Page 4: Software development

Laws

Niklaus Wirth's lawSoftware gets slower faster than hardware gets faster.

Flon's LawThere 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 LawIt always takes longer than you expect, even when you take

into account Hofstadter's Law.

Thomas' First LawNothing is more permanent than a temporary solution.

4

Page 5: Software development

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.

5

Page 6: Software development

Choose

You can have the project:a.) Done On Timeb.) Done On Budgetc.) Done Properly

(From Bill Bryson)

6

Page 7: Software development

Errors

ERROR 406: file corrupt: config.earth -- reboot universe? (Y/N)

RUNTIME ERROR 6D at 417A: 32CF: Incompetent user

UNKNOWN ERROR n° 5

7

Page 8: Software development

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

8

Page 9: Software development

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."

9

Page 10: Software development

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 bug will bring the building down.

(Unknown)

10

Page 11: Software development

Some of the replies you'll hear from programmers when 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." • …

11

Page 12: Software development

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)

12

Page 13: Software development

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.

13

Page 14: Software development

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)

14

Page 15: Software development

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)

15

Page 16: Software development

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)

16

Page 17: Software development

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 answerthat is clear, simple, and wrong. (H L Mencken)

Simplicity is prerequisite for reliability (Edsger W. Dijkstra)

17

Page 18: Software development

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

18

Page 19: Software development

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)

19

Page 20: Software development

Code

Code never lies, comments sometimes do(Ron Jeffries)

Talk is cheap, show me the code !(Linus Torvalds)

Premature optimization is the root of all evil(Donald. Knuth)

Get it right. Then get it fast.(Steve McConnell)

20

Page 21: Software development

Philosophy

If the only tool you have is a hammer, you tend to see every problem as a nail.(Abraham Maslow)

 No, no, you're not thinking; you're just being logical.(Niels Bohr) 

Technology is dominated by two types of people: - those who understand what they do not manage;

and - those who manage what they do not understand

21

Page 22: Software development

Fun

Two strings walk into a bar. One says: "I'd like a beer pleas$$%~¬..3783uThe other string says: "Sorry about my friend, he's not null-

terminated.“

There's no place like 127.0.0.1

Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper

consideration. (Stan Kelly-Bootle)

Powered by 110000001111111111101110

22

Page 23: Software development

Software & Sex

Software is like sex,it's better when it's free.(Linus Torvalds).

Programming is like sex: one mistake and you're providing support for a lifetime.(Michael Sinz)

Programming languages are like girlfriends: The new one is better because you are better. (Derek Sivers)

Documentation is like sex: when it is good, it is very, very good; and when it is bad, it is better than nothing.(Unknown)

23

Page 24: Software development

IF …

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs,

and the Universe trying to produce bigger and better idiots.

So far, the Universe is winning.

(Rich Cook)

If the auto industry had done what the computer industry had done in the last

thirty years, a Rolls Royce would cost $2.50 and get two million miles per gallon.

(Herb Grosch)

But it would be the size of a Dinky toy and crash every three days.

Beware of false analogy.

(Joe Celko )

If builders built buildings the way programmers wrote programs,

the first woodpecker to come along would destroy civilization

(Gerald Weinberg)

• The first consideration for anybody should be whether you'd like to do it even if you got nothing at all back. If you answer yes, then it is probably a project you'd enjoy doing.

• (both from Linus Torvalds)

• Any program is only as good as it is useful Linus Torvalds

24

Page 25: Software development

At first !

The most important single aspect of software development

is to be clear about what you are trying to build. (Bjarne Stroustrup)

Before software can be reusable it first has to be usable.

(M.A. Jackson)

First, solve the problem. Then, write the code. (John Johnson)

25

Page 26: Software development

At first !

The first consideration for anybody should be whether you'd like to do it

even if you got nothing at all back. If you answer yes, then it is probably a project you'd enjoy doing. (Linus Torvalds)

Any program is only as good as it is useful.(Linus Torvalds)

Walking on water and developing software from a specification are easy if both are frozen. (Edward V. Berard)

26

Page 27: Software development

A software professional in C

struct SoftwareProfessional { double salary; long lunches; float jobs; char unstable; void work;

};

27

Page 28: Software development

Theory vs Practice

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know

why.Programmers combine theory and practice: Nothing

works and they don't know why.(Unknown)

The difference between theory and practice is that in theory there is no difference, but in practice there is. (Craig A. Finseth)

28

Page 29: Software development

And GOD ?

The first time God created the world, it became a total mess. So God scraped the whole thing and started again, and the big thing we learn is that after six days, God

shipped.(Dan Bricklin)

God could create the world in six days because he didn't have to make it compatible with the

previous version

On the 7th day ... God began debugging.

I would love to change the world, but they won't give me the source code

29

Page 30: Software development

The end

And the users exclaimed with a laugh and a taunt :

"It's just what we asked for but not what we want."

(Unknow)

Complexity has nothing to do with intelligence,

simplicity does. (Larry Bossidy)

30