Designing and constructing software is a highly complex undertaking, with many pitfalls and potentially much money wasted if not done right. Contrary to many other human endeavors, resolving the problem of making good software is not as easy as hiring a team of people that individually know how to make software, and putting them together in the same room.
This is because, for any medium to complex software development undertaking –say anything requiring beyond three or four engineers—the process that is followed to design, produce, test, integrate and manage the code that is contributed by each engineer, becomes as important, if not more important, than each person's individual talent. Let's try an analogy to explain our point: one can go out and hire, at random, several experienced
Most probably, the cabin will turn out OK. However, one cannot just assemble a team at random, by the mere act of hiring them, and expect them to build a successful –much less a safe—bridge, airport or skyscraper. Specific knowledge and process
The work of tens, maybe even hundreds of people has to be professionally managed according to software development best practices so that deadlines are met. As a software company that has been in the IT solutions business for more than 26 years, it still surprises us to see, say, a retailer –who would never in their life attempt to build their physical retail space by themselves—thinking that building a core retail software platform is as simple as telling HR to "go out and hire some engineers". Software development companies add value in that they provide the know-how and the process to coordinate teams of engineers in a way that produces –if the vendor is good—predictable, reliable results in complex undertakings. IT development companies have spent literally millions of hours perfecting their process, and --if they are good--have spent millions of dollars making sure their infrastructure and know-how
Companies have way too much in their hands to attempt to be good at everything. They should concentrate
This article is continued in Why outsourcing software makes sense (Part 2)