It's probably time that the story of my first company was told. This was a music software company that I worked as telephone support for, as I was about 20 and had no formal experience or qualifications in software development but wanted to do "something with computers or music or whatever". (This is in the late 90's/early 00's for those wanting authentic period dressing.)
The company had a single programmer, who worked offsite, ostensibly because he "couldn't handle the stress" of working in the office. He was in his 30's and lived with his mother. (In the guy's defense, the company owner had an incredibly short temper and was something of a control freak. I myself learned quite a lot about how to appear to do your job in an idiotic way as requested while actually doing it as properly as circumstances would allow...)
The company's software was all written in C (I think it used the Borland IDE). There was no source control. (Presumably the programmer had a folder full of .zip files with different versions of the source code—I never thought to ask about that because I am 20 and what is source control?) From this bundle of twine source code, he could produce two or three different versions of the software with different features enabled or disabled. These were mostly on different #define
s at various places in the code. Fun fact: some of his 'macros' had single, unmatched curly braces in them. I'm also not entirely sure he was familiar with indentation. People such as myself at that age (about 20, no formal experience or qualifications in software development) made fun of his code,
So, when it came time to "release" new versions of the software, we would have a process were he'd upload a set of binaries onto the company server, where myself and anyone else who happened to be in the building at the time would 'test' each version of the program. Usually, something was strangely and horribly broken in each version—maybe one of the editors was failing to draw properly, maybe it'd crash trying to load a specfic MIDI file, maybe it couldn't even make any sound, that kind of thing.
We'd then get into a loop where we'd describe the bugs we were seeing (over the phone—no paper trail whatsoever), and then he'd have a crack at fixing them, then upload new binaries, which may or may not have fixed the initial set of issues, but which invariably had new and equally random bugs in them. In fixing the music notation display, he might knock out half of the settings dialog, or something equally inexplicable.
This process would then continue for the next four or five hours until eventually, we'd look at the complete set of binaries available, and then for each version of the software, we'd find which particular binary had the fewest bugs, or the least obnoxious bugs. That would then be officially anointed as the 'new release version' and we'd package that one up and make patch installers and so on. (It should be pointed out that our 'testing' process was pretty ad-hoc and basically consisted of: run this program, do some stuff to it, see if it does what you think it should do, so something horrendous could quite easy sail through "QA" and into the hands of the public.)
As you can probably guess, it was absolutely no fun being the support guy for this company—people (paying customers!) would call up complaining that they'd updated our software from the company website, and now the program was incapable of doing the thing which they'd bought it to do, and the official company line was basically "wait for the next version and hope that fixes it". (I think on occasions I did mail people disks with previous versions of software, but that was just me playing outside the rules to try and do the right thing.) After about two or three years of this, I took to hiding in the toilets whenever the phone rang, before leaving the company completely with my "1 year professional C developer" experience on my résumé...