<story><title>&quot;We ran out of columns&quot;</title><url>https://jimmyhmiller.github.io/ugliest-beautiful-codebase</url></story><parent_chain><item><author>fouronnes3</author><text>This is amazing. I can so well imagine a bright young hire joining that team, helpfully offering to &amp;quot;setup this thing called git&amp;quot; only to be laughed out of the meeting by all the &amp;quot;senior&amp;quot; staff.</text></item><item><author>hleszek</author><text>When I started at my first company, they had a very complex VB application running on dozens of customers around the country, each having some particular needs of course.
There was a LOT of global variables (seemingly random 4 uppercase letters) controlling everything.&lt;p&gt;At some point, the application had some bugs which were not appearing when the application was run in debug mode in Visual Studio. The solution was obvious: installing Visual Studio for each customer on site and teaching the users to run the app in debug mode from Visual Studio. I don&amp;#x27;t know how they convinced the users to do this and how they managed with the license but it was done.&lt;p&gt;What happened next was even worse.&lt;p&gt;There was no version control of course, the code being available on a shared disk on the local network of the company with the code copied over in multiple folders each having its own version, with no particular logic to it either, V1, V2, V2.3, V2a, V2_customer_name, V2_customer_name_fix, ...&lt;p&gt;After that, when there was a problem for a customer, the programmer went there to debug and modified the code on site. If the bug&amp;#x2F;problem was impacting other customers, we had to dispatch some guys for each customer to go copy&amp;#x2F;edit the code for all of them. But if the problem was minor, it was just modified there, and probably saved on the shared folder in some new folder.&lt;p&gt;What happened next was to be expected: there was no consensus on what was the final version, each customer having slightly different versions, with some still having bugs fixed years before for others.</text></item></parent_chain><comment><author>gumby</author><text>Astonishingly, It took a long time for revision control to become widespread.&lt;p&gt;Around 1991 when Cygnus had 6-7 employees and was based in the apartment complex where I lived, none of the GNU codebase was hosted in any sort of revision control.  Everything was FTPed around as obscurely named tarballs.  We had gathered something like 27 different forks of gdb floating around the net, for example.  This was back when forking was generally considered a tragedy, something I managed to change five or six years later).&lt;p&gt;Rich Pixley came and said “all of our code should be in revision control, and I want to use this newfangled thing called CVS.”  Michael was OK with it but John and I were steadfastly opposed.  We agreed to an experiment, grudgingly, subject to a whole whiteboard of absurd conditions (“must be transparently integrated into emacs so we don’t have to know it’s there).&lt;p&gt;Pixley agreed to all of that &lt;i&gt;and then ignored all of it completely&lt;/i&gt;.  It was immediately such a win that everybody adopted it without complaint, including us two obstreperous a-holes.&lt;p&gt;A few years later a preventable crisis was how revision control first became client-server.</text></comment>
<story><title>&quot;We ran out of columns&quot;</title><url>https://jimmyhmiller.github.io/ugliest-beautiful-codebase</url></story><parent_chain><item><author>fouronnes3</author><text>This is amazing. I can so well imagine a bright young hire joining that team, helpfully offering to &amp;quot;setup this thing called git&amp;quot; only to be laughed out of the meeting by all the &amp;quot;senior&amp;quot; staff.</text></item><item><author>hleszek</author><text>When I started at my first company, they had a very complex VB application running on dozens of customers around the country, each having some particular needs of course.
There was a LOT of global variables (seemingly random 4 uppercase letters) controlling everything.&lt;p&gt;At some point, the application had some bugs which were not appearing when the application was run in debug mode in Visual Studio. The solution was obvious: installing Visual Studio for each customer on site and teaching the users to run the app in debug mode from Visual Studio. I don&amp;#x27;t know how they convinced the users to do this and how they managed with the license but it was done.&lt;p&gt;What happened next was even worse.&lt;p&gt;There was no version control of course, the code being available on a shared disk on the local network of the company with the code copied over in multiple folders each having its own version, with no particular logic to it either, V1, V2, V2.3, V2a, V2_customer_name, V2_customer_name_fix, ...&lt;p&gt;After that, when there was a problem for a customer, the programmer went there to debug and modified the code on site. If the bug&amp;#x2F;problem was impacting other customers, we had to dispatch some guys for each customer to go copy&amp;#x2F;edit the code for all of them. But if the problem was minor, it was just modified there, and probably saved on the shared folder in some new folder.&lt;p&gt;What happened next was to be expected: there was no consensus on what was the final version, each customer having slightly different versions, with some still having bugs fixed years before for others.</text></item></parent_chain><comment><author>donall</author><text>I had a visceral reaction to this comment! I once joined a company doing ETL with Apache camel and a half dozen underpowered pet machines. Ingesting their entire dataset and running a suite of NLP models took 3-6 months (estimated; it was so slow nobody ever reprocessed the data to fix bugs or release improvements). I drew up a simple architecture using Kafka, hbase, and MapReduce to implement a lambda architecture. The CTO very patronizingly told me that just because something is shiny and new it doesn&amp;#x27;t mean we need to implement it. This was 2017 :laugh-cry:.</text></comment>