design - How would you balance between designing and (actually) implementing you application -
my question not programming language specific, more generic question see way of people thinking.
usually in large development houses there specific roles each job, such programmers , architects. architects point of view have perfect architect , solution design, on other hand programmers dealing implementing application features , ui stuff. therefore if let architect example working on application out programmers application perfect frominside (design patterns, classes, db tables) nothing outside, applies vice versa. programmers focus on output without giving concern design principles (for instance solid principles).
now working on small firm team composed of 8-10 people max, need take care of application design implementing features. question
- when need stop designing , implement solution?
- or should incremental work?
- what if reached point screwed because didn't design beginning ?
i hope can have different ways of thinking can come-up multiple acceptable solutions
thinking problem/design through thoroughly will improve final code. unless spend months on design when write code will discover flaws in design, new features didn't think of, or interactions didn't anticipate. , on software projects goal-posts will move (the customer want different, or you'll have great idea part way through, etc).
waterfall appraches tend go whole design being completed front before have idea how code pan out - inflexible , leads design flaws discovered late them. in waterfall approach i'd suggest prototyping high risk coding tasks implemented during design phase large enough degree confirm can accomplished , work desired.
agile approaches suggest should design as need started, , bit more design later when find it's needed. mixes coding in design, , makes more flexible approach. however, misinterpreted mean "no design" done, or large parts of design not thought until it's late - should not case. should design overall structure enough understand how proceed, , small parts of design have not specified precisely simple enough know able design them later without compromising final product.
so whichever way go, need plan enough know heading, flexible enough change direction when needed, write code (prototype or final code) during process guide design. , prepared refactor , rewrite parts of program if prove inadequate.
Comments
Post a Comment