6 ms·
had to deal with ibm once. we were developing an application for a customer and ibm was working on some new service for them. of course the customer insisted we
by stefs 8y ago
had to deal with ibm once. we were developing an application for a customer and ibm was working on some new service for them. of course the customer insisted we use the new ibm service, even though it solved a problem we didn't have at all. the ibm product was a website to be used by end users, while our application had to pass our end users data through. so, i asked the ibm guys (via the customer) to give me the docs for their json interface, as i don't necessarily want to parse HTML inside the application to exchange data. there was no json interface - html was all they had -, but they got to work implementing one.
what i got was:
{"elem" : "html", "children": [ ... {"elem" : "form", "attrs" : {"action": "/an_url", "method" : "post"}, children: [{"input" : {"attrs" : {"type" : "submit", "value" : "..."}}}]} ..., ]}
yes, their json interface was the DOM, serialized as json. but it gets better. to submit my data i had to fill in the actual values in their json struct at the appropriate nodes and send it back.
i'm a) pretty sure this "json interface" feature cost the customer more than i make in a year, and b) it probably broke the very instant the customer let a frontend/designer guy change the html code months later.
- paganel 8y ago> yes, their json interface was the DOM, serialized as json. This is pure thedailywtf material.
- ryandrake 8y agoDid the change request come complete with specific requirements on what the interface should include? Because it sounds like they produced exactly what was asked for: a JSON interface. If the requirements were poorly specified, you can’t lay all the blame on them.
- therealtomsmith 8y agoThe act of them doing that alone shows that they either dont get it or that complexity within the organization has brought productivity to a hault. I'd assume it's the second one.
- manigandham 8y agoYes you can. There's a basic level of competence in dealing with context around a request. Any decent developer or PM would know what a JSON API is supposed to be.
- deleted 8y ago[deleted]
- deleted 8y ago[deleted]
- gaius 8y agoDid the change request come complete with specific requirements I get that you do need specs but c'mon, if you ask a plumber to fit a pipe from A to B and he uses one made out of cardboard would you think it was reasonable for him to say "well you didn't specify it had to carry water, pay me 3x as much to put it right". And then you find out that this is the first time he's even seen a pipe, but his business card says "senior plumbing expert". You expect a basic level of competence and familiarity with the problem domain and good faith from any professional whose services you hire. Also consider that a program is a spec, and if you are going to explicitly specify every little detail then you might as well just write the program yourself, there is literally no sane reason to put an outsourcer in the middle.
- Macuyiko 8y agoExactly, this is everything that I hate about requirements management and requirements-driven-development in a nutshell. Way too often it just means: "we're actually too lazy / overworked / uninterested / have targets that don't align with the long-term best outcome, so we'll just force you to write down requirements which we know can't and won't ever be complete." It's the best way to cause internal politics to fire up and projects to belly up.
- blihp 8y agoUnfortunately, that's not how the game works with the large services firms. The salespeople and account/project managers run the show. Their business isn't selling expertise / solutions, it's selling the maximum amount of billable hours at the highest possible margin via the illusion of expertise / solutions. (I say illusion because if you read the fine print of one of their typical contracts, there's very little actually promised other than providing warm body of type X for hourly rate of Y)
- piva00 8y agoYou are talking to humans, not programming a machine, you don't have to instruct them on each minimal detailed step to specify something, you expect agency, even more if you are paying big bucks.
- HelloNurse 8y agoThe interface should include engineering. A responsible developer is expected to ask insistently until the requirements make sense; whoever delivered the JSON DOM is stealing their pay, even if they did it knowingly as a joke or provocation.
- erikpukinskis 8y agoTurns out the interface was built by Watson and technically met the spec.
- ploxiln 8y agoAh such classic outsourced third-world contractor output. They are told what to do (by some PM who has no idea) and they do it. If they ever say "uh this doesn't make sense" they are cheaply replaced. I've seen some of this nonsense (though not IBM related): strncpy(dst, src, strlen(src)); dst[strlen(dst)] = '\0';
- zeusk 8y ago> dst[strlen(dst)] = '\0'; That line alone is cancerous.
- copperx 8y agoThat line belongs in a hall of shame somewhere in the internet.
- ggg9990 8y agoNot a programmer. What’s so bad about it?
- jonathankoren 8y agoIt doesn’t make any sense. The way a string is terminated in C is by a null character. ‘\0’ is a mnemonic. strlen() returns the length of a strong. It does this by doing a linear scan down the array until it finds the null, and the returns that index as the length. That line of code does nothing useful. It means, “scan through the array until you find a null, then write a null there.” Which is exactly what you had to start. So why would someone write this? Well, they were told to make sure that you always terminate your C strings with a null, otherwise you’ll run off the end of the array and corrupt memory. This is true, but this isn’t how you need to find the end of the array. They should have used the number from strlen(src), not strlen(dest). Even worse, strncpy() will put the null terminator in dest in this case. The line belies any sense that the programmer had any understanding of what the code was actually doing. It’s a amateur mistake.
- ggg9990 8y ago
- pythonistic 8y agoI'd tell you to get in touch with an Senior Architect but that's no guarantee that you'll get a good result. From my experience . . . IBM sold a big outsourcing package to a major European insurance company: they would move ALL their stuff to the IBM Cloud (VMWare with a lot of custom BPM workflows to handle provisioning, etc.). None of this matched their other three big cloud projects, Bluemix, Softlayer, or their OpenStack project (Zenith -- my prior project), so it was all new from the ground up. They needed to handle mass imports of DNS data from this insurance company (~1 million hosts) and other customers and they brought me in as a senior developer to do the grunt work. Since we were using ISC bind, I assumed we could use features like exporting zones with signed requests and take advantage of all the infrastructure work put into that server to scale up. Our Senior Architect poo-pooed that plan, so I started modeling the DNS records as structured data for consistent and complete import and export. Our senior architect also nixed that idea and said that we're gonna load the DNS structures with REST requests: the support people were gonna have a custom web application to load simple DNS export files (not zonefiles, mind you) into this system, and to make ad-hoc additions and changes. (When we had a new developer join, he had the same questions I had about why we weren't using all the DNS bind features since they were done and tested and perfect for our needs . . . it took a month to get him to stop asking.) I got about 90% of the way through a solution with a Python Flask REST server at the center, high code coverage through unit tests (because it's Python and I was still finding edge cases that needed fixing to the very end), and Rabbit MQ for enqueuing the changes we've received before writing them out to DNS zone files. It works, but we certainly didn't need to blow April to August building out the architect's vision. The reward I got was being pulled off the project when it was nearly code complete and would shortly go into production. I got a team based in India to manage in the mornings, while my afternoons and evenings were returned to developing Javascript for the BPM infrastructure jobs. (When told I was going to leave for another company, IBM's counter-offer was to move me from my remote work-at-home location in Ohio, near family, to the Cloud Managed Services office in Rochester, MN, and then consider a raise.)
- scoggs 8y agoMY GOD that is painful to take in. I feel for you :( . I've shed a tear for a fellow programmer in the thick of the "shit".
- raverbashing 8y agoAnd that's why IBM still makes billions of dollars, because we have fools like your client.
- adventured 8y agoHere's how large the remaining inertia of IBM is: they're operating at a level where they can still generate $9-$10 billion per year in net income. That's about 2.5 times more than the most profitable tech company in all of Europe (SAP).
- bhouston 8y agoIt is because ibm employs ultra cheap devs in India who barely know what they are doing. Ibm made itself into a low cost low quality Indian outsourcing firm but they charge high prices. Worst of all worlds.