So typical project. Functioning system that is 20 years old. It's been updated by multiple short-term hires and contractors every decade or so. Most of the work is competent, but it's official 100% spaghetti.
I go in and check out what they have, he has a Junior developer who is competent but this is literally his first job.
Get 3 priority items. Supposed to be a simple interface change to add some functionality to the frontend.
So day 1-3 is documenting code, setting up a git repository. It's dotted by constant interruptions.
We finish the interface to a testable state and then find the functionality does not exist in the back end, or we have no documentation about how it might have been implemented.
I should mention that they have no development environment, and each day I recommend we need a development sandbox to mimic the old modules and versions of software.
We are e-mailing the guy a file and he manually uploads it.
Day 4-5 spent documenting the backend and trying to duplicate code. Help integrate some Junior dev's interface updates into the software.
Day 5 the little yappy dog in the house where the office is barks the entire day.
Now it is a home run push to get the code working over the weekend to hit this guy's deadline.
Documentation that was promised on day one doesn't seem to exist.
Each time I suggest how to proceed he reviews with the Junior dev whose input is often irrelevant because he doesn't understand what I am talking about.
So I blow out both days of my weekend to try and hit this deadline. At the zero hour I fix some new bugs I introduced and am getting the debug data I need from the middleware client to confirm I am sending correct data to the backend which I can't access in any way.
Days 6 and 7 I have provided server logs the guy could get to me but never provides.
Reviewing code after unexpected Debug data, I find a broken function in the interface code. I broke it, however it was on the day with the barking dog and during a period of being micromanaged to attacking an issue there with bandaids and workarounds and more layers of spaghetti.
I am talking about variables that are hard coded multiple places into the system and also in a database which need to be updated separately to reflect consistent values throughout the system; all having different labels and constructs.
I fix the script bug in the interface that I introduced when integrating the other devs work [yeah we are gonna just do this one thing and then we can get the revision tracking/development sandbox going!] [I was using a local revisioner on my machine until we had theirs set up]
So with the script working, but only an hour left on the deadline, I realize mose likely I wouldn't.
During yet another telecon where I get suggestions from the Junior dev that are irrelevant to the problem, and more suggestion of adding more spaghetti code as a workaround which wouldn't work anyway without any documentation of the backend functionality, I just decided I wasn't going to make the deadline.
I sent the guy the repository I created, all my notes, thanked him for the opportunity and told him to keep my work as a gift.
I should have known day one. This was supposed to be a light contract job and I wasn't asking for too much money. But none of the goals and deadlines set were reasonable because of the way we had to send every revision to be manually updated for anything but the most basic debugging. Documentation that was promised on day one never arrived. Every time I was spending time reading code and making notes I was interrupted or pushed along to just get a quick patch in.
So it turned into a stressful, burn your weekend and disappoint your boss anyway situation because of how it was set up.
Some developers might have been able to get it working in that timeframe. I might be able to do it with a different approach.
But working like that is just not worth it. You end up losing all your ability to schedule anything, can't predict timelines, can't write good code in the timelines the boss is requesting, and end up walking into the last 5 developers unfinished work, probably because this guy micromanaged many of them into walking away from the project.
I'm going to become a park ranger.