![Programming Programming](http://a.fsdn.com/sd/topics/programming_64.png)
'The Best, Worst Codebase' 29
Jimmy Miller, programmer and co-host of the future of coding podcast, writes in a blog: When I started programming as a kid, I didn't know people were paid to program. Even as I graduated high school, I assumed that the world of "professional development" looked quite different from the code I wrote in my spare time. When I lucked my way into my first software job, I quickly learned just how wrong and how right I had been. My first job was a trial by fire, to this day, that codebase remains the worst and the best codebase I ever had the pleasure of working in. While the codebase will forever remain locked by proprietary walls of that particular company, I hope I can share with you some of its most fun and scary stories.
[...] Every morning at 7:15 the employees table was dropped. All the data completely gone. Then a csv from adp was uploaded into the table. During this time you couldn't login to the system. Sometimes this process failed. But this wasn't the end of the process. The data needed to be replicated to headquarters. So an email was sent to a man, who every day would push a button to copy the data.
[...] But what is a database without a codebase. And what a magnificent codebase it was. When I joined everything was in Team Foundation Server. If you aren't familiar, this was a Microsoft-made centralized source control system. The main codebase I worked in was half VB, half C#. It ran on IIS and used session state for everything. What did this mean in practice? If you navigated to a page via Path A or Path B you'd see very different things on that page. But to describe this codebase as merely half VB, half C# would be to do it a disservice. Every javascript framework that existed at the time was checked into this repository. Typically, with some custom changes the author believed needed to be made. Most notably, knockout, backbone, and marionette. But of course, there was a smattering of jquery and jquery plugins.
[...] Every morning at 7:15 the employees table was dropped. All the data completely gone. Then a csv from adp was uploaded into the table. During this time you couldn't login to the system. Sometimes this process failed. But this wasn't the end of the process. The data needed to be replicated to headquarters. So an email was sent to a man, who every day would push a button to copy the data.
[...] But what is a database without a codebase. And what a magnificent codebase it was. When I joined everything was in Team Foundation Server. If you aren't familiar, this was a Microsoft-made centralized source control system. The main codebase I worked in was half VB, half C#. It ran on IIS and used session state for everything. What did this mean in practice? If you navigated to a page via Path A or Path B you'd see very different things on that page. But to describe this codebase as merely half VB, half C# would be to do it a disservice. Every javascript framework that existed at the time was checked into this repository. Typically, with some custom changes the author believed needed to be made. Most notably, knockout, backbone, and marionette. But of course, there was a smattering of jquery and jquery plugins.
I was that manual button at Fannie Mae (Score:4, Interesting)
All multi-family mortgage interest was calculated when I logged in to a Windows 2000 server, opened a CICS mainframe terminal and pressed "Enter". Sometimes I forgot and I had to press "Enter" for each day I missed. That usually happened when I got a nastygram email from some suit on the higher floor. I eventually wrote some VBScript to handle everything for me
Re: (Score:2)
Re: (Score:2)
Exactly. How is this a shock to anyone?
Re: I was that manual button at Fannie Mae (Score:1)
The defacto closed-source standard software for a given class of task is often just the first thing that some intern wrote, and the company then marketed the shit out of it.
Is this an "ADP thing" to some extent? (Score:4, Interesting)
I have to ask because despite not being on the software development or database side of things where I work now? I do support escalations and some sysadmin tasks, and one of our challenges when I started was trying to pull employee data out of ADP so I.T. would have a definitive list of who was currently employed and their job titles and supervisors.
At one point in time, one of our network infrastructure guys wrote a big PowerShell script that ran on a nightly schedule from one of the servers to connect up via this commercial ADP connector product we'd apparently purchased, and would funnel the data into SQL Studio.
That allowed me to do SQL queries to grab the relevant information to make a report in Excel, which was pretty useful for our team -- until it just stopped working one day. All I ever heard from higher-ups is, "Yeah, ADP did some kind of changes that broke it. We don't know what's wrong?" The makers of the connector didn't mention anything on their web page about it. Heck - the page hardly had anything except a single page advertising the product with buttons to click to purchase a copy.
Eventually, we pivoted to just demanding HR get us that information. Half the time, they're too busy or forget and we don't get the latest list. But we can usually make do since we DO require new hire and termination tickets to be put in and we can update Azure and what-not based on those. It's more of a hassle than a roadblock. But it was just really nice being able to pull what we needed right from ADP instead of chasing HR down each time we realize we don't know the correct job title for somebody, or they neglected to tell us he now reports to a new guy, or ?
I feel like ADP just sandboxes their data inside their web UI for the people paying for licenses/logins. I had very little luck asking around for assistance on pulling data from it into something like SQL, ever since that old method failed us.
Re: (Score:2)
Yeah I think you're onto something. I've had numerous interactions with ADP integrations, and they are always painful. Not all software is so crappy.
If it had been a unix system... (Score:1)
They would have probably put together a bunch of command line utils (sort, grep, awk, find,...) under bash scripts to be the codebase, and postgres for the database engine.
The revision control system, depending on the era, might have been sccs, rcs, or git.
Re: (Score:3)
Re: (Score:3)
Everything MS has always been GUI, GUI, GUI first.
They never understood how impossible this makes any kind of automation. It literally took them 40 years to finally get it.
Pretty pathetic.
Re: If it had been a unix system... (Score:3)
Re: (Score:3)
Ah, but it's actually GUI, GUI, GUI, and expose an obtuse and undocumented API so that other suckers can try to automate it (possibly with powershell, or actual coding before scripting alternatives existed).
Even in this decade I run across people using some variety of Unix for the first time after spending their entire computing life in Windows, and you can see in their faces at some point the realization that everything has changed for them, and their world has expanded. And also I run into many who don't
Re: (Score:2)
HUH? Maybe in the Windows world but they DID have Batch files in the MS-DOS days.
Windows 3.1 USED to ship with a Macro Recorder [youtube.com] and then they dropped it.
Thankfully we have Auto Hot Key [autohotkey.com] to fill that gap for UI automation.
For small values of "always" (Score:2)
What a short memory you have. Before Windows 3, Microsoft's main product was command-line DOS. And before that, their main business was licensing BASIC to 8-bit computer manufacturers, which usually ended up being used as the command interpreter you saw when the machine booted. They also sold hardware like a cart that let you run command-line CP/M on Apple II computers, which themselves had a Microsoft BASIC implementation in ROM.
Word has it that Microsoft used Perforce anyway (Score:5, Interesting)
Word has it that Microsoft used Perforce even though they agressively marketed "Team Foundation" and, earlier, "Visual SourceSafe" for version control. Talk about not eating your own dog food!!
Microsoft, allegedly, never used either of those services internally and continued to use Perforce. Not sure what they use now but it's probably still Perforce. I'm sure someone will correct me about this.
Kinda like how SourceForge never used SourceForge internally for their own software, either.
Re: (Score:3, Informative)
Microsoft moved over to using git quite some time back - and updated git to handle the vast amount of files that compile into Windows.
See https://devblogs.microsoft.com... [microsoft.com] for a readable writeup on this (from back in 2017)
Re: (Score:2)
Far out, thanks for the continuing story!!
Re: Word has it that Microsoft used Perforce anywa (Score:2)
Visual SourceSafe was horrible. We used that until about 2004 when a company that bought us switched us to Perforce (which was a good tool). VSS didnâ(TM)t have a server process and each client manipulated the DB directly via SMB. It was easy to corrupt. Even having a client PC configured to a different time zone in earlier versions in the 90s could screw things up (yes that happened to us once.) Definitely a tool from a different age when all the users were seated together in the same office, alth
Re: (Score:2)
Visual SourceSafe was horrible. I don't know anyone who used it who didn't get their repository corrupted at some point. It was also like RCS and Projector in its default mode where you needed to "check out" a file to edit it, and only one person could have a file checked out at a time. People would keep all the files in "their" section of the code checked out all the time, so you'd have to go and ask them to release the files if you needed to work on them for some reason. If they were on holiday, you'd
My best codebase (Score:4, Interesting)
She introduces me to this young 20 something kid from India, I'm standing there not knowing what to say, and she's smiling. I made nice, he made nice, it was cool, but for some reason 40 something American me was embarrassed to tell a 20 something from India how sweet his code was.
Truth be told, in over 40 years of software that kid's battery charging state machine is the best chunk of code I've ever seen. That was also the company that, at one of my birthday parties, I counted 12-13 different countries my co-workers were from.
Re: (Score:1)
Congratulations on meeting a literal one competent Indian out of a billion. All of the ones I've worked with produce spaghetti code and tell me to kindly do the needful when I tell them to fix it.
Similar to my current (Score:2)
This sounds very similar to my current job. Team Foundation Server, a lot asp.net web forms, old and crummy Microsoft tech. It kinda sorta worked for the small amount of data it had to deal with back then. But over 20 years, the data has accumulated a lot. And some web pages now take 20 minutes to load because the queries/joins are a hot mess.
I have been working to migrate away from all of it. But the old codebase is very large. It is a multi-year effort for a 3-person dev team. It is a nightmare and
TFS was OK for the time, akshually (Score:3)
It was a tool of its time and I'm sure it's still used today, but I don't recall anything too offensive about it, it just isn't really needed anymore now that almost the entire industry has standardized on Git.
They've never seen bad code (Score:5, Interesting)
Swallow your soul! (Score:4, Interesting)
Disc: Used to program M in both collections and healthcare.
Did little Bobby grow up? (Score:4)
Every morning at 7:15 the employees table was dropped.
LOL. Grew up and got himself a job [xkcd.com].
Every Javascript Framework (Score:5, Insightful)
Every javascript framework that existed at the time was checked into this repository.
Which is much, much better optio than today's standard that you do not check in those frameworks into your SCC at all, but just link to them over the web.
Worst codebase I've seen... (Score:2)
I would be maintaining a 40 year old codebase in Business Basic. I've had worked 25 years prior with it, and I have kept some good memories, so I took the job.
Luckily, Business Basic has evolved a lot since, and it can be a pretty respectable language.
The existing code base was the proverbial spaghetti code, with cryptic 1-2 character variable names and all the stuff that made Basic a horribl
it's a miracle (Score:2)
it's a miracle things work as well as they do, there is so much software running that is hanging together by virtual duct tape. it is amazing and scary at the same time.