Have you ever asked yourself, why your day-time job in the big company is so simple and boring, and it’s not getting better, when you’re moving from one project to another (or, even, changing the organizations you work for)? Be a realist – it’s not because you’re so much smarter than the other people (but you’re definitely smarter than 9-to-17 office plankton, which is totally satisfied with the state of things, and, obviously, treats programming only as a well-paid way to kill time between breakfast and supper). It’s all about human’s natural tendency to fight entropy and disorder, which turns out into two simple rules:
1. All the projects become boring over time
This rule is based on Plauger’s “falutin’ index” (index of complexity) that can be applied to projects, people, problems and solutions. Ideal balance is reached, when all the components of equation are harmonized, meaning high-falutin’ (smart) people should find ingenious solutions for complex problems, when low-falutin’ people (or new to the area) create “good-enough” solutions to well-know problems. The first case (complex unstructured (new) problems) may require empirical approach (a number of fast “plan-prototype-learn” cycles), whilst the second (without regards to the project size) can be decomposed to the level, where formalized approaches become applicable. Every time the balance is broken, and high-falutin’ developers are solving simple problems, resulting solution is either unnecessarily complex, or has acceptable complexity, but gives and zero satisfaction.
Relative complexity of the problem to developer (and developer’s interest) is conditioned on the problem’s novelty (besides the area/domain complexity), which decreases over time, when developer is moving along the learning curve (and gaining the critical mass of knowledge). Applied to iterative development process, development productivity and interest doesn’t reach the extremum in every iteration, but decreases during the entire development lifecycle (local maximums on the graphic are getting lower compared with predecessors every next iteration):

2. Big companies prefer commit to simple (boring) problems. The bigger they get, the simpler problems they choose (though overall project/communication/information complexity may grow)
The Gresham’s Law of Planning says:
Daily routines drive out planning and even innovation when people and organizations are faced both with highly programmed (structured) and highly unprogrammed (unstructured) tasks, the former tend to take precedence over the latter even in the absence of strong over-all time pressure.
In other words, the preference is given to those problems that can be solved with the known arsenal.
That is, I suppose, the second biggest reason (after the corporate culture), why some people prefer small companies, or become self-employed. Big players studiously avoid complex unstructured problems that may require empirical approach, and decrease risks and maintenance costs using the technologies and methodologies they know well, even if they don’t fit the particular situation (turning organizations into paper factories and Spring-plus-Hibernate-anywhere zombies).
All this ends up with committing only to those problems that fit highly formalized predictable processes, bringing down the enthusiasm of developers that are forced to do the same things served up with different dressings over and over again.






