Anyone have any programmer horror stories? I sometimes feel like my entire job is one at certain times.
About three years ago my company was like super close to going under. We had no contracts, no money coming in, and really sort of didn't have a product. Completely teetering on the brink. Anyway, we had some interest in our product from a potential customer and they paid for a year long demo, and that was the only income we had. Anyway, the CTO/Project Manager at the time got it into his head that instead of maintaining or re-architecturing the current product he wanted to expand the scope to something ridiculous and work on that.
Basically the idea was to take what our product currently did in a very specific realm (maritime domain security) and expand it to basically be customized to any sort of security realm. The goal was to make it web-based. Well there were a few things wrong with this. First of all the scope of what he had in mind was sort of ridiculous. Just as an example, he wanted the system to be able to hook into any database technology, so he decided we should write an intermediate instruction set that could then be abstracted to fit the SQL particulars of any RDBMS out there. The system was to be able to accept any table of information and let the users customize the data access to organize that into usable information that we could then run an analysis on. It's sort of hard to explain. Included in this was an entirely new jquery/ajax etc based UI that had to be built from the ground up.
But, he wanted to do all of this with a team of four (including himself). At the time I was about a year or so out of college, and had gotten a friend of mine who graduated a year before me a job at the company as well. So we had basically two experienced programmers and two juniors. He also didn't find out if our prospective client could use a modern browser. So we got to work on this thing, and about three or four months in he calls us into a meeting and tells us that the prospective client could only use IE 5 and that basically none of the UI work we had done would really function in their environment and we basically lost three or four months of work. I was on the UI specifically, so it impacted me the most. Anyway, another month into this and the other senior level guy was basically at the project managers throat every other day because he had realized the project wasn't feasible and was already six months behind schedule.
We had started in January, and by August we found out that our boss couldn't pay us on time anymore. We basically got paid once every two months, but he paid us all the back pay. By like October we found out that the project manager was jumping ship and leaving for a different company. There was a sort of bright side to this. At about the same time we found out that the customer that had demoed our product wanted to go ahead and buy it. That was great. The problem was they wanted it by March. And our most senior person was leaving. We basically decided to scrap the 9 months of work we had done on the new software and just implement a lot of fixes on the version they had demoed.
The problem was there was an entire module that they wanted that was basically nothing but prototype code. And we were mostly a Java shop and the entire prototype was written in C# and .NET. Me and my buddy I got hired basically got assigned to get that prototype code up to a working state by March. Problem was that NEITHER of us had done C# before. So we had to learn it, then fix the prototype, while the senior guy fixed like 1000 bugs in the other module.
Somehow, I have no clue how, we duct taped this thing together in six months (thankfully the customers schedule slipped back to June/July giving us a few more months to work on the project). Then we went out to do the installation. At the time there was absolutely no automated process for configuring the system, so installation basically came down to me and the Senior guy on site manually editing configuration files trying to get the thing to work. Somehow we got it work, then we did the user training and so on and so forth. It was the most stressful time in my life. My boss, the owner, had us click through every button in the application in order to train the users, and every time I clicked something I basically just waited for the entire system to crash or throw up error messages. But it didn't. There were a few small but noticeable bugs but we fixed them with a patch once we flew home. I honestly have no idea how we pulled it off. They signed the contract and the company had some money coming in, but had taken on so much debt during the period we had no income that we still were only getting paid once every month or two for a full year afterward.
It's sort of amazing the company survived and how far we've come since then. I was given a 5% share or the company, and basically became the de facto system architect even though I only had three years of experience, while the senior guy that was still around became the Project Manager/Business liaison. We're still only running on a small number of contracts but our business is set to triple in the next two years if things go perfectly. I doubt they will, but it would be nice. Since then we've fully refreshed the entire architecture, all processes for installation are completely automated, and I'm currently rewriting the last bit of legacy code in the system. It feels good to have been here for the entirety of the turn around of what was basically a rapidly sinking ship.