Gah! Is software writing the biggest racket on the planet or what?

I had a house built, and after looking at how it was sited I wanted it moved. I just wanted it moved a foot. That stupid builder told me it would cost more than the house originally cost to build in the first place! For one foot! Housebuilding is a racket.

It does sound like a brush off quote. The numbers don’t really make sense. $100k will not pay for even a single guy working for two years. Indeed you are looking at more like five times that sum for that sort of time.

Standard chargeout rate for work is going to be about three times the salary of the guy doing the work. Which sounds extortionate, but is about what it really costs.

The example above from Sun is about right. $2,000 is close to a day of work, and was probably their minimum charge for any work. Whilst it is pretty trivial to install a print filter in the standard Unix print server flow, by the time you have specified the work, ensured that all the process has been followed, it has been tested, and signed off, you are not talking 15 minutes of work. (I do find it odd however, my memory is that Solaris came with the needed filter. It may have needed configuring, but that is really a trivial action.)

Modern day software houses do not make big money. Which for those of us in the game is a bit saddening. Specialist, and locked in areas do charge more, and can still be something of a cash cow. But nobody is making huge money anymore.

Safety critical applications can cost a lot of money, mostly because they require extreme levels of care, process and certification. Not to mention a goodly slice for insuring against litigation.

I saw something similar with an ERP program, and several other pieces of software.

First, the software manufacturer may have his hands full, his staff going 100%, just fixing real bugs and preparing the next version.

Second, extra features means extra complexity and more permutations to test. The weirdest things can cause problems, and it’s a lot harder to “reboot” than WIndows and Office; crashes are tolerated a lot less. There’s rarely a “simple” change in software. (It’s also possible the original program was written as a mess, and what should have been a simple change is anything but.)

Either they add the feature as an ongoing option for everyone, or they fork the code and now they have 2 different programs to maintain. This means every fix or enhancement now has to be tested twice; new versions, they have to allow for this enhancement in release 2.0; when software errors cause the huge ladle to pour molten metal all over the floor while the operator repeatedly pushes the STOP button - not good, I’ve heard of it happening.

Plus, many software providers like this charge annual support fees. If you have not been paying this, you are not their favourite customer. You buy the software once, then many years later come to them and expect to get caught up and that they will jump to provide a solution. Companies like reliable income, it allows them to hold on to the staff that know what the program does.

No offense to you, Shakes, but I find people who are not developers generally have no clue how long changes will take to implement. For some of them, it’s as if they believe programmers have magic wands they can wave to fix everything.

I helped develop an extension of my employer’s student information system, modified to allow a related community college to use it. We planned to release it phases, with phase one getting the basic catalog up and allowing for student registration - if the registrant had an email address to use as an account ID. For registrants calling in by phone, the community college would continue to do registrations as they always had, until phase two - whereupon we’d have a system to allow their phone folks to put information in the new system.

Well, after going live with phase one, the community college staff discovered something - because we’d allowed people in the system to buy classes for friends or family members who did not have their own accounts, they could actually create a dummy account for the college, then register people calling in by phone as ‘friends or family’ of the dummy account.

It was a clever workaround, but there was a problem - doing it that way, they couldn’t update the mailing address of the phone registrants. This was an intentional limitation we’d put on the ‘friends and family’ registrations - we didn’t want Bob Smith signing his buddy John Doe up for a class, and overwriting John Doe’s presumably valid mailing address that might already exist in the system. If NO address existed for him, it would write it the first time, but after that, nothing. And it defaulted to the registered user’s address - since we envisioned this for use by family members, or employers. So all the people being registered by phone who weren’t already in our system were getting the address of the community college.

So they told us about this issue, and I nodded, and told them it was working as I would expect it to. And they asked if we could update it so that they could update the addresses for phone registrants through the system.

Now, bear in mind, they could simply go into the main student info system and update addresses there - they just wanted a way to do it in the same extended interface.

And I said they’d be able to do it all once Phase Two rolled out.

And what I got back was “I don’t really think it’s a ‘phase two’ task just to add some address fields for the friends and family members.”

I let my boss reply to that one, as I would have told the asshole where to shove his imaginary computer science degree.

As a programmer, that definitely sounds like a brushoff quote. I’m sure the robot arm can do a variety of different things, that’s why it is a robot arm right?

