In the end we seem to be on the same sheet regarding what you call hackers and code monkeys. My whole point is that finding the hacker instead of the code monkey is way far more important than choosing Java or PHP.
So although you seem to disagree with me I think we actually share the same opinon
I am not in favor of doing classical 'waterfall' cycles. Writing requirements doesn't mean you can't develop iteratively or incrementally. I am all in favor of continuous refactoring. But you can't work on a large-scale website without doing a proper database design, a security plan, a test plan, applying suitable patterns, and decoupling. But methodology and producing documentation is a supportive activity, not a goal in itself. It should be done on a very minimal level, but it should be done. And methodologies and language choices are, again, in my opinion not tightly coupled.
As for startups doing large-scale websites, in general I don't think that the programming language choice will make the business succeed or fail. I think that Ebay, once a startup, could have been written in ASP, PHP, C++, Java or Perl and still it would have been where it is today.
I am currently CTO for a website with 100 mio pageviews/month, doing about 10 queries per page at 1 million members.
When you program on the scale of several 100.000 lines of code per year, maybe 1.000.000, running on 100 servers, YOU WILL NEED REQUIREMENTS AND DESIGNS...
and testplans, unit testers, UML, patterns, and so forth and so on...
or you will perish. Just doing incremental coding, XP, won't get you to a stable release when you're doing big projects.
Then, in the end, the programming language matters, but not for technical reasons. Price, is one thing. Continuity of the language, another. Programmer availability, very important. For these reasons I would stick to one of the most 5 popular languages and don't go into any exotic new scripting language.
The critical success factors for a large webapp are:
1. The programmers
-----
The differences in popular OO web programming languages (Java, PHP,.NET) are really small. It's good programmers who make all the difference.
Programming languages:
- don't make scalable applications.
- don't draft designs or requirements.
- don't make code that is easily readable and maintainable.
- don't create bugs or do poor optimization or create application bottle necks.
These things are done by programmers.
2. Persistant data
-----
For large-scale websites, speed is mostly determined by disk access.
Database queries may take up to 50% of your total page execution time.
Master databases can only handle a few hundred database writes per second and can easily become a bottleneck.
Downloading uncached files can create 100% waits on your disks.
Programming languages matter on large scale websites, but only after the point where the persistent storage problem has been fully addressed.
In the end we seem to be on the same sheet regarding what you call hackers and code monkeys. My whole point is that finding the hacker instead of the code monkey is way far more important than choosing Java or PHP.
So although you seem to disagree with me I think we actually share the same opinon
I am not in favor of doing classical 'waterfall' cycles. Writing requirements doesn't mean you can't develop iteratively or incrementally. I am all in favor of continuous refactoring.
But you can't work on a large-scale website without doing a proper database design, a security plan, a test plan, applying suitable patterns, and decoupling. But methodology and producing documentation is a supportive activity, not a goal in itself. It should be done on a very minimal level, but it should be done. And methodologies and language choices are, again, in my opinion not tightly coupled.
As for startups doing large-scale websites, in general I don't think that the programming language choice will make the business succeed or fail. I think that Ebay, once a startup, could have been written in ASP, PHP, C++, Java or Perl and still it would have been where it is today.
I am currently CTO for a website with 100 mio pageviews/month, doing about 10 queries per page at 1 million members.
...
When you program on the scale of several 100.000 lines of code per year, maybe 1.000.000, running on 100 servers, YOU WILL NEED REQUIREMENTS AND DESIGNS
and testplans, unit testers, UML, patterns, and so forth and so on...
or you will perish. Just doing incremental coding, XP, won't get you to a stable release when you're doing big projects.
Then, in the end, the programming language matters, but not for technical reasons. Price, is one thing. Continuity of the language, another. Programmer availability, very important. For these reasons I would stick to one of the most 5 popular languages and don't go into any exotic new scripting language.
The critical success factors for a large webapp are: 1. The programmers ----- The differences in popular OO web programming languages (Java, PHP, .NET) are really small. It's good programmers who make all the difference.
Programming languages:
- don't make scalable applications.
- don't draft designs or requirements.
- don't make code that is easily readable and maintainable.
- don't create bugs or do poor optimization or create application bottle necks.
These things are done by programmers.
2. Persistant data
-----
For large-scale websites, speed is mostly determined by disk access.
Database queries may take up to 50% of your total page execution time.
Master databases can only handle a few hundred database writes per second and can easily become a bottleneck.
Downloading uncached files can create 100% waits on your disks.
Programming languages matter on large scale websites, but only after the point where the persistent storage problem has been fully addressed.