We the People
Andrew Hunt, The Pragmatic Programmers
Software development isn't about technology: it's about people. We are the raw material of software development, and that fact seems to have been lost in the continuing, hope-filled rush of new technology.
The two most important skills a software developer must have are the ability to communicate well and to learn quickly. We, the people, act as communication hubs: we have to communicate to the machine, using a variety of arcane syntactical constructs; to the end users, determining their wants, needs, and desires; and with our team members and the rest of our organization. Similar to a network router, we spend our days interpreting and retransmitting packets of ideas back and forth between these entities.
Similarly, we are constantly learning. Beyond the obvious learning of new and improved (sic) technology, we are learning subtleties of the problem domain, of the dynamics and quirks of the team, and the evolving characteristics of the system itself. We have to be skilled at rapidly evaluating, digesting, and applying ideas from a variety of sources, often in the face of incomplete or contradictory information.
The lucky undergraduate may have had a technical writing course, and perhaps some experience working a team environment, but that's probably all. We must do better: specific communication skills including facilitation, public speaking, interviewing techniques, and conflict resolution need to be addressed. Exposure to effective learning methods including summarizing techniques, speed-reading, and knowledge management/organizational techniques such as mind mapping need to be central to the developer's education; the specific technologies used for development (theories of computing, languages, design patterns, methodologies, and so on) remain transient, and thus secondary.
Software has become a pervasive and fundamental part of our society. It's time to move beyond producing computer scientists or mere programmers, and get serious about developing Software Developers.