
There are two major mistakes that managers make in hiring software developers. First, they assume that software development is an engineering discipline, and thus they look for engineers. We’ll debunk this notion. Second, they assume that the current skills a candidate has are important. We’ll also demonstrate that this is a sure way to hire the wrong people.
Software Development Is Not Engineering
When the first programmers punched tape (and later cards) to feed instructions into a computer, it was a very hands-on exercise. These short programs didn’t require extensive design or development. By the mid-1960s, software development had reached the state where management realized that a methodology to manage the software was required. In his book The Design of Design, Dr. Fredrick Brooks provides the necessary references to show that Winston Royce proposed his rational or waterfall methodology as a straw-man and then argued against it. We were never supposed to actually use it – just criticize it. It was known that software development needed a methodology, but no one knew what it was, so “rational,” which is based on well-known engineering principles, was proposed as a placeholder. This is how the oxymoron “software engineer” came about. Unfortunately this engineering methodology has been embraced for years by academia, businesses and government as the pre-eminent way to run projects. It has led to many, many project failures and wasted billions of dollars. A while back, blogger Ben J. Christensen wrote:I have long considered it a fallacy to call software development ‘engineering’. Even though the term technically works for software as ‘the science, discipline, art and profession of acquiring and applying technical, scientific and mathematical knowledge to design and implement structures, machines, devices, systems, and processes that safely realize a desired objective or inventions’ (en.wikipedia.org/wiki/Engineering), this is not how the term ends up being interpreted and therefore misrepresents how software development actually occurs – since engineering has become synonymous with building physical structures such as buildings, bridges, roads.The issue is that the rational methodology is designed for building bridges, etc., which are 20 percent design and 80 percent construction, whereas software development is 95 percent design and 5 percent construction, i.e., the daily or weekly build procedure. Just as we would not use the term “art engineers,” or “music engineers” to describe artists and composers, we should not use the term “software engineer” to describe software developers, which is the same type of discipline. When I first joined IBM in 1966, I was surprised that math majors and language majors -- and not engineering majors -- were being hired as developers. It wasn’t until many years later that I realized that Big Blue had it right. Software developers are not engineers.