A programmer by any other name is still a programmer

What matters is what a person does, not what they are called. Another problem that plagues software development is a lack of specialization by the type of software work that is performed. I am referring to horizontal specialization not vertical specialization. Most software developers only specialize in just the technical aspects of a project. There is too much vertical specialization and not enough horizontal specialization among software developers. Developers continue to focus on narrow technical skills. There is a tendency to have silo organizations when this begins to happen. Most developers need to improve the consultation and communication skills. There is little skill development in the areas of requirements, design, and architecture.

I know many software developers do not like to be compared to factory workers but specializing into smaller and smaller technical specialty is analogous to a factory worker that has a narrow task on an assembly line. The factory worker does not see the big picture and they are just a cog in a giant wheel.

Today the software developer has a variety of different titles such as designer, developer, engineer, architect, and programmer. If we look up any of these job descriptions, then we find they are basically programming type jobs. For example when I examined job descriptions for a software architect the far majority emphasized experience with programming, the same was true for a software engineer. The far majority of jobs require experience with programming languages and not engineering, architecture, design types of work. There is little difference in required skill sets between a programmer and any other software title of choice with one exception. The one exception is with those specializing in software quality and testing. Most of the QA type jobs in software development actually require skills in quality assurance and do not put an emphasis on programming skills.

If we compare the education and training a software architect has acquired with that of the education of an architect we see it is very weak. While most software architects are former programmers, most architects have never hung drywall or installed plumbing. Most software architects have never had a course in any type of architecture or design. Turning a programmer into an architect is like plumbers and carpenters magically becoming architects with no additional training or skills. Plumbers, electricians and carpenters understand how things are put together and they may actually be successful at doing small architecture jobs, but they would be unqualified for a major construction project. Those practicing a trade can and do offer variable insight into the architectural process, but they are not qualified to architect a major project.

Just like architecture, if we compare the educational training of a software designer with that of an industrial designer, we see it falls short. Again, most software designers have never had a course in design. Programming courses for a software designer is like teaching an industrial designer how to spot weld or run a printing press. It is common for programmers to move into a software design role with no additional training or knowledge. It would not be so bad, but few software designers subscribe to any design magazine or journal, nor do they attend any design conferences. They do little to improve their design knowledge and skills. Any software professional who is interested in improving his or her design skills needs to join an organization such as Industrial Designer Society of America (IDSA.org). They need to study the concepts and ideas of design.

One of my favorite titles is “software librarian.” If you look up the job description for a medical librarian or a legal librarian on monster.com, you will find they require a master of library science. On the other hand, if you look up the job description for software librarian most organizations require programming skills and never mention anything about library science.

I am not suggesting there is not specialization in software development. There is plenty of vertical specialization. There is too much vertical specialization to the point where the software developer has no understanding of what happens before or after them.