Call it whatever you want. Apprentice/Master --- but there needs to be a way to differentiate - and thereby focus the work efforts. Master developers/designers need to be building a cohesive set of tools and a design that the Apprentice uses to get the job done.
An apprentice programmer should never be allowed to lead the design or implementation of a project - I don't care how many years they have with the company. Years of service does not equal quality of skill set. I've seen too many projects destroyed because the wrong people were in key positions in the team - and should not have been. The idea that every programmer is an interchangeable widget is a lie. If you are peddling that 'happy joy and rainbow land' view of the world - then you are part of the problem that I am talking about.
The truth is in the deliverables. Most of those deliverables are nowhere close to being right.