Direkt zum Hauptbereich

Stop the software / car analogy

I can understand that making analogies is a very powerful form of explaining a hard concept, but you should be aware of the demons you might be unleashing. 

I like analogies, as much as anyone. I do the Einstein-Train-Thing to convince my self that I understand relativity like the next man. But everybody is careful talking about relativity and nobody would walk outside the framing without considering it very carefully.

Software on the other hand is not so respected, and I ask you: does the next man really get it?

Everybody can relate to cars, right? So that is a good reason to use the analogy, you would think, but here is where I have to disagree:

Thinking you know about the domain, sells, production lines, marketing, resourcing, electronics, hydraulics and all the engineering that has been put into the car is the first mistake. The second mistake is assuming other people do (unless they work for BMW or something like that). 

You think you are making the software concepts simpler, just by equaling them to something people can relate, but you (if you are a developer) understand the software as an engineer would understand a car (maybe not even all cars, just some models). So you see the way things have to be mapped for your analogy to hold, but by making others think they can too, there is very much harm done. 

People automatically will start solving problems in the car domain, not worrying of the other side of the equation. I see it all the time, they discuss for hours (true story) about the wheels, and colors and sport edition vs. luxury set-up implying there is some high cognitive back-port to the software domain that you originally were talking about. Concepts get all weird and people get very creative and try to illustrate their concepts talking about paper cars, or invisible cars that only exist for one ride (true story again). 

That is simply wrong. Try to elaborate your concepts without the use of analogies, unless you are absolutely positive that  you can defend your framing.

There are of course some examples that work but they work on the bad side of making analogies, i.e. making an obviously far-fetch connection, like: "you buy a car, and some little writing in the ignition says that by turning the key you agree to drive only to a Toyota authorized cinema". This would illustrate very good some software licensing agreements in real life. 

But generally speaking, there are more reasons why software is not like cars. Here are my top 5:
  1. The user experience of software and cars is not the same. You don't drive software. A computer drives it for you.
  2. While costs of developing might be similar in car and software domains, the cost of production of software if mostly 0.
  3. People that reverse-engineer and understand a car, still can not make one.
  4. You can't paint your software blue and sell it as blue-edition.
  5. Try rebooting a crashed car.
Think about this the next time you try to explain your software.

Kommentare

Beliebte Posts aus diesem Blog

Guide to hiring software developers for your dream team

You want to hire a new developer to support your team, or want to build up a new development team? New trends show how everybody is investing their money in software development. In my opinion, every company today has to do some software (or should), but there are very different ways to go about it. You could have some kind of  project managers supervising an outsourced team in Bangalore or Rio doing your software. If that works for you be happy, but you should be aware that you are not investing in software as in creating value for your company. Your software is costing you like you were leasing a machine. Lots of companies have found out the hard way, that this model does not suffices. Different to leasing a machine, you will not get the new model in 2 years just like that. In order to be competitive in today's market you need to invest in the knowledge that is reflected by your software applications and house them intern. If your company has decided to build up...

Python and Access-Control-Allow-Origin

Ok, here is something that probably happens a lot: You are trying to do some .js (if not you should get started), and write some code in your favorite ide, save it, load it in your favorite browser and everything is ok. You are a good developer and start making packages and loading your files when you need them: lazy . You don't want to overdo things, and manage to put stuff into a bunch of .js and .html. You load them into your browser and BAM: Access-Control-Allow-Origin   Failed to load resource: Resource failed to load   So now you are all WTF, right? You Google (some would Bing ) it and sure enough, what you were thinking is the ugly true and by now you get angry as a bird. Why? Ok, for those that didn't know there is a thing called Same Origin Policy , that forbids you from loading stuff across different domains and bla bla bla... So what does it has to do we you? You sure enough are not trying do load across domains, your are loading a file... you may think, but no...