with regards to being a software engineer, i would say that being an "expert"
or at least to be able to really have an in-depth above average knowledge/experience/skill
on a specific domain/context is a must. For example, one could be an expert developing
on banking enterprise web applications using java. Expertise or at least an in-depth above
average skill would be necessary for a good software engineer to be able to deliver with
flying colors. Otherwise, the product would not be as good. This is whether one is working
with a team or not. On the other hand developing an enterprise web application using java
would require other skills as well like database, connection and object pooling, sometimes
LDAP, web services, etc. Whether the software engineer is working with a team or not
and whether these different skill requirements are delegated to others, still the software
engineer would do him his own good if he at least knows a basic average knowledge for the
different skill requirements (jack of all trades). It is important to point out that IMO
it would be best to have these basic average knowledge skills wherein these skills are
connected to the expertise that the engineer is delving himself into.