I have been talking to a lot of developers this year and have come to the conclusion that there seem to be two different schools of "developer": Enterprise Application (EA) Developer and Component (C) Developer.
EA Developer:
- Often has the word "analyst" or "consultant" in their title (ie. Programmer Analyst)
- More likely to not have a CS degree, maybe an MIS degree (especially early career developers)
- Rarely works on an application that doesn't have a database
- Design patterns are useful in day to day work
- Spend most of their time at high levels of abstraction
- Good EA developers are also broken into two groups: Those who come from a previous C Developer school and those who have been in the EA school for a while and want to go to the C Developer school
- On average, EA developers are usually better paid
- Builds "solutions"
- Spends a lot of time working on the "glue" of the system
- Does some system integration from time-to-time
C Developer:
- Often has the word "engineer" in their title (ie. Software Engineer)
- More likely to have a CS degree
- Very good at Data Structures and don't like databases or hardly use them
- Design patterns are important, but not on a day to day basis
- Spend a lot of their time at a low level of abstraction
- Good C Developers aren't interested in going over to the EA developer school
- C developers tend to be more religious and passionate about their work
- Builds "Real" applications
- Builds the piece that other people (sometimes EA developers) use to build larger solutions
Does this sound right?