This is the first article in a series called Top Mistakes Developers Make When Building an iOS App. Stay tuned next week for article #2.
In some fields you can get a job a job done twice as quickly by allocating twice the resources to the job. Let’s say that our project is to dig a 100 ft long, 1 ft wide, 1 ft deep trench for a sewer line. If it takes one person 10 hours to dig this trench by himself, then it should take 2 people with similar abilities about 5 hours to do the same task together. They can start at different places and work until the job is finished. You might even be able to have 10 people digging at the same time and finish in 1 hour. If you’re in a hurry to dig the trench, then you really might want 10 people on the job. Any potential inefficiencies that are introduced by having 10 people perform this simple task are outweighed by the value of getting the job done 10 times faster. At some point though the inefficiencies outweigh the speed benefits. Imaging 1000 people digging 1 one-thousandth of the 100 foot trench. Their shovels would get in one another’s way constantly and each digger would be much slower. Someone would have to organize 1000 diggers and you might even need levels of hierarchy… not to mention 1000 shovels.
So some jobs can be run in parallel – to an extent – but others simply cannot be. Imagine you had to dig another trench except that it is 1 ft wide, 1 ft long and 100 ft deep. It is the exact same amount of earth as the trench earlier, but this time you wouldn’t have enough space for even two diggers.
After a few vertical feet of digging, you would not even have enough room for one digger. The digger would have to dig a hole wide enough to actually move around in and stairs to get in and out of the hole. It might take a single digger 50 hours to dig a deep hole like this even though it only takes 10 hours for the shallow trench above.
This analogy exemplifies both the concept of the mythical man-month and the importance of good planning. Sometimes you need to dig a deep hole to accomplish your goals. But if you can dig a shallow trench to accomplish those goals, do that instead.
- Understand what your task is really all about and how you might be able to do it faster or do more of it.
- Be careful trying to scale processes that run in series since they can cost disproportionately more as they scale.
- Some jobs that can be done in parallel still have a breaking point.