I'm a junior and practically refuse to give estimates currently because the projects I currently get have no real requirements.
"We'd like to replace an excel table for some calculations with a dialog. Here's the template, how long do you need?" which sounds simple enough turns into:
1- Decypher what the example excel template developed by someone over 10 years even does.
2- Oh, there are actually 10 templates and manual actions that give the end result.
2.5- Oh, btw, we asked an external company about doing this for us a while back and they wanted 1kk euros, crazy right?
3- Oh, we also need to generate, send and track offers via the app with the ability to add comments and upload files related to the offer. We also want the user to be queried about what data he has on hand so that calculations he cannot complete are not offered/he's notified as to what else he needs to proceed.
4- Oh, we also need change tracking/audit logs for everything.
5- Oh, we also need to get data from this place, find a free API and also a way to get data out of this software here.
In comparison to that at my previous job the tasks were way smaller and clearer so I'd essentially give myself deadlines when talking to my manager by saying X and Y should be done by Z, A by B.
The only thing I can think of in this situation is to essentially make internal pseudo contracts regarding requirements but then I'm making a pseudo contract with someone 3 levels in the hierarchy above me who's also the person who can terminate me. It's not like that pseudo contract will be read by anyone besides us so it seems better to display lots of uncertainty. At least if you're senior you have more authority in discussion and don't really have to give a fuck since everyone's looking to hire senior devs + your downgrade is a normal dev position. From junior the downgrade seems to be testing or McDonalds and you get to redo junior.