"The software engineer (the project lead) takes care of identifying the sub-problems, after creating the Use Case with the domain expert (often the customer).<p>The programmer solves those sub-problems bottoms up, by focusing on creating the atomic parts as efficient as possible."<p>This is how yucky enterprise monstrosities get built. The "software engineer"/programmer division is nonsensical and sounds like something one would find in Wipro or Accenture, not so much at (say) Google or Facebook.<p>"I think you might have confused the programmers job with the job of actually creating the entire software - which in general terms is nonsense."<p>:-D .<p>The term you are looking for (since you seem to be fond of labels to sratify coders),  for people who just implement whatever their "lead" tells them to  is "code monkey".