I have been consulting in IT for over 30 years and have been teaching Software Engineering at the graduate level for most of the same time.
During that time I have noticed a disturbing trend among the individuals I meet within the IT Industry. Many individuals only have a narrow knowledge of some specialty within IT. They may know a specific software language such as: C#, Pearl, PHP or Python; they may know a specific operating system such as: Linux or MS/Windows Vista; or a specific software development methodology such as: Waterfall, RUP or Scrum, but do not have a broad range of skills.
This lack of overall knowledge of the entire software development, operation and maintenance process often leads to micro-optimization, inappropriate solutions and failed projects.
In other professions such as medicine, an doctor in training in addition to needing a college degree, and a medical degree needs to practice his trade as an itern to learn the general practice of medicine before they learn a specialty. Learning a specialty takes years more of learning and practice. Among the trades such as Electrician, Plumber or Carpenter, there is a requirement to learn the general trade over an extended period as a Journeyman before learning a specialty.
Not so in the IT profession. Individuals in IT often learn a specialty, begin work and never learn the general principles and practices of software development, operations and maintenance.
Computer software is becoming more complex and integrated with the business organization. As a result, there is a need to identify individuals who have a broad range of expertise, look at the overall problem and develop a comprehensive solution to that problem. These individuals should be called: Software Engineers. They should be taught the broad based of knowledge necessary to develop, operate and maintain software solutions. Then they need to learn to practice software engineering over an extended period of time. Once this is done, they can focus on a specialty and become certified in that specialty.
I try to correct this lack of general knowledge by teaching Software Engineering at the Graduate Level, but I can not reach every individual going into IT. We need focus on teaching Software Engineers if IT is every to become a true profession.