That is a very poor analogy. It's nothing like driving between two cities. Designing and writing software is more like designing/building a vehicle you want to sell to others. Choosing a language and libraries is like choosing factory machines and tools needed to manufacture the vehicle, deciding which parts you're going to buy elsewhere versus make in-house, and so on. These decisions can have major impacts on how quickly you can get the car to market, how hard it is to add certain features to the vehicle, how reliable it is, how fast it can go, how safe it is in a crash, etc. All of this can impact whether your company stays in business or goes under. Depending on the target market, you may need to build a sports car, an economy car, a tank, a boat, a plane, a helicopter. You may choose to buy a pre-made part elsewhere that works great in internal tests but breaks down under certain conditions in the real world. Sometimes decisions like this seem obvious, but not always. In many cases there is no "perfect" choice, and in some cases you may end up regretting any choice you make (the grass appearing greener on the other side because you can't see the bugs eating the roots on that side until you've paid the cost to move over to that side ;-).