See title, but I am asking from a technical perspective, not
Take my 40 year old virgin niece on a date or you're fired.
See title, but I am asking from a technical perspective, not
Take my 40 year old virgin niece on a date or you're fired.
To market Neal Stephenson's sci-fi thriller Snow Crash, I was asked to write a "benign" computer virus. It would "benignly" pretend to take over the user's computer and replace the screen with snow, a.k.a., a "snow crash." After a minute or so of snow, the snow would fade out and be replaced by an advertisement for the book. This would be "benign," you see. The virus would spread through normal means, but nobody would mind because after taking over their computer "you'd just get a fun ad and then be relieved that nothing bad happened to your computer."
I was actually told to do this at a major worldwide corporation. I had to write a memo explaining all the laws this would break and all 17 bad things that could happen if they really made me implement this.
"This DLL you wrote is only 17kb. Can you add some code to make it bigger? The client is paying us a lot of money, and we want them to get their money's worth."
Use Visual SourceSafe.
"You know this enormous 20-year-old Cobol program that contains piles and piles of hard-coded business rules that more or less defines our company? Would you mind converting it to .NET?"
Yikes.
We go live in a few weeks.
Wish me luck..
My brother and I were working on a multimedia heavy-website for a very famous rock star many years ago.
When the client saw the site he noticed some compression artifacts on some of the JPEGs and asked what was wrong with them. We explained that images need compression for bandwidth purposes and that the images were currently compressed at about 80% quality. He was offended and said something to the effect of
I haven't gotten to where I am today by doing things at 80%, set it to 100%.
We tried to explain how it would affect users, but he would have none of it. It resulted in the slowest "virtual world" website ever. This actually happened.
We need to delay the site launch by two weeks because Mercury is in retrograde and it's a bad time to start new things.
Obviously after reading some business magazine on an airplane about how XML was the hot new technology (this was circa 2002), one of our executives asked me if our application used XML, when I said no he asked me if we could add it.
Now, I'm not talking about a feature to import/export files in XML format, he simply wanted it to be part of the architecture for no reason other than it was popular at the moment and would lend credibility to our app.
"Right now, the usernames are required to be unique, and the passwords are not. Could we make it the other way around?"
About 7 years ago I worked at a bespoke software shop that decided to sell one of its products. It was an end-to-end operations suite for some industry. Well, this industry wasn't known for being super technological, so somehow we ended up providing third-party technical support for their servers and IT infrastructure instead of farming it out to independent small business IT consultants.
One day, a customer's server encountered disk corruption. The server we had sold them was configured with an Adaptec RAID controller, set up for a RAID 1 mirror. Their application database was toast. They hadn't performed backups in months. The backups they had performed were unusable. They ended up losing 8 months of data. They hired an IT consultant to handle this investigative work.
Phone calls ensued, and the sales manager (known for promising impossible features) apparently told them it would be taken care of, and wrote it up in a contract.
The sales manager promised the customer that we would ensure that the application database and any other application-related files would never be replicated by RAID controllers if the files were considered to be corrupt. No configuration should be necessary either. Yep. We were told to deliver this functionality in 2 weeks, or the customer would fire us.
So the program manager -- who had some large enterprise CRM products, and other serious development successes, under his belt -- and I had a meeting with the COO, and the sales manager. The program manager was detailing how insane, impossible, and insanely impossible this was. The sales manager (military background) would simply scream in his face (literally!), "I don't care! How hard can it be to make the RAID thing not RAID?! Their data would be fine on the other drive if the RAID thing hadn't screwed it up!"
At the end of that meeting, the program manager quit with a zero-day notice. So I was now tasked with this. Over the next week, I petitioned both Adaptec and LSI Logic to provide an engineer for a conference call, simply to laugh in the face of the sales manager.
Ultimately, they obliged, and held up their end of the bargain. And they went into detail how ridiculously unfeasible it was. The guy from LSI was particularly harsh - he didn't sugar coat anything.
I didn't have to implement the feature. One I did have to implement was a custom security scheme requested by a customer, that would allow them to toggle any of the application's controls - on a control by control basis - as visible, disabled, enabled, read-only, or read-write. In theory, there were 146,000 combinations. And if you accidentally screwed up by say... disabling a control group, you'd have inadvertent side effects. Needless to say, when I was given the ultimatum that it had to be implemented, I also quit with a zero-day notice.
They asked me to search a Commercial Product that could find and fix source code bugs automagically.
Still searching..since 2001 :).
I once had a client specification that literally called for code capable of traveling backwards in time.
My employer harvested data for the client, and we were to deliver it in file format X at ten-minute intervals between 9 AM and 5 PM, save for the final delivery, which was in format Y (just X with a different footer). I did just that ... and they freaked. We were collecting low-volume data, and really only had one or two data points to deliver on any given day.
"QUIT SPAMMING US WITH EMPTY FILES!!!" they cried. "FIVE K'S EVERY TEN MINUTES ENCLOGULATES OUR BANDTUBES!"
Okay. So, my code checked every ten minutes, and only delivered if there was anything to deliver. Fair enough.
"BUT THE LAST FILE MUST BE IN FORMAT Y!!!" they screamed. "MODERN TECHNOLOGY CONFUSES AND ANGERS US! FIX IT OR WE WILL BEAT YOU WITH A MASTODON FEMUR!*"
(* -- It is possible I'm misremembering portions of the conversation.)
"So, I'm only to deliver the file if there's fresh data to deliver."
"YES."
"And the final delivery for the day is supposed to be a different file format."
"YES."
"Except I have no way of knowing which file will be the last of the day until the end of the day."
"YES."
"So the only way for me to implement this is to write code that goes backwards in time at the end of the day to redo the format on what turned out to be the final delivery."
"COULD YOU HAVE IT REPORT SPORTS SCORES? WE SAW BACK TO THE FUTURE II. BIFF TANNEN MAKES US HAPPY."
I refused, in part because violating causality is an unethical programming practice, in part because CPAN.org didn't have a module that would let me do it. (I checked.) In the end, they allowed me to send a file in format Y at the end of the day, regardless of whether or not it had any actual data. I'm pretty sure their bandwidth survived the hit.
Without any discernable cause, I was brought into a private meeting, and told not to check if my computer was being monitored - including, never ever checking my task manager for any reason. I asked if they were monitoring my computer, and was told (roughly) "this is just a preventative thing -- you know, our lawyer told us to tell the employees about this -- but you know, we can't really say -- but I'm not monitoring it now."
(nudge, I think they were monitoring my computer, just not while they were telling me not to look for any monitoring programs. In fact, a few weeks later, I came in early and literally watched the mouse moving around my screen as if by remote -- so I looked through the window of the CEO and saw him remotely clicking around on my computer from his laptop.)
I once had a long "discussion" with a pointy-haired boss who insisted that we could store a 2 in a bit datatype because it was "only one digit."
The stupidest thing I've been asked to do is probably a ground up rewrite of a very large project. It was about 350k lines, all C (with a little perl mixed in for 'helper' scripts) and worked well no matter what clients did to it.
Almost a year later, we had:
Basically, we accomplished nothing that sensible refactoring could not have accomplished. But my boss was happy, we got rid of the helper scripts.
I consider it to be the most egregious waste of time and existing code that I've ever seen.
Client: We've been using your database software for a couple of years, developing our own applications with it, and calling you from time to time for help.
Me: Yes, we appreciate doing business with you.
Client: Yeah. Every time we call, you tell us how to use a new feature, or you help us debug our usage, or provide a workaround for some issue.
Me: Sure, we're always happy to be of assistance.
Client: Occasionally, your product has an actual bug in it, and your company fixes it and gives us a software update.
Me: We do our best.
Client: Well, what we need from you now is some assurance that we won't have any more issues.
Me: . . .
I have been asked to write in a presentation of our software to a major multinational potential customer that we used "spaghetti code" coding technique.
Of course, we're in Italy... sounds good.
Do some work for free.
Changing my syntax highlighting colors to match the ones used in the version control system.
Let's see:
Write programs in C++
Can you take this 10-page report that I asked you to prepare as a word document and make it into a powerpoint presentation because I am really a visual thinker and won't actually read the written report I asked you to make?
Ok, I want you to scan this picture of a house, when I come back, you should be able to show me the back portion of it.
"I don't like the way this Oracle database works. Why don't we just write our own database?"
(Admittedly, this was over 15 years ago, but still!)
I was asked to load articles from a competitor's website inside an iframe that would be inside our website's skin, making it look like it came from us.
For me, the craziest (and quite possibly, funnest) was
See this 10 million lines of code in (out-dated web technology)? Write a compiler to convert it to a working Asp.net site.
It never spit out a working version (of course, I tried to tell them it was impractical), but it was fun anyways.
One major feature of an application our company developed was the ability to search large amounts of documents by the full-text of the document. A competitor made the following claim in a marketing presentation to one of our clients,
Our search technology is superior because it doesn't just search the text of the documents, it also searches the 'bits and bytes' of the actual file in binary form.
They gave a ridiculous example of how the decimal ascii repersentations of the words "boot" and "boat" were much less similar than the same words in binary form, when you compared the actual numeric digits in the representation. So searching based on the 1's and 0's more accurately reflected how similar those two words appeared visually, and thus improved recall.
Naturally I was tasked with researching this technique, which I assume was the result of a marketing guy completely misunderstanding a programmer somewhere, and drafting a response that we could include in our proposal.
Can you write a simple time entry and billing system for our new foreign office that uses a different language, currency and tax laws?
Small team of programmers, boss wants us to do a ticket reservation system for a small airline (in a very short timeframe, of course). Team says:
-- as you can imagine, we will need some testers for this project
Boss says:
-- don't worry, learn from the car industry. They recall cars from time to time: users will do the testing.
I was a part of a mainframe support team that did shifts with other support teams in a data center. After the shift we would usually have a briefing with managers and the team of the next shift. One day our new director showed up and asked the question: "Why average CPU load during your shift was only 72%, while previous shift shows near 95%? I think if we try real hard, we could eventually achieve 100% CPU load!"
About 12 years ago when I was in college I worked on a data modelling application for Windows. The project was nearly complete after about 60,000 lines of Win32 code, you know, code targeting the Windows platform. Then the client said the application also needs to run "on the web". She had a hard time understanding how this one "minor little" requirements change could have such a big impact on the project. I started over from scratch in Java but ended up quiting the project before it was ever finished.
I was working on a big project in 1996 where we were scoring live sporting events. This conversation happened:
Boss: Go out to the venue for the next event.
Me: What do you need me to do.
Boss: Be there just in case.
Me: Just in case what?
Boss: In case the tech lead loses it. He's way too stressed out and I don't know what he might do.
Me: And if he loses it, what do you want me to do?
Boss: Just get him out of there so everyone else can continue working. I don't care how you do it.
First week - Have separate code base line for 2 different client (yes two copy of same code for 2 different client )
Second week (another boss) - No merge both codes and put IF - Else condition on every page
At the ISP I worked for back in the mid 1990s, the boss was friends with officers from our local police and sheriff stations. They were interested in catching securities fraud. So my boss hatches a plan:
Write a program to scan websites for evidence of securities fraud. That is:
This was back when pretty much every web server had a unique public-facing IP and virtual hosts didn't exist, so technically it was feasible. This was also back when a 1.5Mbps T-1 was really, really fast.
The problem? Even if we could scan ten IPs per second, the entire job would take almost 5,000 days to complete. Yep, had we gone through with such a program, it would be just now finishing its first scan of the entire Internet.
Just last week someone asked me to make a simple change to an existing DLL (left pad a numerical value with leading zeros).
It was a COM DLL, originally coded in VB 6 - source code long since lost - which interfaced on one side with some external hardware (interface unknown) and whose functions were called from an Active X control on a web page (interface, again, unknown).
It only took me a week and I only slept overnight on the office floor twice.
But I got it done and it is live in the field as of yesterday - working.
Punchline - it was a government project, of course.
I was working on a web project in ASP.NET which was to replace an existing PHP solution. The PHP site wasn't bad, just a little outdated so the new project was to upgrade it using a new platform. The first thing to do was setup the new infrastructure by having IIS and MSSQL servers as well as a source control system.
A few weeks into creating the new project the project manager became unhappy with the deployment process which involved getting the latest version of the code, then deploying a build to the test environment. He felt that this was time consuming and that having people work on the same code base and having to merge their changes the wrong way to do things.
His solution was that we go back to the "old way" of doing things: writing PHP on the production server in real time with no source control or deployment strategy. This way you could have instant results and it didn't involve setting up source control or other servers. Needless to say things did not go well. :)
Wear khakis and a polo shirt.
Well, this one time I bid on a freelance reverse engineering job, only to discover that they quite literally wanted me to be able to change the past.
The last company that I worked for (and went bust) got a few bad reviews of the product.
So the decision was made by the upper management not to fix the problems but instead rebrand the product and relaunch it. Bugs included.
The other thing that made it really hard to stomach was the fact that the rebranding consisted of nothing more than a name change, which meant about 3 image swap-outs within the app and a few string replacements. The app looked the same, behaved the same, crashed the same.
Can't say I'm surprised the company didn't last.
I was asked to write a report to show all sales and expenses for the future, a Nostradamus module for our accounts system :P He was very serious, it was not supposed to be a prediction but the actual values.
"Is there a way to make bar codes appear on the screen so that the user can scan them into the computer?"
The question is in Bold, It needed a build up.
Client: "You need to write Automated tests using RFT against our popular Web application"
Me: "Okay, in which environment is it deployed?"
Client: "It is deployed in QA but you don't have permission to access it"
Me: "Yikes"
Client: "Can you somehow finish writing the Automated tests without the application?"
Me (in my mind): "I could, if I was superman or Chuck Norris"
My boss once insisted to me that Google's search results were all sorted by the highest bidder. He flatly refused to believe that Google tried to order its results by usefulness to the user. I tried to explain with simple logic that a system like that would result in the worst internet search engine imaginable to no avail.
In fact, he argued so vehemently that I'm pretty sure he'd just promised the client "the number one spot on Google if they were prepared to pay"... but didn't want to have to call back and look like an idiot.
*sigh*
We had a product release date pushed back a week so we could get the internal company footy tipping competition system running in time for the start of season...
Back in 2003 we were two developers and a designer that got this...
I want you guys to do an imageserver application where you can just drag'n'drop images to upload them, without any extensions in the browser and it have to work on all platforms.
Truth be told we all looked at him and said something along the lines of
If we knew how to do that, we wouldn't sit in these chairs in your company right now.
Boss: I find it disgusting that you come in at 11am every day. I want you here at 8am, to help the data in-putters with any problems, and stay and help the dev team. When they go home at 7pm, you can start uploading changes to the sites.
Ofcourse, because of the ubersecurity for these sites (pharmaceutical company), we can only have one connection from our IP address to their servers, and I had 24 sites to upload. I was coming in at 11am because id be in the office till 3 or 4am uploading sites.
I left very shortly after.
To learn a whole new programming language over the weekend.
Can you add some post-processing so that the red part of this greyscale image is emphasised more than the green and blue parts?
i swear to $Deity that a client once asked me to change (a+b)*0.5 to (a+b)/2
In my case it would be a client requesting a Web App feature to "block print screen" while on the application, which makes absolutely no sense because in order to do that you have to either disable the clipboard, disable the key for the whole computer, but no, they wanted to disable the print screen key client-side (through javascript), which makes it even more senseless, on top of that no matter what you do as long as you are not affecting the whole computer functionality (which, you shouldn't), the user could work around it by just focusing another application and using print screen when the focus is on that other window.
Ridiculous.
Someone asked me to create a website which "copies what Google Local Search does and merges its data with other information coming from a database". I drew something in paper and the customer said it was ok; I charged him with 700 pounds (1000 US dollars) for a 5-days job.
I developed it in 3 nights and delivered it. I was proud of what I wrote until the customer said "It's almost ok. Why are you using the googlemaps rubygem? I asked you to copy, not to use"
PHB.
I was working on a digital marketing website where we were selling DRM-protected Windows Media audio files; audio books for the most part. Microsoft pushed out some sort of required compliance update for all vendors to implement, assuming the vendors are deploying desktop client applications on end-user machines. The update required the application to check DLL versions on the client's machine to ensure they're up-to-date. My boss was literally drilling me for every conceivable way in which our website was allowed to check a web client's DLL file versions in his/her system folder, even to the point of suggesting we write our own Windows Media Player skin to do so.
Coming late on that one but... I once worked as part of a QA team for a... let's say fairly big software project, which ultimately is part of a big telecommunications infrastructure.
Think big, as in really big, as in a few million people use it, to, well, communicate. Write, talk. Short distance and international stuff. That comes with billing as well to make sure it really matters.
The reason for me working with this team was that the technical launch date was approaching, and that they were quite late on the QA and defect identification front.
One morning I show up for our stand-up meeting, and the programme manager tells us that after a review meeting with the project's executives yesterday, they've decided that instead of having the software run on Windows 32 bits servers (which was decided like 2 years ago), they wanted it to run on HP/UX 64-bits machines.
No reason except that at the time 64 bits what becoming all the rate, so it must be better right? And totally justified. It was now only 2 weeks before the technical launch. Easy.
We fought this dearly (and with laughter).
Got a task that reduced down to the Halting Problem. I had just finished a Ph.D. in Recursion Theory. So funny!
We settled for a (cheesy) approximation.
Stephan
At a credit bureau company, I was asked to replace a 100k C code service that checked fraud databases. Asynchronous multithreaded programming in Java replaced old C fork-join thechniques. The time frames were about 400-500 ms and 1-1.5 sec with stress. We managed to get 600 ms with ocassional peaks from databases' cache flushing.
I was asked by my TL to connect the phone line directly to USB (no MODEM type converter in between).
I tried to explain him that it is not possible technically (the connecting of phone to USB directly). but he didn't want to listen.
Then, I had to write him a 20 page document explaining that phone is analog while USB is digital so a converter is very much required. Then he dropped the idea altogether.
Client: When the power is lost, the electronic door lock should go to the failsafe position.
Me: Yes, of course. Just for clarification -- the failsafe position is "unlocked", right?
Client: Could you make it configurable in software whether the door is locked or unlocked when the power fails?
Me: (speechless).
I was asked to create a tenant blacklist website for landlords handling rental properties.
I was asked by my manager, a VP with connections to a support company in China, to transfer the support of my products to an external company. When I tried to explain to him that this was not possible given our contractual obligations to our customers, his response was, "Of course we can do it - we did it at "xxx company" (his previous employer) Never mind that the two companies made different classes of software, and had different licensing models.
Make websites...
1) Use an Object Database in an ERP system
2) Use an EVA Database in an ERP system
3) Craziest: Build a visual-based business rules system (a la Outlook Rules) to hand to our users (without a test harness to test the rules) and "throw it over the wall" at them. So instead of us writing programs for our users, we could just write a dumbed-down programming language for them and let them write their own apps.
Q: "See this word here, how do I know if before that I should write 'a' or 'an'?" A: Use "an" if the next word starts with a vowel Q: "What's a vowel?"
To make a user manual for an automated process. The user manual basically say "Double click foo.exe and wait until it's done"
I had to create and integrate a TCP Server into a Microsoft Access VBA Application.
It works kinda well, but it's probably the most insane piece of software I have ever written.
I was once asked to make a field in a database "semi-compulsory" by a manager.
Just recently I was asked to develop a web application I had no prior knowledge of based on some JPEG mocks of what the website should look like that had been created by a design agency in another country who normally do print designs and have no idea about the web.
We work as a Scrum team and do our estimates for user stories in story points. When I looked at my second half goals for this year is was a requirement the the our story points must be within +/- 10 percent of the actual development hours spent on the story. For those involved in Agile you know story points are unitless and are based on a Fibonacci number sequence. I have yet to figure out how to make estimate match the actual how anyone could put such a requirement on the team.