Software development


Published on

Published in: Business, Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Software development

  1. 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. 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: -- 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 </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>