Random Ramblings on LabVIEW Design

Community Browser
Showing results for 
Search instead for 
Did you mean: 

Re: A Pessimistic Approach to Software Design

Active Participant

I think pessimism is viewed differently depending on where in your world you live. In certain companies it's actually viewed as a terrible, career reducing attitude. In this article I'm going to describe how being pessimistic can be vital in design and how designing with a pessimistic attitude can make your life very much easier going forward. 


Example #1 You'll get a full set of requirements

You won't, ever.

If you get requirements that are 90% complete at the start of the project I'll guarantee 20% will be wrong. As I've talked about before, writing requirements is equivalently hard as writing software, especially if the language you use is suitably expressive. Armed with this information should temper your design decisions, try not to make change expensive. I have written plenty of articles on this subject. 


Example #2 There will be no bugs in your code

There will.

Your tests will be polluted by how you use the software and as the author you will use it "correctly". You'll avoid the pitfalls and traps, because you know they exist. To prove my point, just chuck your "fully debugged" code at some new users and watch it crumble to dust. You can't beat time with the machine and customer at the end of the project, cost accordingly. Track issues!


Example #3 Customers are the domain experts in their product

Often, not so much.

It's actually an unusual and pleasurable experience to deal with customers that know all about their products and can/will communicate this effectively. Don't expect it though, quite often you'll be disappointed. Prepare to be the domain expert.


Example #4 Replacing an existing system will be less risky than starting from scratch

As we learnt this year....it depends

The optimistic view is that we have a set of well defined tests ready to go. As we have a working system we can refer to it when things go awry.

Reality is that the system would have been put together years ago, by a domain expert who has now left the company/retired. Because it is an automatic system the domain expertise has declined too. We are now fault-finding 2 systems and the product being tested, because it's failing to spec. Dig below the surface and try and find the domain expertise, ideally someone who can do the manual tests that verify the automatic tests.


Example #5 Hardware drivers will be well written and easy to use

Or they might be crap and difficult to use!

I particularly enjoy the Serial Protocol wrapped in a DLL solution. Try to find equipment where the drivers are not a dead-end.


On an optimistic note, it'll turn out alright in the end..........................................maybe!


Active Participant

I'd call this mindset realistic, not pessimistic, and in my opinion it comes with experience. As murphy's law states, "everything that can happen, will happen". Not all the time, of course, but more often than one would like.


With every project I did, I learned something new that can go wrong. I don't see myself as pessimistic when I acknowledge that by trying to anticipate potential problems. Isn't that one of the reasons for hiring professionals - trusting they'll make less mistakes because of their expertise and experience?


And on top of that, it's pure self-protection. I like my life easy :-)

An opportunity to learn from experienced developers / entrepreneurs (Fab and Steve amongst them):
DSH Pragmatic Software Development Workshop @ NIDays Europe in Munich on 22nd November
Active Participant

I call it pessimism, because engineers tend to be overly optimistic even when they think they are being realistic. I should know, as I'm one of the worst offenders.

Active Participant


I agree with everything you said in your post.


Maybe I had another definition of pessimistic (showing a lack of hope for the future) than you (expecting bad things to happen?) in mind...

An opportunity to learn from experienced developers / entrepreneurs (Fab and Steve amongst them):
DSH Pragmatic Software Development Workshop @ NIDays Europe in Munich on 22nd November
Knight of NI

I really learned to pessimistic mindset when I was doing work for a controls group.  It was literally seeing who could come up with the weirdest possible failure condition and then how to 1) prevent it and 2) ensure the failure is not harmful to a) people and b) the machine, in that order of importance.  One person even said "What if the cRIO FPGA is completely disconnected from the RT processor?"

That was not going to happen since they are the same chip in the cRIO-9068.

There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
Active Participant

Nice one Steve, you've hit the nail on the head...again.  I have already edited my CV, exchanging "25 years experience" with "25 years of pessimism".


I am dealing with a sub-contract at the moment who appears to have coded expecting utopia.  For some reason the code keeps finding conditions that are less than utopian.


Active Participant

Didn't someone once say that a pessimist is what an optimist calls a realist? [Quote from Yes Minister I think]

In which case : Image result for pessimist optimist realist idealist opportunist


If I might also miss quote William Arthur Ward

A pessimist complains about the requirements

An optimist expects the requirements to be complete

A realist implements as much of the required code at the time.

// it takes almost no time to rate an answer Smiley Wink