You know, this is a question I frequently ponder. I don't know if I have a good answer.
Interestingly, I think coming from a software background, where things are (generally) predictable and orderly, can help establish some of the most important foundations of practicing medicine. In writing software, we generally have a good idea about what's going to happen when we run our code. In medicine, we follow the same blueprint when approaching every patient. This ensures that we're both better able to recognize patterns when they are present, as well as making sure we are consistently thorough in collecting all the information necessary for a diagnosis.
There are also tremendous differences - probably the biggest is what could generally be called variability. In software, we generally want the product to run identically for every user - it is quite frustrating when it works differently on every computer. In medicine, we don't end up with much choice on the matter - everyone is different. And so we need to take those differences into account when we are formulating our diagnoses and are when we decide to prescribe (or not prescribe) a medication for a patient. I enjoy the challenge that this variability brings to the practice of medicine.
As a paramedic for many years now, I've had the pleasure of practicing (albeit in a very limited manner) medicine. I think what I most look forward to in becoming a physician is being at the top, directing patient care on a larger level. I also look forward to seeing more of a patient, rather than just the hour or so that it takes me to treat them and transport them to the hospital (unfortunately, paramedics in the USA are not yet look upon as definitive care). I hope to stay involved in prehospital medicine as a physician and help it grow to be considered a true career and as a source of definitive medicine.