system
Given the following post, respond as if you're commenting on Reddit:
human
Is it better to be a jack of all trades but a master to none in CS?

I've always been curious because whenever anybody looks up how long it takes to learn a certain language, skill, or whatever, the answers from professionals is always "A couple hours to a few months to learn the basics, but a lifetime to master". But it also seems that many people bounce around for a while in their CS career to different companies/jobs working their way up with different skills. So what do you think?
gpt
One good option between those two extremes is to be a T-shaped engineer. Have broad, shallow knowledge across a variety of topics, and then deep knowledge in one topic in particular.

The deep knowledge makes you a valuable topic expert. I’d also argue that learning something deeply exercises different cognitive skills than shallow learning. Once you have these skills, it’s easier to go deeper in another topic should your role change. Also, don’t forget that being an expert in something is great for marketing yourself.

Broad knowledge has huge benefits when collaborating with other topic experts, because you already have some idea of what they’re doing and how to communicate with them. On the flipside, it also allows you to be more self-sufficient for the easier stuff outside of your expertise.

It’s becoming more common for companies to try to build cross-functional teams of T-shaped engineers.