User and Non-Users

In a comment, Matt Lombard asked me to comment on something that I have been trying to avoid talking about for quite some time. He asked:

“To the best of my very poor memory, all of the proponents of Direct Editing as the New World Order for CAD are non-users, and the proponents of history are users …[snip]… Any comments on that?”

If you are a so called user, please forgive me if you find some of what you are about to read offending. It is not my intention to offend anyone. Definitely not Matt whose blog, I believe, is one of the best CAD blogs out there, not just for the content, but also for the way he puts it.

I want to keep Direct Modeling out of this discussion and only talk about this concept of users and non-users that Matt brought up. Over the years I have been reading comments from users which imply that the CAD media, analysts, authors, etc. have their heads in the clouds and do not know what they are talking about because they do not do real modeling work. I have even heard pretty derogatory comments (especially from SolidWorks users) saying things like, “The programmers at SolidWorks should be made to use their own software.

This kind of thinking is similar to questioning the wisdom of asking a priest for advice on your marriage. After all, what the hell does a priest know about married life, right? And yet they are very effective in sorting out marital problems. I don’t know about the West, but here in a place like India, they are wizards. For a doctor to be able to write a prescription for a patient, he does not need to be ill. Furthermore, the patient does not even know or care how other patients in the clinic feel. But the doctor does. All that matters to each patient is his health, that’s all.

My point is that a user normally thinks only in terms of the software that he is trained to use. For the most part, he is unaware of features and methods implemented in other software. I see this every day at SYCODE. We specialize in developing data exchange plug-ins for almost all the major CAD systems and we get questions from customer of all shapes and sizes. The kind of queries that we receive make me sometimes wonder whether users wear blinders that prevent them from looking at all the other stuff around them.

Now coming to the view that the CAD media, analysts, authors, etc. do not use CAD software. I will let others speak for themselves. But before I have my say, let me list the CAD systems along with their versions that are currently installed on my computer in office.

Acrobat Pro Extended (9.0)
Alibre Design (11.0)
AutoCAD (2000, 2000i, 2002, 2004, 2005, 2006, 2007, 2008, 2009, 2010)
Bricscad and dozen other IntelliCAD variants
Cobalt, Graphite (V8)
CoCreate Modeling 2.0
DoubleCAD XT and Pro
Inventor (10, 11, 2008, 2009, 2010)
KeyCreator (7.5)
Moment Of Inspiration (1.0, 2.0)
Pro/ENGINEER Wildfire (1.0, 2.0, 3.0, 4.0, 5.0 Preproduction)
Rhinoceros (3.0, 4.0, 5.0 Beta)
SketchUp (6.0, 7.0)
Solid Edge (ST)
SolidWorks (2006, 2007, 2008, 2009)
SpaceClaim (2009)
TurboCAD (15.0)
VectorWorks (2009)

And these are just general CAD systems, not specialized CAD software like industry specific solutions for Rapid Prototyping, Reverse Engineering, etc. Now these CAD systems don’t just sit there and occupy my hard disk space. I use these systems on a daily basis. I have spent the last decade solving people data exchange problems by figuring out how these CAD systems work internally. Apart from a few personal projects like designing my house and the stuff in it, I do not create a lot of design data. But I sure as hell modify data created by others. The data I am referring to here is live data from customers (or should I say users?), often sensitive information for which I need to sign Non Disclosure Agreements. The kind of stuff that eventually end up as products, buildings, etc.

But what is more important to understand is the fact that at SYCODE, we do not offer design services. Rather we offer plug-ins and custom solutions that automate the tasks of creating and modifying design data. So I need to wear the hat of a user as well as a programmer to be able to automate a user’s workflow in his CAD system or between his CAD systems. So when someone refers to me as a non-user, you can imagine why I would find that a particularly difficult pill to swallow.

And lastly coming to the view that programmers should be made to use the software that they develop, I believe that apart from reflecting insolence, this kind of thinking shows stupidity in its purest form. I think this is best explained by means of an example.

Like I said before, at SYCODE, we specialize in data exchange plug-ins for CAD systems, one of which is SolidWorks. I find myself using the Import Diagnosis feature of SolidWorks a lot on models imported by our import plug-ins. It is not uncommon for the Import Diagnosis feature to not fill all holes and close all gaps because its success or failure depends upon the quality of the imported data. But sadly, it is also not uncommon for me to hear customers bitch about SolidWorks not being able to do a good job. Now consider this for a moment. A user will use a feature like Import Diagnosis probably a few times a month, if at all. Can you even imagine how many times the programmers who developed this tool used this feature to create, update, test, debug and continuously maintain their code? As programmers we use the software that we create after every tweak in our code and after every rebuild. We use our software with all kinds of design data that we can gather or conceive. We sometimes programatically create data that a user would normally never create, just so that we can stress-test our software. Heck, we use our software so much that we often need to write code that continuously runs data though our software on a dedicated testing server 24 hours a day, 7 days a we
ek, 365 days a year. Think about it. If you are amazed at the speed at which demo jocks work, I suggest you take a look at programmers. Just because they work in the back room invisible to the world, it does not mean that they do not use the software they create. They use it far more than these so called users do. The reason I call this line of thinking stupid is because its more like a cab driver scoffing at a bunch of automobile engineers who designed the car that he is driving.

And while I am at it, I would like to draw attention to another thing I find quite repulsive. When a user creates a design and it fails or does not work as intended, he goes ahead and modifies it and gives it a revision number. In programming parlance the failure is called a Bug and the revision is called a Service Pack. Users should start calling their failures bugs and revisions service packs and then they will be able to appreciate the saying “to err is human”.

I often hear users say that CAD vendors should sort out all the bugs before releasing their software and not make paying customers debug their software for them. I have even heard some users say that the CAD vendors should pay them for reporting bugs. I can turn this argument on its head and ask users to design products that never fail so that people who paid money for the products they designed do not have to pay the price for their “revisions” as well.

Sounds fair, doesn’t it?