Hacker News new | ask | show | jobs
by TeMPOraL 3316 days ago
Well, I think practical experience in programming can be[0] unparalleled in teaching one precision and clarity of thought. One could think that any hard science or engineering discipline would do, but the truth is, programming is unique - because as they say, you can't bullshit the compiler. You have to get the details perfectly right at all levels, or else your program either won't compile or won't work. In math, it's easy to just not realize your reasoning doesn't make sense. In science, it's easy to bullshit yourself with data. In engineering, well... you can't argue with nature, but your feedback loop is still much slower than in software.

I'd definitely say programming will teach you precision and clarity way better than logic and philosophy, because it's grounded in reality. If you want to build something cool and/or get paid, you have to actually think things through; the compiler won't be impressed by your long paper loaded with smart-sounding words.

Also, a side benefit here is that some time spent thinking about representing real world in programs lets one discover just how imprecise, messy and ad hoc everything is - doubly so if it involves humans. I'm sure I wouldn't internalize ideas like "map != territory" as well as I did if not for spending time thinking about modelling real world concepts in a computer program, and in the process realizing the "territory" they taught me in school was just a map (and a pretty shitty one).

> Abstraction - does learning programming languages develop better use of conceptual abstraction than say, mathematics?

I don't know. I haven't done much mathematics at the level when it gets interesting. I know algebra feels to me to require very similar kind of thinking as a lot of programming work.

--

[0] - I say "can be", not "is", because I've seen plenty of people who write code for a living, and yet their thoughts are as precise and reasoning as subtle as the Tsar Bomba. Somehow, some people don't seem to realize that the cognitive discipline they use when programming can, and should be applied to "normal life" too.