I've been working at my current company for about 2 years. This is my first programming job so I don't have much reference.
Since day one I've had to give estimates on changes to code bases I've never seen, or had maybe seen a small piece of a gigantic application. The applications themselves are not well documented so I have to ask a lot of questions to figure out what the user story is actually referring to on a basic level. My estimates have gone over frequently as a result. I was talked to by my manager a couple times about hitting my estimates/commitments.
We recently broke our department up into kanban teams. Our team handles the small modifications to existing applications (features that the business unit requests that are too small to be their own projects). Every week we have a design session to get our estimates in place for upcoming work. Since I've been on this team, I've been working on yet another application that I've never seen and is poorly documented. We give estimates as a group and everyone agrees or disagrees. Last week my manager put me on a performance improvement plan because apparently I'm still missing estimates too much. It's effective for about 2 months at which point if things haven't improved I'm basically out the door. We both signed and dated it.
Today we had a meeting as a kanban team and basically we're realizing everything is being underestimated. We're supposed to be getting 95 hours of task work done per week and, based on previous estimates, we're at about half that because unexpected things come up that weren't discussed at design. Our team is a mix of junior devs and senior devs. It just kind of surprised me today that as a team we're way off on estimates yet I feel like I'm being evaluated more severely. Maybe others are on PIPs too, I don't know.
How do I get better at estimating this stuff if I have limited experience with an application?
Okay so alot of feedback here. I guess my next question, since I'm most likely out of here in a couple months, should I quit and find something else, which will most likely be a job I take in despair because I need it so it might be the same type of environment. Or do I do my best while I'm here, get unemployment for a few weeks while I focus all my effort on improving the skills I need for the job I want, and finding that specific job? So basically it's a 'quit' vs a 'let-go', but honestly either way I doubt I'd have a good reference at this place so it probably doesn't make much difference from a resume perspective.