When designing a program, you must first have a deep look at the purpose of the program to design and what it will make. You must have the detailed specification needed to begin thinking what you will do. For example, if you designing a web program for handling requests, you must know the pages which will handle, and what are the purposes of each page, the intermediate processes across the requests based on what it must be done before transmitting the page to the client such as connecting to a database and accessing it or writing to it. All this must be known in advance.
Once you know all these details and the processes inside the application you build, you must organize you thinking on papers. This is done by the so called flow charts or algorithms. This will help you greatly to track all the operations inside the application and then design the program based on it. If you neglect this step, you may find difficulties when writing the actual program especially if the program is complicated.
Once you draw the flow chart and knew how the operations will flow, you then can implement what you planned by the programming language you choose. This step is also called coding because you are writing code representing your operations you planned in the previous step. Once you are done you can run and test your application. But wait, many errors may appear when testing and you should correct it and this is considered the final step in the programming life cycle which called troubleshooting.
Many tools can be found for running and testing the program which can ease you work. Remember that there is a difference between the libraries making up the language and the run time environment you use. Java programming for example has the so called JDK which contains the core libraries making up the language but has a separate run time environment which is a separate program for execution and running. You can execute your program from Dos but these tools greatly help you. Java language for example has a run time program called NetBeans which acts a run time environment and has rich tools for dealing with the applications