Writing software is a complicated business. Once upon a time, software was written by an exclusive hacker priesthood that emerged from big businesses like the telephone company or big industrial concerns. Most of them were electronics engineers who needed to write software to control hardware devices that they built. Those early "programmers" mostly did just that. They wrote code to solve tangible problems, such as opening and closing phone switches and making sure that conveyor systems in automobile factories worked the way they were supposed to. A very few of them wrote operating system software or device drivers or networking protocols. In my first software job, I worked with a very complex (for 1992) network backup program that backed up client PCs to a tape drive attached to a Novell server. The system had to manage network traffic, multiple clients waiting for the same tape drive on the server, full and incremental backup sets, and so on. That piece of software was written almost entirely by two developers.

Those days are over. The vast majority of software today is written by professional software developers to solve business problems. There is often no hardware device involved except for the PC itself. Online commerce, business-to-business computing, financial and accounting software, and banking or healthcare software are what many if not most of us work on today. There are no device drivers involved, no hardware switches, no robots — these are business problems ...

Get Code Leader: Using People, Tools, and Processes to Build Successful Software now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.