Software development

1,952 views
1,812 views

Published on

Published in: Business, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,952
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
18
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Software development

  1. 1. 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.
  2. 2. 3 big lies <ul><li>3 biggest lies </li></ul><ul><ul><li>It works </li></ul></ul><ul><ul><li>It's compatible </li></ul></ul><ul><ul><li>You'll have it tomorrow </li></ul></ul><ul><li>(Jean-Louis Gassée) </li></ul><ul><li>3 biggest Software lies: </li></ul><ul><ul><li>The program's fully tested and bugfree. </li></ul></ul><ul><ul><li>We're working on the documentation. </li></ul></ul><ul><ul><li>Of course we can modify it. </li></ul></ul>
  3. 3. Laws <ul><li>Eagleson's law </li></ul><ul><li>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. </li></ul><ul><li>Parkinson's Law </li></ul><ul><li>Work expands so as to fill the time available for its completion. </li></ul><ul><li>Conway's Law </li></ul><ul><li>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. </li></ul><ul><li>Murphy’s Law </li></ul><ul><li>If anything can go wrong, it will. </li></ul>
  4. 4. Laws <ul><li>Niklaus Wirth's law </li></ul><ul><li>Software gets slower faster than hardware gets faster. </li></ul><ul><li>Flon's Law </li></ul><ul><li>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. </li></ul><ul><li>Hofstadter's Law </li></ul><ul><li>It always takes longer than you expect, even when you take into account Hofstadter's Law. </li></ul><ul><li>Thomas' First Law </li></ul><ul><li>Nothing is more permanent than a temporary solution. </li></ul>
  5. 5. Laws <ul><li>Laws of Computer Programming </li></ul><ul><li>1. Any given program, when running, is obsolete. </li></ul><ul><li>2. Any given program costs more and takes longer. </li></ul><ul><li>3. If a program is useful, it will have to be changed. </li></ul><ul><li>4. If a program is useless, it will have to be documented. </li></ul><ul><li>5. Any program will expand to fill available memory. </li></ul><ul><li>6. The value of a program is proportional to the weight of its output. </li></ul><ul><li>7. Program complexity grows until it exceeds the capabilities of the programmer who must maintain it. </li></ul><ul><li>8. Any non-trivial program contains at least one bug. </li></ul><ul><li>9. Undetectable errors are infinite in variety, in contrast to detectable errors, which by definition are limited. </li></ul><ul><li>10. Adding manpower to a late software project makes it later. </li></ul>
  6. 6. Choose <ul><li>You can have the project: a.) Done On Time b.) Done On Budget c.) Done Properly </li></ul><ul><li>(From Bill Bryson) </li></ul>
  7. 7. Errors <ul><li>ERROR 406: file corrupt: config.earth -- reboot universe? (Y/N) </li></ul><ul><li>RUNTIME ERROR 6D at 417A: 32CF: Incompetent user </li></ul><ul><li>UNKNOWN ERROR n° 5 </li></ul>
  8. 8. Bug … you said bug ? <ul><li>DEBUGGING : Removing the needles from the haystack. </li></ul><ul><li>(Unknown) </li></ul><ul><li>It's not a bug - it's an undocumented feature. </li></ul><ul><li>(Unknown) </li></ul><ul><li>If you don't have a good system, </li></ul><ul><li>make sure you get good users. </li></ul><ul><li>(Unknown) </li></ul><ul><li>NBWAD – Not a Bug – Work As Designed !! </li></ul><ul><li>If at first you don't succeed, try/catch, try/catch again </li></ul>
  9. 9. Bug … you said bug ? <ul><li>Beware of bugs in the above code; </li></ul><ul><li>I have only proved it correct, not tried it. </li></ul><ul><li>(Donald Knuth) </li></ul><ul><li>Sometimes it pays to stay in bed in Monday, </li></ul><ul><li>rather than spending the rest of the week debugging Monday's code. </li></ul><ul><li>(Dan Salomon) </li></ul><ul><li>There are two ways to write error-free programs; only the third works. </li></ul><ul><li>(Alan J. Perlis) </li></ul><ul><li>A man is smoking a cigarette and blowing smoke rings into the air. </li></ul><ul><li>His girlfriend becomes irritated with the smoke and says, </li></ul><ul><li>&quot;Can't you see the warning on the cigarette pack? Smoking is hazardous to your health!&quot; </li></ul><ul><li>To which the man replies, &quot;I am a programmer. </li></ul><ul><li>We don't worry about warnings; we only worry about errors.&quot; </li></ul>
  10. 10. Bug … you said bug ? <ul><li>If debugging is the process of removing software bugs, </li></ul><ul><li>then programming must be the process of putting them in.- </li></ul><ul><li>(Edsger Dijkstra) </li></ul><ul><li>If we can't fix it, then it ain't broke . </li></ul><ul><li>(Debuggers motto, noted by John Bently) </li></ul><ul><li>Always code as if a single bug will bring the building down. </li></ul><ul><li>(Unknown) </li></ul>
  11. 11. Some of the replies you'll hear from programmers when something goes wrong. <ul><li>&quot;That's weird...&quot; </li></ul><ul><li>&quot;It's never done that before.&quot; </li></ul><ul><li>&quot;It worked yesterday.&quot; </li></ul><ul><li>&quot;It must be a hardware problem.&quot; </li></ul><ul><li>&quot;What did you type in wrong to get it to crash?&quot; </li></ul><ul><li>&quot;I haven't touched that module in weeks!&quot; </li></ul><ul><li>&quot;You must have the wrong version.&quot; </li></ul><ul><li>&quot;It's just some unlucky coincidence.&quot; </li></ul><ul><li>&quot;I can't test everything!&quot; </li></ul><ul><li>&quot;It works, but it hasn't been tested.&quot; </li></ul><ul><li>&quot;Somebody must have changed my code.&quot; </li></ul><ul><li>&quot;Even though it doesn't work, how does it feel? </li></ul><ul><li>&quot;You can't use that version on your system.&quot; </li></ul><ul><li>&quot;Why do you want to do it that way?&quot; </li></ul><ul><li>&quot;It works on my machine.&quot; </li></ul><ul><li>&quot;Try to reboot your machine and try again.&quot; </li></ul><ul><li>… </li></ul>
  12. 12. Code as …. <ul><li>Debugging is twice as hard as writing the code in the first place. </li></ul><ul><li>Therefore, if you write the code as cleverly as possible, </li></ul><ul><li>you are, by definition, not smart enough to debug it. </li></ul><ul><li>(Brian Kernighan) </li></ul><ul><li>Always code as if the guy who ends up maintaining your code </li></ul><ul><li>will be a violent psychopath who knows where you live.   </li></ul><ul><li>(Rick Osborne) </li></ul><ul><li>Any fool can write code that a computer can understand. </li></ul><ul><li>Good programmers write code that humans can understand. </li></ul><ul><li>(Martin Fowler) </li></ul>
  13. 13. Numbers <ul><li>The first 90% of the code accounts </li></ul><ul><li>for the first 90% of the development time. </li></ul><ul><li>The remaining 10% of the code accounts </li></ul><ul><li>for the other 90% of the development time. </li></ul><ul><li>(Tom Cargill) </li></ul><ul><li>Good programming is 99% sweat and 1% coffee. </li></ul><ul><li>Programming is 10% science, 25% ingenuity </li></ul><ul><li>and 65% getting the ingenuity to work with the science. </li></ul>
  14. 14. Numbers <ul><li>99% of the problems with a computer, program, or code </li></ul><ul><li>are located between keyboard and chair. </li></ul><ul><li>(Unknown) </li></ul><ul><li>The 50-50-90 rule: </li></ul><ul><li>Anytime you have a 50-50 chance of getting something right, </li></ul><ul><li>there's a 90% probability you'll get it wrong. </li></ul><ul><li>(Unknown) </li></ul>
  15. 15. Simplicity !! <ul><li>KISS </li></ul><ul><li>Keep It Simple Stupid </li></ul><ul><li>Simplicity is hard to build, easy to use, and hard to charge for. </li></ul><ul><li>Complexity is easy to build, hard to use, and easy to charge for. </li></ul><ul><li>(Chris Sacca) </li></ul>
  16. 16. Simplicity !! <ul><li>Elegance is not optional </li></ul><ul><li>(Richard O'Keefe) </li></ul><ul><li>Style distinguishes excellence from accomplishment. </li></ul><ul><li>(James Coplien) </li></ul><ul><li>You know you've achieved perfection in design, </li></ul><ul><li>not when you have nothing more to add, </li></ul><ul><li>but when you have nothing more to take away. </li></ul><ul><li>(Antoine de Saint-Exupery) </li></ul>
  17. 17. Simplicity !! <ul><li>Simplicity is the ultimate sophistication. </li></ul><ul><li>(Leonardo da Vinci) </li></ul><ul><li>Make everything as simple as possible, but not simpler. </li></ul><ul><li>(Albert Einstein) </li></ul><ul><li>For every complex problem there is an answer </li></ul><ul><li>that is clear, simple, </li></ul><ul><li>and wrong. </li></ul><ul><li>(H L Mencken) </li></ul><ul><li>Simplicity is prerequisite for reliability </li></ul><ul><li>(Edsger W. Dijkstra) </li></ul>
  18. 18. Release <ul><li>Beta. </li></ul><ul><li>Software undergoes beta testing shortly before it's released. </li></ul><ul><li>Beta is Latin for &quot;still doesn't work.&quot; </li></ul><ul><li>(Unknown) </li></ul><ul><li>You never finish a program, you just stop working on it. </li></ul><ul><li>(Unknown) </li></ul><ul><li>The software isn't finished until the last user is dead. </li></ul><ul><li>(Unknown) </li></ul><ul><li>If at first you don't succeed : </li></ul><ul><li>call it version 1.0 </li></ul><ul><li>try management </li></ul>
  19. 19. Code <ul><li>Software and cathedrals are much the same : </li></ul><ul><li>first we build them, </li></ul><ul><li>then we pray </li></ul><ul><li>(Unknown) </li></ul><ul><li>Your code is both good and original. </li></ul><ul><li>Unfortunately the parts that are good are not original, </li></ul><ul><li>and the parts that are original are not good. </li></ul><ul><li>(Unknown) </li></ul>
  20. 20. Code <ul><li>Code never lies, comments sometimes do </li></ul><ul><li>(Ron Jeffries) </li></ul><ul><li>Talk is cheap, show me the code ! </li></ul><ul><li>(Linus Torvalds) </li></ul><ul><li>Premature optimization is the root of all evil </li></ul><ul><li>(Donald. Knuth) </li></ul><ul><li>Get it right. Then get it fast. </li></ul><ul><li>(Steve McConnell) </li></ul>
  21. 21. Philosophy <ul><li>If the only tool you have is a hammer, </li></ul><ul><li>you tend to see every problem as a nail. </li></ul><ul><li>(Abraham Maslow) </li></ul><ul><li>  </li></ul><ul><li>No, no, you're not thinking; </li></ul><ul><li>you're just being logical. </li></ul><ul><li>(Niels Bohr) </li></ul><ul><li>  </li></ul><ul><li>Technology is dominated by two types of people: </li></ul><ul><li>those who understand what they do not manage ; and </li></ul><ul><li>those who manage what they do not understand </li></ul>
  22. 22. Fun <ul><li>Two strings walk into a bar. </li></ul><ul><li>One says: &quot;I'd like a beer pleas$$%~¬..3783u </li></ul><ul><li>The other string says: &quot;Sorry about my friend, he's not null-terminated.“ </li></ul><ul><li>There's no place like 127.0.0.1 </li></ul><ul><li>Should array indices start at 0 or 1? </li></ul><ul><li>My compromise of 0.5 was rejected without, I thought, proper consideration. </li></ul><ul><li>(Stan Kelly-Bootle) </li></ul><ul><li>Powered by 110000001111111111101110 </li></ul>
  23. 23. Software & Sex <ul><li>Software is like sex, </li></ul><ul><li>it's better when it's free. </li></ul><ul><li>(Linus Torvalds). </li></ul><ul><li>Programming is like sex: </li></ul><ul><li>one mistake and you're providing support for a lifetime. </li></ul><ul><li>(Michael Sinz) </li></ul><ul><li>Programming languages are like girlfriends: </li></ul><ul><li>The new one is better because you are better. </li></ul><ul><li>(Derek Sivers) </li></ul><ul><li>Documentation is like sex: </li></ul><ul><li>when it is good, it is very, very good; </li></ul><ul><li>and when it is bad, it is better than nothing. </li></ul><ul><li>(Unknown) </li></ul>
  24. 24. IF … <ul><li>Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, </li></ul><ul><li>and the Universe trying to produce bigger and better idiots. </li></ul><ul><li>So far, the Universe is winning. </li></ul><ul><li>(Rich Cook) </li></ul><ul><li>If the auto industry had done what the computer industry had done in the last </li></ul><ul><li>thirty years, a Rolls Royce would cost $2.50 and get two million miles per gallon. </li></ul><ul><li>(Herb Grosch) </li></ul><ul><li>But it would be the size of a Dinky toy and crash every three days. </li></ul><ul><li>Beware of false analogy. </li></ul><ul><li>(Joe Celko ) </li></ul><ul><li>If builders built buildings the way programmers wrote programs, </li></ul><ul><li>the first woodpecker to come along would destroy civilization </li></ul><ul><li>(Gerald Weinberg) </li></ul><ul><li>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. </li></ul><ul><li>(both from Linus Torvalds) </li></ul><ul><li>Any program is only as good as it is useful Linus Torvalds </li></ul>
  25. 25. At first ! <ul><li>The most important single aspect of software development </li></ul><ul><li>is to be clear about what you are trying to build. </li></ul><ul><li>(Bjarne Stroustrup) </li></ul><ul><li>Before software can be reusable it first has to be usable. </li></ul><ul><li>(M.A. Jackson) </li></ul><ul><li>First, solve the problem. Then, write the code. </li></ul><ul><li>(John Johnson) </li></ul>
  26. 26. At first ! <ul><li>The first consideration for anybody should be whether you'd like to do it </li></ul><ul><li>even if you got nothing at all back. </li></ul><ul><li>If you answer yes, then it is probably a project you'd enjoy doing. </li></ul><ul><li>(Linus Torvalds) </li></ul><ul><li>Any program is only as good as it is useful. </li></ul><ul><li>(Linus Torvalds) </li></ul><ul><li>Walking on water and developing software from a specification </li></ul><ul><li>are easy if both are frozen. </li></ul><ul><li>(Edward V. Berard) </li></ul>
  27. 27. A software professional in C <ul><li>struct SoftwareProfessional { </li></ul><ul><li>double salary; </li></ul><ul><li>long lunches; </li></ul><ul><li>float jobs; </li></ul><ul><li>char unstable; </li></ul><ul><li>void work; </li></ul><ul><li>}; </li></ul>
  28. 28. Theory vs Practice <ul><li>Theory is when you know something, but it doesn't work. </li></ul><ul><li>Practice is when something works, but you don't know why. </li></ul><ul><li>Programmers combine theory and practice: Nothing works and they don't know why. </li></ul><ul><li>(Unknown) </li></ul><ul><li>The difference between theory and practice </li></ul><ul><li>is that in theory there is no difference, </li></ul><ul><li>but in practice there is. </li></ul><ul><li>(Craig A. Finseth) </li></ul>
  29. 29. And GOD ? <ul><li>The first time God created the world, it became a total mess. </li></ul><ul><li>So God scraped the whole thing and started again, </li></ul><ul><li>and the big thing we learn is that after six days, God shipped. </li></ul><ul><li>(Dan Bricklin) </li></ul><ul><li>God could create the world in six </li></ul><ul><li>days because he didn't have to make it compatible with the previous version </li></ul><ul><li>On the 7th day ... God began debugging. </li></ul><ul><li>I would love to change the world, but they won't give me the source code </li></ul>
  30. 30. The end <ul><li>And the users exclaimed with a laugh and a taunt : </li></ul><ul><li>&quot;It's just what we asked for </li></ul><ul><li>but not what we want.&quot; </li></ul><ul><li>(Unknow) </li></ul><ul><li>Complexity has nothing to do with intelligence, </li></ul><ul><li>simplicity does. </li></ul><ul><li>(Larry Bossidy) </li></ul>

×