The evolution of computers came a long way before it reached current state. Nowadays developers have more convenient tools to get their work done.
We will skip times when “Programming” was performed by connecting holes by wires in giant computers like ENIAC. Moreover, these computers spread among several rooms. After invention of more sophisticated computing machines, programs were stored in punched cards, and execution time of one computer in university and whole state was shared with a lot of scientists. So, basically, the programmer could wait for weeks to see the result of his work. Besides, it was very disappointing when program didn’t work correctly, meaning, that there were another couple of weeks of waiting in line.
The process improved a lot with appearance of mainframe computers. As an example, UNIX based mainframes had main computing center and many workstations connected to it (terminals). Still, there were many disadvantages like cost and maintenance. Small firms couldn’t possess such a luxury.
Then Personal Computers were invented and, year-after-year, they appeared almost in every house. PCs had relatively simple architecture and affordable price. As a result, nowadays, many programmers work on their PC workstations. And still, after all advantages, problems in testing the program on different operation systems or different hardware configurations exist. Also, while running complex computations you’re limited to computing power of your station.
The progress is moving forward and Virtual Machines come to replace our PCs, solving many problems. Now, developer can create new virtual machine with needed configuration by several mouse clicks. Furthermore, there is no need in changing broken parts in virtual machine and no worrying about viruses or major failures. The machine can be easily recreated. Also, a programmer is not limited to work on a specific platform: Linux can run in Windows environment and reverse.
Another step of progress is Cloud Computing. It brings scalability based on virtual machines. If you want to run complex computations, create as many computers as you need, pay only for computing time, and destroy unneeded machines when they are not needed.
Latest industry researches shows that nearly 70% of modern industry starts to use or already using Cloud Computing. Today many developers work with VM/Cloud that makes their work easier than in past.