I think we need to pay more attention on input and output of a program rather than thinking the technology that we are going to use for implementing. we need to have clear idea about the inputs we can make and output we need to get.
Then we can select a programming language, special algorithms (if necessary) and a platform in order to define the output generating procedure.
major wrong thing we do is try to minimize the codes or reduce the time consuming at the beginning. This may case for headache and errors which we cannot identify and correct easily. Yes some times we can do it and reduce the codes. but after complete the program we will fed up. and also probability of identifying the correct super technology is low within this kind of a process rather than concentrating on it latter.
there for i think that its better implement a program step by step.first we can consider the input and out put. then we need to implement methods to get the out put, without thinking about the efficiency or flexibility of the program. i would like to call this as "fool programming method". then some how we have the output. As the next step we can review the program and do the changes for the coding. this can be do several times. first we can remove the most foolish things we did. and next bit lower foolish things.
EG step 1 : Input --> any couple of integers x,y
Output --> (x*y)/(x+y)
step 2 : "fool programming method"
public void (int x,int y)
int temp1= x+y;
double answer = temp2/temp1;
Step 3 : review and correct (can be do several times)
1. public void (int x,int y)
double answer = (x*y)/(x+y);
2. public void (int x,int y)
3. public double (int x,int y)
I thing this can be more effective than traditional "all in first time" method. this is some what same to agile way using for big software system designing process management.