I have been programming very few things in the past – and rather have worked on existing stuff. I think that this is not a bad attitude if you dont want to fall into the NotInventedHereSyndrom. But I have used a lot of different applications and have also experienced limits of all kinds using this applications. I have made some good working sites in PHP for customers as they did exactly what they expected and even added or suggested things they did not think about. But I also have experienced what the developers of extreme programming wanted to circumvent: That customers find about what they really want after you have made some design “decisions”. And then the programmer has to make a decision: Either he accepts what the customer says and does not request extra money as the customer feels misunderstood – or you say what you did is what the customer wanted and demand an extra fee for design changes.
But both ways are no real solution. What one really wants is to not come into this trouble of having to make changes that are costly (time and money). So one should try to gain more flexibilty. And you dont gain that flexibility if you lets say choose WordPress for a simple blog site and then come to the conclusion that maybe Drupal is what the customer (now) really wants. But its likely that you will find out that in some weeks or months there are again some things you like to change. So you might begin to make drastic changes to the sourcecode and by that have your own patches and/or find out that upstream security fixes dont work for your version etc..
So currently I am at a different point as some years ago. I THOUGHT it would be a good idea not to program from scratch. That is true, partly – you dont need to start from scratch for every solution – you should be able to use existing code and ideas – but with Perl or PHP or Python its not that easy to extend existing code and classes. You will have to write a new app from scratch and then test it. With Smalltalk you are able to choose an example application or tweak some classes and test only these small changes if they give the results you like to see. And thats I think how development has to happen. I cant just jump into Drupal code and tweak things without hurting the application.
I cant yet say what the essence of this approach is – maybe it is: Allow small progress? I have seen that my customers where often very,very pleased with very small changes – and if I look back i think I could only do this because I did not use one big application – but where I have used one in the past it added some complexity or inflexibility so that it blocked a quicker and easier progress.
Seaside for example gives the user a nice framework to start working with web applications without either making a start a hard task nor limiting the developer in any sense. I expect the greatest things from Seaside as in the near future more and more interesting code will float around. Only problem I have now is that I still dont know how to deply it online. Squeak seems to require a GUI in order to be able to work on code? So this would then either mean to work from a home box or to open squeak via X11 oin the server. This cant be the only way? Anybody can clear this up?