I have received several requests asking me what it is like to write software.
Step #1: Unless you are writing a really small program of less that 50 lines, writing software is actually the creation of hundreds, thousands, or tens of thousands of bugs. The intent of this is to produce code that will accomplish something useful. Instead the code you write has the sole purpose of generating error messages, giving you inaccurate answers, or the program will just die with no explanation.
Step #2: Now that you have an unknown number, but very large, collection of bugs you need to start squishing them, thereby creating more bugs. Because in software any change in one part of the program can, and often will, affect other parts of the program that are totally unrelated in function. If you are fortunate the number of bugs you squish will be larger than the number you create. I find a good ratio is 1.2 bugs created for every 2 squished. With this ratio, and given enough time, it would seem that eventually all of the bugs will be killed off. Unfortunately given an age of 13 billion years for the universe there has not yet been enough time to fully debug any known, reasonably large, software.
Step #3: Once you have killed off the majority of bugs, and the program will somewhat function correctly, and will serve a useful purpose (mostly), it is time to think of adding new features. This new code will of course consist of a series of bugs. In addition the new code will conflict with the current code causing the creation of new bugs in the old code. Now you will have to repeat step 2 on not only the new code but the old code as well, remembering that the old code was never fully debugged before you added the new features. A common ratio for new features is that for every bug in the new code .3 bugs will be created in the old code.
Step #4: Now once again you have the program mostly functional and it is time for users to begin processing data, data that you never intended the program to handle. For example the program needs to track a number of persons, and you never thought that the number of people to be tracked would have a negative value. Or the classroom size would be over 10,000 students per class. Or a loaf of bread in Zimbabwee would cost over 100,000,000.00 ZD, Or that the name field would have to be over 75 characters in length and allow numbers. Or that a company selling screws would find some way to sell fractions of a screw (55.214 screws.) Or that 5,000 cells with no data in them need to be sorted. Of course correcting bugs makes bugs, go back to step #2.
Step #5: There have been no reported bugs in the program for a while and you think that you are home free. This is when the “combo” bugs begin to show up. In step #4 you had single weird data sets to deal with, and you did. Now problems are reported that only occur (for example) if the number of units is an odd number AND the zip code begins with a digit larger than 7 AND no phone number has been entered AND the color choice is paisley AND it is the 31st day of the month AND the data is being saved to a USB data stick. But you do not know all that because the bug report consists only of the statement, “I pressed [5] and the program died with the error message “Out of string space error in line 255 of module POS4” which is actually 96 lines before the actual point where the program died because none of the lines between 255 and the problem line are numbered. And nothing you try to reproduce the error will do so because there are 425 color choices and you would never, ever pick “Paisley” for anything. Good luck finding this bug during your lifetime. But you do, which creates more bugs so back to step #2.
Step #6: No bugs have been reported for years so Microsoft tweeks the next version of Windows so that your software will no longer run at all. Find a workaround that only requires that you make changes to 2% of your code creating more bugs, revisit step #2.
Step #7 Serial printers.
BTW, somewhere in the process it would be a swell idea to learn at least one programming language in which to write your bugs, but that is the easy part.
Dale
So you want to write software?
Moderators:daleadmin, Dale Harris, Alan, Andrew
- brucef2112
- Forum Regular
- Posts:336
- Joined:Mon Mar 06, 2006 11:19 pm
- Location:Broward County, Floriduhh
- Contact:
Re: So you want to write software?
Let's not forget about the oportunity for CREATIVITY that comes after unwarranted optimism fails to kill the bug. It first appears as any other ordinary bug but after a few hundred attempts to kill it (step #2), you find you can't! You feel beaten down without a bit of self esteem. This is the point (known only to you) when it becoming a special bug. At which point you pull yourself up by your Creative Boot Straps, add a few more lines of code around it and begin verbose creative ramblings of how this is not a bug but is really a Feature!! Once you have convinced the users its a feature this also starts to build your unwarranted optimism again so you can continue on...step 2.
Ohh, and for those that ever get the chance to work on a software project as part of a team, there is always praise and glory for the non-participants!
Ohh, and for those that ever get the chance to work on a software project as part of a team, there is always praise and glory for the non-participants!
Later,
Bruce
They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
Benjamin Franklin - Historical Review of Pennsylvania, 1759
Bruce
They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
Benjamin Franklin - Historical Review of Pennsylvania, 1759
Re: So you want to write software?
haha,yeah, im working on that, but i dont understand dales code, and it always gives me an error
DSC "Dhpos Self Checkout" Is currently being worked on again, the new site is at
http://dhpos.midislandsnoblazers.ca
http://dhpos.midislandsnoblazers.ca
Re: So you want to write software?
Dale,
How do you type the curly quotation marks![Question :?:](./images/smilies/icon_question.gif)
How do you type the curly quotation marks
![Question :?:](./images/smilies/icon_question.gif)
Re: So you want to write software?
In his program they are these ' ' things, if your talking aabout something else then i dont know ![Razz :P](./images/smilies/icon_razz.gif)
![Razz :P](./images/smilies/icon_razz.gif)
DSC "Dhpos Self Checkout" Is currently being worked on again, the new site is at
http://dhpos.midislandsnoblazers.ca
http://dhpos.midislandsnoblazers.ca
- brucef2112
- Forum Regular
- Posts:336
- Joined:Mon Mar 06, 2006 11:19 pm
- Location:Broward County, Floriduhh
- Contact:
Re: So you want to write software?
Qualities of great programmers; being bright, but fundamentally lazy (always on the lookout for ways to shortcut the process).
PROGRAMMING: it's one of few jobs where its practitioners habitually make so many mistakes without (usually) being accused of incompetence.
Bruce
Will code for food...
PROGRAMMING: it's one of few jobs where its practitioners habitually make so many mistakes without (usually) being accused of incompetence.
Bruce
Will code for food...
Later,
Bruce
They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
Benjamin Franklin - Historical Review of Pennsylvania, 1759
Bruce
They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
Benjamin Franklin - Historical Review of Pennsylvania, 1759
Who is online
Users browsing this forum: No registered users and 256 guests