Product designers, in general, are required to have foresight for engineering better products. It is important for designers to have a vision of how a final product would be and look at it from all possible angles that brings out the best product. Though they are required to follow guidelines, it this inherent ability to foresee how the proposed design satisfies the project goals which sets the designer apart. Though every part of design is well planned and designed, there ought to be some aspect in design which pushes the limits in some way. So it is how a design handles such uncertainty (complexity) which sets them apart.So what is complexity? Scientists & engineers have been trying to understand the complexity by trying to breaking them down it to as simple a problem as possible. By studying the repetitive pattern at different level of abstraction we can eventually breakdown a complex model to a simpler and more fundamental model. Even though we can breakdown complexities there is a basic notion that physical systems must have a minimum amount of complexity. This leads us to irreducible complexity. For example, while studying structure of a human eye, we learn about the rods and cones. Without either of them, presence of the other doesn’t matter. Even if both rods and cones are present, without neural pathways to carry information, their presence does not matter. Even so isolated items may be useless as such, they can be put together to form a useful system. So there is a need for some level of complexity in the system itself to make it work. So how do we quantify complexity? Though quantifying complexity is difficult, we can still feel it. More so that complexity feels more real than quantifiable aspects in a leading edge design. Factors that make a design this complexity is a function of number of ideas, duration of each idea and cross product of the two, times severity of interactions between them. For instance, pipeline architecture has different activities at pipestage and each activity takes more than one clock cycle. If a pipestage doesn’t exist it cannot interact with any others, but for an existing pipestage the architecture should consider those interactions. For a nominal operation, analysis is still doable though it is difficult. But complexities arise when we consider exceptional conditions. These factors which define the complexity makes it clear why projects are so sensitive unknowns. It is not just the inherent complexity of a system that makes it difficult to understand, but the project unknowns which inject a wide range of behavior, which adds to the existing complexity. Uncertainty increases the number of ideas that should be considered simultaneously and also increases the predicted time duration for completion of the project. Not just this, project unknowns creates a need for more research to quantify the complexities but the problem is not all problems are quantifiable. Besides, design complexity introduces longer development schedules, design errata, suboptimal tradeoffs and follow on design even more difficult as the new design inherits all the existing complexities. Also, project complexity decreases the number of engineers available who can help when things go out of bounds. Hence a project leader or a project designer should know to make smart choices by considering the complexities and make necessary tradeoffs when such situation arises.If simplifying a complexity is the solution to the problem it injects, then why not simplify everything? Because, after a point higher complexity becomes necessary for there is a need for a better product. However, familiarization helps understand a seemingly complex system i.e. it becomes reasonably simple when we understand how pieces work and interact. It doesn’t mean complexities can just be added to a design. Any design complexity should serve project goals and should be understandable & coherent, strike a balance between irreducible complexity & project goals. In conclusion, avoid complexity if it does not meet project goals.