Fog Creek Software
g
Discussion Board




So what about the bugs?

I have a problem. Whenever I plan to write some software, I usually come up with a good idea and I can elaborate on my idea to come up with a good design (including how the UI will look like and what features will be available).

But the problem starts when I actually try to sit down and code. I just start thinking about all the possible bugs and security holes that my software will have. I just start to conclude that it would be better if I try to write some other software instead of writing this one and risking the data and machines of my "users". Probably I try to avoid writing buggy, unreliable and slow software.

Unintential bugs are natural. But what about the bugs or "features" that you introduce on your own to simplify the design and/or reduce the development time? What if I do not try to test for each possible case? What if I write software that is less stable and reliable but affordable? Does all software has this problem or am I being just too much perfectionist? What would happen if someday, a test case (or bug) that was known but still wasn't fixed, affects any of my user(s)? I just want to start writing and complete my software, I can't do it if I continue on this pattern.

Pigeon
Thursday, May 20, 2004

Simple. If you lack confidence in your own abilities, get out of the business.

old_timer
Thursday, May 20, 2004

It's not a lack of confidence. I'm probably a better programmer than those around me. It's actually that I can spot a hell lot of things that can go wrong in my software. If I have to write a software that is to purchased by someone, I don't find it morally correct to ship a product that has some real known bugs and performance problems. But, on the other hand I would never be able to complete it if I try to correct all known bugs and other problems. I just wanted to know what you people think about it. Am I professionally being incorrect? Should I just put up something, even though it's incomplete in my eyes and start selling it?

English is not my native language. So, if I'm unable to make any proper sense out of what I tried to say, then I am sorry for that.

Pigeon
Thursday, May 20, 2004

"If I have to write a software that is to purchased by someone, I don't find it morally correct to ship a product that has some real known bugs and performance problems."

Get out of this business!

Mr Fancypants
Thursday, May 20, 2004

Write the software in as "modular" a fashion as possible, with clear interfaces between the different modules (classes, functions, etc.), where each module is as self-contained as possible (strong cohesion and loose coupling, see http://www.construx.com/survivalguide/doc/chk04.htm ). This basically breaks down the problem in easy-manage chunks, and makes it easier to spot and fix any potential issues.

Derek
Thursday, May 20, 2004

Haha, run, run as fast as you can, my friend!

!~~
Thursday, May 20, 2004

You mean software business or the business of being a "moral person" who hesitates to ship software with known bugs and problems?

Pigeon
Thursday, May 20, 2004

Your software will never be perfect, and can never be perfect. For instance, even if there are no bugs, different users will want different tradeoffs of features vs. speed vs. nice interface. Think about it - no piece of literature is perfect, not even a Shakespeare play, so why would you expect your program to be different?

A better way to think about it might be: "is this software useful to its users, worth the cost of buying it, and a product I can be proud of?" If that's yes, then start selling it.

Exception guy
Thursday, May 20, 2004

Is that a common practice?

Pigeon
Thursday, May 20, 2004

Look at it the way an architect builds bridges or buildings. They cannot provide a 100% guarrantee that there will be no defects, but they must be able to assure the client and the general public that they used the best engineering practices and data and safety precautions currently available and that they designed and built the structure with the proper materials, quality control and skill.

Except in the case of software it's the opposite.

old_timer
Thursday, May 20, 2004

Interview with Theo de Raadt
http://slashdot.org/interviews/00/12/11/1455210.shtml

Tayssir John Gabbour
Thursday, May 20, 2004

Why are you so afraid of releasing buggy software?  Are you afraid of the impact it might have on your customers?  Are you afraid of being judged as a lousy developer?

Regardless, you're being a perfectionist.  No software is perfect.  The only question to answer is whether it is "good enough" -- i.e. whether it provides value to the user.

Should be working
Thursday, May 20, 2004

Just go ahead, build it, and ship it.

Then, when it hits "Crash 'n' Burn", complain that your users never patch on time.

It's guaranteed to make you millions :)

OK, seriously. I happen to believe you're right, but not on this earth. Somewhere out there, on some parallel universe, there must be software that actually works as advertised, because it was not hyped to death before release, which in turn caused it to be rushed to market as quickly as possible.

Of course, this is actually necessary because consumers can't think for themselves, so they have to read what the "experts" have to say, in order to parrot it to their co-workers over lunch, and look knowledgeable. But, like I said, on that parallel universe, none of this happens.

So, get to work, and don't worry too much about this whole mess. Just do what everybody else does, and get a good lawyer to spit out a legalese-ridden EULA to CYA. You prolly think I'm still joking - I'm not.

Paulo Caetano
Friday, May 21, 2004

"Outlook is bleak, but they ship it anyway...."

It's a model that works, look at Gates.

Yo
Friday, May 21, 2004

*  Recent Topics

*  Fog Creek Home