If I was writing robot arm control software I’d have plain-text instruction files, like the P-code that CNC machines use. Even if the instructions are hard-coded into the source code, it shouldn’t take more than a day to make the changes and recompile, unless the system was very poorly coded or they don’t have programmers left. They might have to visit your site to install/flash new code into the hardware.

I don’t program hardware other than some CNC work, but it shouldn’t be a big problem unless the system is very poorly designed to begin with.

My guess is that the original programmers could have made the change for you, easily and in a small fraction of the day, but that the rights to the software had since been bought out by another company that didn’t employ the original programmers, and had no clue how their new product actually worked.

Aye, that’s the rub. The OP didn’t give many details, but the product probably is designed to work from a user-defined script. Left, right, up, down, whatever: easy for the user to control. But if you want the robot to do something not provided for in the script options, that would require programming at a deeper level.

It’s much like this vBulletin board software. The mods have a zillion options available to them like fonts, colors, defaults, permissions, stickies, post limits, logos, etc., all selectable from menus. But if they want to do something vB didn’t provide for, that’s a hack. It could be expensive and it could be risky to try if you don’t have access to the original source code and knowledge of how it works; so costly or risky that they rarely do it.

That doesn’t mean it was necessarily poorly designed, just that not everything could be anticipated far in advance.

Also, what Chronos said. I once worked on revising some military software long after the original designer was gone, and there was no source code available. I took the easy way out and spent only enough time to figure out what was needed for the requested modification. It would have taken a lot longer if I had done it the “right” way, but the budget wasn’t available for that.

This is my thinking, or else the original programmers have left the company/moved on to other projects and the equipment you are using is “legacy”, and no one there really remembers how it works, even if they still have the source code. If that is the case, hiring the original vendor to make changes is no less costly than hiring some other developer to figure out the system, and make changes.

Obsolete hardware causes no end of grief in my line of work. In a remarkable case of poetic justice, the customer that suffers most from this also happens to be the microprocessor maker that is driving the obsolescence cycle.

No really, he’s right. It’s a racket.

Writing software is amazingly easy. But we make a point to always deliver late so that it looks harder than it is, and with bugs to make sure we get fully paid before all those bugs are fixed.

However, the real challenge, and what we spend our days in our cubicles doing, with our beady eyes glowing, is thinking up all the ways we can make someone’s life miserable. As it turns out, we’re incredibly good at it, too!

You’re making assumptions about resource (programmer/tester/whatever) availability. Time to completion involves a lot more than (person hours of effort / number of persons). I’m sure you know that. :wink:

That’s true of a lot of developers, too!

But, we DO! Just don’t tell anyone; it’s a secret!

OK, now I am not trying to reply on a phone.

In addition to obsolescence issues, I have done a small amount of robot programming. It “should” be as easy as eliminating the intermediate steps, but it seldom actually is. The joints of a robot arm only move certain ways.

It is entirely possible that you can’t get from A to C directly, and older robot control software can’t figure out to add point B to make it possible. Modern stuff is easier, and typically has a graphical virtual robot built-in so you can test without breaking things.

Can you post the name and even model of the robot without it being TMI. I might be able to offer some clues as to what the issues behind the high quote might be.

Another issue, depending on who you were talking to, is that a lot of industrial stuff has support and licensing issues that seem really steep to joe little-guy. GM really doesn’t mind paying $300 a year for support contracts and development licenses on all it’s robots, but the onsey price could easily run into the thousands.

Hey dude shut up! You’re not supposed to let that out. It’s like the Magician’s Code.

This is pretty much what I mentioned, and if this is the case, it should be very easy to reconfigure the robot according to the OP’s needs (a simple script might be something like “left 1, up 2, right 3, etc” or “move to (1, 1), move to (2, 2), etc”; the user doesn’t need to know how the actual software works unless they really want to try to change the way it operates), since all he wants to do is change a series of steps, unless for some reason it has to repeat the first two steps (but why? A-B-A-B-C isn’t any different from A-B-C, they both contain the A-B-C sequence)

No kidding. Once I wrote a real-time program and the client forgot to set response-time requirements. I put in a bunch of Delay statements to make sure it ran like a dog, and then the client paid me another $10,000 to do performance tuning. I spent 10 minutes taking out the Delay statements then spent another two weeks playing Halo. :wink: