Well, the truth is that I always knew that I wanted to write software. Like most other people in software, my first exposure was through video games. For me, I think the real draw was building something that was fun to play with.
So, the story is more about how I ended up in electrical engineering. When I headed off to college, I wasn’t quite sure what my major was going to be. Before I got on campus, I was pretty sure that I was going to do either computer science or computer engineering.
I remember talking to my father about which major was better and what the different career options were for both of them, and he had some very interesting advice. His advice was to be an electrical engineer. His reasoning was that out of the three majors that we were talking about, EE would have the most math and physics. His claim was that programming could be learned on the job, given a suitable base, but that the underlying principles of what you were programming would not be so easily learned later. So, while I was in school, I should focus on learning fundamental laws rather than programming languages and syntax. Languages change and evolve with time, so anything that I learn in school will be dated by the time that I graduate anyway.
I think this was some of the best advice that I ever received. After being out in industry, his assessment couldn’t be any more correct. It is definitely possible to learn math/physics type knowledge on the job, but it is much more likely to learn a new programming language or technology.
If you want to write software, take courses about things that are common to all languages: flow control, functions, data structures, etc. Don’t fret about knowing every language that is out there. Pick one and know enough to be dangerous. Changing languages or picking up new tricks can be done on the job, and will probably be required since every company’s environment is a little bit different.