I've been full-stack since the 80's, baby! Most of the jobs I've held have been in small businesses where the IT staff is just a few people.
I'm very productive, but the trade-off I've made is to be the "jack of all trades, master of none". I do not constantly keep up with the latest tools 'n frameworks, preferring to mostly stick with just a few core tools I'm familiar with.
When I need to use a newer language or framework, there's usually not enough time to fully learn it so I'll pull some quick 'n dirty tips from Stack Overflow instead.
Of the 119,000 cool tools offered by Amazon Web Services, I probably use about 6 of them.
I have no idea what "subtype polymorphism" is. But FizzBuzz is child's play.
The main downside I've experienced is that managers (and sometimes co-workers) react negatively to anyone who has skill in more than one area. They become obsessed with making it seem as though you're an idiot and that you aren't actually skilled in multiple areas. Also, managers at larger companies often pretend they're trying to hire Full-Stack Engineers, but are really trying to hire someone to write Javascript (that is, they are full of it and start trying to box you in right away).
It's true that more time has to be spent keeping up with advancements, but it doesn't take that much longer than paying attention to one area, as things don't change that often and you don't have to "level up" immediately.
I'm in a completely different position entirely, but I understand your predicament. I am about to start learning to program again by either earning a Nanodegree or going to a bootcamp.
So my decision has become, do I become full stack, back-end or front-end? Do I focus on iOS development?
Sure, I want to be good at it all, but it sure seems like a much better idea to be a SPECIALIST at something.
I still don't know what path I wanna take, I just know I want to focus on web/app development and that will probably mean getting help when necessary. I hate backend *NIX administration tasks and just want things to work, so I can get on with the job.
So when you post this, it makes me strongly reconsider my strategy.
maybe productivity is irrelevant, and it's simply a case of being overwhelmed because your learning all of these at once?
productivity is never as good when your learning something vs when you have mastered it.
imagine your working on a team, and most of the fellow devs are comfortable with many technologies. now compare this to a team where everyone only has one role or technology. in this scenario ( certainly exceptions to this but ) in my experience the team where people can work on anything is leagues more productive.
I think that a large portion of this is attitude and not skill. to be full stack you often have to be ok with diving into a task that is not your specialty. not everyone is ok with that.
being a specialist is hard these days. I have hired specialists before but they have to add something very special and unique to the rest of the team that very few people can do.
I'm very productive, but the trade-off I've made is to be the "jack of all trades, master of none". I do not constantly keep up with the latest tools 'n frameworks, preferring to mostly stick with just a few core tools I'm familiar with.
When I need to use a newer language or framework, there's usually not enough time to fully learn it so I'll pull some quick 'n dirty tips from Stack Overflow instead.
Of the 119,000 cool tools offered by Amazon Web Services, I probably use about 6 of them.
I have no idea what "subtype polymorphism" is. But FizzBuzz is child's play.