The general idea behind good engineering. Sit down do all the work and build your product. With Web Development or any software development with a lot of end user interactions. The engineering methodology towards development is doomed to failure, unless you happen to have a large marketing engine behind you to push your product.
The first mistake: Collecting your requirements. In development this is an iterative task. As the end users really do not know what they wan't have of them aren't even sure what advantage your product will have to bring.
The second mistake: Prototype. The idea of a prototype is a functional equipment made before mass production. In software Mass Production is not the issue. So you are actually just making an equivalent of a Clay model. for your prototype. This will at least start to spark their imagination so you can actually collect real requirements, however you get stuck in a lot of complaining, how the colors are off, or you are using the wrong logo, or the fact the data is not saving. You get a bunch of non-requirements from it. As a side note. I once released a prototype software back in the 1990's we just recently got a CD Burner, and a CD Labels that we can print too. So when we distributed the prototype, I printed a label with some fancy graphics, and put it in a jewel case. Some bonehead got his hand on the prototype system, impressed by the graphics on the CD and Jewel case. and Installed it over his version of the software and wrote a nasty level on how horrible the new version of the software was, how half of the screens didn't work, and how he deleted all his existing data. Needless the CEO of the company blasted him back and told him how much of an idiot he was, for installing a software labeled in big writing "PROTOTYPE" and expecting it to work like production software, and also for Installing software he wasn't suppose to install on his system anyways.
The third mistake: Requirements and spec signoff. The requirements and specs are not done until the product is done. Any assumption made early on may be a major issue later. You decided to use HTML Tables and you found out they were slow for large data sets so you needed to switch to divs. Or you were suppose to use divs but getting the CSS just right on the required browsers is near impossible, so you need to switch to tables. The original data format took hours to process, while a different format takes seconds.
In general with modern software development engineering principles don't work too well, as the IDE and coding is the design process, and the steps of making a formal design with a bunch of flow charts etc... Is for a large part just redundant.
This is for software that is intended to end user interaction (Web development). These engineering skills are much more useful for back end type of work. Where there is a fixed process and you just need to have the computer do the work and you really don't care about making it look nice to the end user.