I have been reading about different software methodologies. Every method has a design phase to some extent, more or less.
I am not clear on what we mean by designing. Does this mean writing your thought process on how you will code the feature? Or it is a way of saying what you have coded or will code.
The point where I am most confused is the real world, which is different than putting your thoughts in documents and saying it will work. Since coding details can change, I don't know what's the point of having a design before coding.
Best Answer
First of all, the design is, in my opinion, a process of preparing / thinking over the project / software / application, so it is consistent, fulfilling the goals, meeting the requirements. Design also helps making the software production process more efficient (because it is about some really basic things in the project, how they should work etc.).
Wikipedia says:
Which means that you make a plan before building the structure (in this case: software).
And why do we first design, then implement, even if many things change? Please see the following picture (source: http://www.agilemodeling.com/essays/costOfChange.htm) that clarifies this the best (at least I think so):