Skip to main content

It's always a Science even if it seems like it's not!

I'm sure you've heard the expression "It's an Art, not a Science". You may have even used some version of it yourself. I think I hate that statement.

You may have been (or likely will one day) go to the hospital for an operation. And may expect to be put under a "general anaesthetic". But how does it work? You'll take something else to put you to sleep but how does this other drug stop you from feeling pain that would otherwise shock you right out of any deep sleep? They've been used in medicine for 150 years so this should be a simple question right?

"Advances in cell biology, genetics and molecular biology have transformed anesthesiology into an active area of research. Scientists have largely abandoned the idea that anesthetics work by acting on fatty molecules in cell membranes. The bulk of the evidence now supports the idea that the drugs target specific protein molecules embedded in nerve cell membranes and interfere with neurotransmission. Researchers now believe that each anesthetic acts on a different set of molecules to bring about its characteristic effects." - Anesthesia Fact Sheet

In other words: after nearly 200 years of research we still don't know exactly how they work. And yet it's used safely around the world on millions.

But it's still a Science. Why? Because it's cause and effects are very well researched and measured. We know exactly what kind of dosage will have what kind of effect. They "why" isn't critical to that understanding. While any profession may have a level of artistry no one would say an anesthesiologist is more artist than scientist.

So why do we use the term with business? Estimating, planning and building software all have known inputs and expected output. But why do we pretend there is no 'science' in these decisions and instead often rely on 'gut feeling' or personal experience.

As far as I can see if there is a reasonable way to measure it (ROI, time, cost, man-hours, bugs, client satisfaction, employee satisfaction or whatever) then it can be treated as a science even if there's a large margin of error. What works and what doesn't. What has side effects and what doesn't. Did the business change you enacted have the effect you wanted? Are you comparing it to another group (a control if you will) that hasn't gone through the same changes. What studies are there on previous groups going through similar changes?

Personal experience has value. But reproducible and measured results are science. The rest are BS artists.

Comments

Popular posts from this blog

Setting up Fitnesse on Ubuntu in 7 steps

Some pretty basic steps but just to make sure it's here for everyone to see. Setting up fitnesse and running the jar is easy enough. Just go to http://fitnesse.org/ and get started and do it on your desktop just to see it in action. But for me that wasn't good enough I wanted it to run as service on ubuntu. I stole a few tricks from how ubuntu runs jenkins and setup fitnesse a similar way. 1. Create a user and group for fitnesse (optional) I didn't do this because I wanted tomcat, jenkins and fitnesse all running as the same user. Call it laziness to avoid any permissions classing but it doesn't change the process that you need to create or choose what user you're going to make it run as. Don't make it run as your user or root! 2. Download the jar file and place it in /usr/share/fitnesse Make the folder too of course. It can belong to root as long as the fitnesse user has read access 3. Create the folder to run in at /var/lib/fitnesse Fitnesse user needs...

RestFixture

So most of the tests I'm writing now in Fitnesse are using RestFixture . Being able to do all this black box style testing has helped me get a lot of tests up and running without having to change the existing code base. Now I've taken a step future with my own little fork  so I can use scenarios and build nice BDD style scripts. But first I want to give me own quick guide to using RestFixture Step 1: Installing You can dive straight in by grabbing the latest jar files for RestFixture here  https://github.com/smartrics/RestFixture/downloads If you know what you're doing can get the nodep version to work nicely along side other libraries you may be including in Fitnesse. But I grabbed the 'full' version and unzipped it into a RestFixture folder alongside my FitNesseRoot folder. Step 2: Write your first test I took advantage of the built in Fitnesse api as a basic test and wrote a page called RestFixture with the following contents !define TEST_SYSTEM {slim} !...

Are mocks/fakes reusuable?

Programming 101 states: Don't copy and paste code. If you find yourself doing something repetitive then do it right so you can reuse the same code. Functions, classes and even separate files all serve this end. Now that I'm writing tests all the time I often find myself creating Mocks. Mocks are where you tell code to use a pretend version of some functionality instead of the real one. It could be because the real one does something you don't want in your tests (writes files, reads a database) or it could be that you've got some messy legacy code you can't to pull into your tests (yet). There's other reasons too but you get the idea. So if I make a Mock version of a class it makes sense to try and share that with everyone else that might be trying to test with that same class. Or does it? That assumption has some serious flaws that I'm only now starting to understand. And here's a few: Behaviour you need to test may be completely different to the next gu...