[size="2"]A) [color="#696969"]Design application with the user's needs in mind but also with a long feature list that is "successfulwebsite.com-like".[/color]
[size="2"]
[size="2"]B) [color="#696969"]Throw a bunch of programmers at it.[/color]
[size="2"]
[size="2"]C) [color="#696969"]Launch.[/color]
[size="2"]
[size="2"]D) [color="#696969"]As always is the case, you can never really hit the target right out of the gate when it comes to the user's needs. First round of changes.[/color]
[size="2"]
[size="2"]E) [color="#696969"]Code is inflexible and typically sloppy so changes require a lot of band-aids.[/color]
[size="2"]
[size="2"]F) [color="#696969"]Adding more features and, as a result, adding more problems.[/color]
[size="2"]
[size="2"]G) [color="#696969"]Development (or adding problems) vs. fixing problems evens out. Team's getting frustrated.[/color]
[size="2"]
[size="2"]H) [color="#696969"]Your most important asset, knowledge, begins walking out the door. Begin hiring new people.[/color]
[size="2"]
[size="2"]I) [color="#696969"]Downward spiral of which there is no escape. Some projects may be well-funded. So, the possibility of tearing it down and doing it right exists in this case. However, they will almost always choose to throw money at the old codebase, as that is (of course) the cheaper solution. Spiral downwards in slow motion.[/color]
Nothing is more powerful than an idea whose time has come. Victor's right. I've spent the past several years learning whatever I could about producing successful technology. Software architecture, team infrastructure, communications, methodologies, any knowledge that can help me be a better programmer and be able to handle creation of a lasting product. However, after putting in this enormous time investment, I'm only coming away frustrated because the idea (investing in technology) has not caught on. I'm holding the holy grail and ready to lead my employers to a better tomorrow. My employers, on the other hand, are doing the .com hump.
Why has this pattern not been identified and anyone following this pattern not given 40 lashes and stoned to death? Why are non-technical people still brazenly leading their companies down this same path? Hubrous, of course. Still, it's the same pattern over and over. How is it not obvious? Recently, a project that I'm working on was about to be steered off a cliff and I stepped up with my experience to save the day. Rather than heed my advice, I was told that they deal in results, not theory. Since then, I've laid out a strict overtime payment structure.
The Solution
So, enough ranting about the stupidity that I'm sure many of us have witnessed first hand. I'll propose a solution. Given the biz-people's love for anything "successfulwebsite.com-like", we'll call it "The Google Model" (it doesn't matter if it's technically accurate, these are business people we're talking about!).
A) [color="#696969"]Set up infrastructure for development. Put incentives in place so developers have a reason to stay more then a year.[/color]
B) [color="#696969"]Stick to your core competency and invest in it heavily. No added features!!! In other words, keep it small, make it flexible and manageable. Also, don't be afraid to put some usage metrics in place.[/color]
C)[color="#696969"] Launch.[/color]
D) [color="#696969"]Gauge how users are interacting with the software. Successes? Failures?[/color]
E) [color="#696969"]First round of changes. No problem. Preparations for this were made ahead of time.[/color]
F)[color="#696969"] Add features based on common usage. Keep them simple.[/color]
G)[color="#696969"] Build on existing features, add new ones when necessary. Adapt to your users.[/color]
H) [color="#696969"]Development team begins building up steam having worked on the same project and with eachother for some time. I can not stress the importence of employee retention enough![/color]
I) [color="#696969"]Review code constantly, making improvements where necessary and jump back to step (D). If expanding, jump to step (B). Rinse and repeat.[/color]
Success comes from a strong core concept and not from tons of bells and whistles. More importantly, success is adaptability. Much can be added here (and feel free to) but my point is that the constant repetition of the same mistakes with the expectation of different results is, by definition, insane. I believe the time has come that these mistakes be recognized as such across all applicable fields of interest.