Create a shared managed policy and attach it directly to each of the 50 users.
Using a shared managed policy can grant the same permissions to everyone, but each addition or removal still requires attaching or detaching the policy for each individual user. When multiple policies are involved, the number of operations grows to number of users × number of policies. There is also no unit for managing who the developers are and which policies are attached, making it easy to miss grants or removals. With an IAM group, permissions are applied or removed simply by changing group membership, and the member list is visible at a glance—so this approach is less efficient than using an IAM group, making it incorrect.