Some background:
I'm a programmer working in a group of electrical engineers in a very engineer-focused department. I have no education or training as an engineer, and have next to no overlap with my coworkers in my duties. I was hired three years ago to take on reporting, automation, programming, and database administration for this group (i.e. purely technical tasks).
My first boss, let's call him Andy, was rarely around and thus we barely spoke. He unofficially assigned a coworker of mine, let's call her Sue, to supervise me. I very quickly automated my daily tasks, taking what previously amounted to a full day's worth of busywork into around 30-60 minutes. After that, I repeatedly asked Sue for more work, but she rarely had anything to do. At the end of the year, Andy gave me a poor performance review, saying that while I did my job very well, I didn't "go above and beyond," saying I should have asked for more work (even though I did).
The next year, Andy and Sue left the group, and I got a new supervisor. Let's call him Bob. Bob was very communicative, friendly, and supportive, however he also rarely gave me anything to do, despite my repeated requests and communication to him of my situation on my daily tasks. Despite this, Bob gave me a favorable performance review.
Then this year, Bob left and I have a new supervisor. Let's call her Cindy. Cindy is not as communicative as Bob, but slightly better than Andy, since she's at least around most of the time. I tried my best to explain to her my situation, but she changed my very detailed job description to something along the lines of "perform daily duties and help as needed." I tried to communicate to her that in the past I have received little guidance as to what is expected of me and that clear communication and direct delegation of duties would help me to be as productive as possible (i.e. I can't read people's minds), however, she seems to have disregarded this. While my workload has temporarily increased slightly due to a new project that is soon coming to a close, I find myself being harshly criticized by Cindy for not being "proactive." In these scenarios, there was a task that Cindy wanted me to perform that often is only tangentially related to my daily duties, however in these cases she either did not inform me of the task, or delegated the task to herself or another employee. She will not allow me to explain my position when reprimanding me, so I can't help but feel like at the very least, there's some sort of miscommunication going on here. Starting this year I have kept a log of tasks I have performed that are outside of my daily duties, however the list can be a bit bare if no tasks are delegated to me or there are no fires for me to put out. I'm fairly certain that if this continues, I will have another poor performance review that criticizes me for not being a mind reader and that this will damage my chances at finding future employment. I feel like I'm at my wits' end, here.
TL;DR: I'm in an awkward position in my group where I have completely different duties than my coworkers, I keep getting new supervisors who won't delegate work to me despite my asking for it, and they keep criticizing me for not doing more than what I'm asked.
My question:
How can I be more "proactive" in my job when I'm not given work to do outside of daily duties, and my boss often fails to delegate necessary tasks, or is there some larger issue here that I'm not seeing?