I work for a product development organization that is in online advertising. The assignments I receive are almost always on platforms or tools that I have never worked on before. At first it was android. Then node.js, then windows phone, then debian packaging, then python, hadoop, ganglia, reverse engineering, geo PostgreSQL, and the list goes on.
I am happy to be able to learn so much while on the job. The problem I keep running into is meeting deadlines. Often times it is not clear what is needed to be done to accomplish a certain task. I would need to set up the relevant SDK, run intobeginning issues, read online, pore through documentation, research online for every single item of work in that platform. Sometimes I am given deadlines, sometimes I create those deadlines.
I find it very hard to meet deadlines a lot of times. One becomes faster at doing something the second time around but I never work on some language or framework for longer than a week or two. And this is very stressful and painful to deal with. I get all the flak and public shaming that comes with missing deadlines. I suspect this cannot be normal. It cannot be possible to deliver 7 windows aphone apps not knowing a single thing about c# in a week. But I managed to do it one-day after the deadline. All I have a lot of times is google search to guide me. Often there is little to no documentation on the tool I am customizing.
I sometimes get stuck on something sometimes for hours or even days. This takes a toll on my health and I am no longer able to burn the midnight oil for every task. This causes a lot of mental anguish and depression.
In this situation, Am I correct in thinking any deadline I provide is a shot in the dark?
Is this normal? Does every single work item for you involve learning something completely new every time? I am not sure if it is fair to say I am a poor performer for not being able to meet deadlines on tasks involving a tool I don't know anything about. How do I handle this?