6 ms·
This topic comes up every so often. I think my previous comment applies here [1]: I started a Math degree after 16 years of programming without any Math beyon
by decasteve 12y ago
This topic comes up every so often. I think my previous comment applies here [1]:
I started a Math degree after 16 years of programming without any Math beyond high school (the highest being high school calculus). Most of my work as a software developer didn't require any "higher" Maths.
Once I began studying math, including Modern Algebra, Analysis, Graph Theory, Category Theory, etc., I realized I understood many topics on an informal level, in a non-rigorous sort of way, through programming. I had a good sense of major algorithms and data structures as well as their running times. Once I did have more math under my belt, things did become easier, and I started to see connections and commonality between problems across different domains, i.e. more than one way to skin a cat.
Part of the reason I began studying math, is that I felt it was my limiting factor. The range of problems I could tackle as a programmer was limited by math. It turns out this was partly true.
The biggest misconception is that in Math there is one "correct" answer. This is almost never the case. Some of the most interesting solutions in Computer Science come directly from Math topics that were once considered "abstract". Likewise, some of the most interesting problems are solved through approximation algorithms of seemingly intractable problems, often requiring a bit of "hacking" and real world experience beyond what you'd get from a formal education in Math or Computer Science.
[1] https://news.ycombinator.com/item?id=7104566 https://news.ycombinator.com/item?id=7104566
- eric_bullington 12y ago> The range of problems I could tackle as a programmer was limited by math. It turns out this was partly true. Would you mind expanding on this? I've often thought about going back to school for a math degree, or at least for the core degree courses. Did functional programming, particularly in a pure language like Haskell, become easier to reason about once you had studied Category Theory in depth?
- deleted 12y ago[deleted]
- eli_gottlieb 12y agoYou can actually go the other way around, from functional programming to mathematics: http://homepages.cwi.nl/~jve/HR/ http://homepages.cwi.nl/~jve/HR/
- jeffreyrogers 12y agoI've seen that book a number of times before and always thought about reading it. Do you recommend it?
- stanleee 12y agoI think it's a great book and a great introduction to discrete mathematics, specifically the topics typically taught to CS undergrads.
- croyd 12y agoThere's no dependency between learning functional programming, including Haskell, and category theory. I say this as someone who is reading a CT book (Conceptual Mathematics) after being first exposed to the topic by learning Haskell.
- jordanb 12y agoI'm in a similar boat as you. I went up through Calculus in school and hated it. Around 5 years ago I developed a strong interest in learning relevant applied math and have been enjoying it since. Some things I'd add: 1) Math is fun! If you have the aptitude and disposition to enjoy writing software you'll love working out math problems. They're little nuggets of mental stimulation that you can work on with just some paper, a pencil, and maybe a pocket calculator. 2) You're spot on about an experienced programmer already having an intuitive but non-rigorous understanding of many concepts. It's mostly a matter of learning to read and write comfortably using the notation, which is really similar to learning the syntax and semantics of a big computer language with poor reference material. 3) You really have to have basic math down. This means going and re-learning stuff like applying FOIL to a binomial or dividing by a reciprocal. 4) Calculus and Linear Algebra are the father and mother of applied math. You'll save yourself a ton of grief if you learn them first (and I mean really learn them, maybe you took a calculus class in college but can you apply the Chain rule right now?). I'm learning Linear Algebra currently, which is something I should have done years ago. Part of the problem with self-teaching is getting things out of order.
- jeffreyrogers 12y ago> 1) Math is fun! This has been my biggest realization as I started learning more math. What before seemed very arbitrary and unrelated becomes much more interesting and exciting once you have a bit of background. Unfortunately, I don't know of any way to get people to see the fun in math until they already know quite a lot of it... this was my experience at least, and seems to be pretty common among people who didn't gravitate towards math immediately.
- nextos 12y ago> 4) Calculus and Linear Algebra are the father and mother of applied math. > You'll save yourself a ton of grief if you learn them first Baby Rudin and Axler are used currently by Harvard Math 55 to teach those subjects. Rudin might not be very didactic (I would be happy to hear about alternatives), but Axler is a fantastic choice.
- 12y ago
- danso 12y ago> The biggest misconception is that in Math there is one "correct" answer. Well written...and I'd argue the same is for both Computer Science and software engineering in general. When teaching beginners, it still astonishes/annoys me how many students tell me, "My program didn't work"...as if there was just one reason why it didn't work, as opposed to hundreds of possible reasons.
- mcguire 12y agoThe first sign of programming maturity is the realization that it might be working just by accident. On that one case.
- drcomputer 12y agoThanks for writing this. Over the last 4 years I switched from studying computer science with applications in mathematics, to studying math and symbolic logic with applications in computation. I did this alone, without interacting with anyone in the field. I thought I was going insane because of how many direct 'abstract' connections there are from computer science to mathematics and back again. I know these abstract connections exist as words in the world, but many times it feels like I have to go hunt for the word when I already have the idea. I haven't really found any real world applications of the concepts I've learned, aside from having to hold a meticulously constructed symbolic reasoning world inside my head for a really long time without observational reality confirming it's correctness as a model to describe all things. This makes me pretty good at programming things that are incompletely described, I think, but also explains why Tarski said he was the only sane logician. I never really hear about autodidacts talking about their experience. It can be really rough most of the time. I literally think it's just luck that I stumble across the right words. I also think it's luck when I manage to understand things and make a connection between them. I have managed to connect such disparate symbols together and maintain that connection strongly for long periods of time (with absolute conviction), that it all really seems like magic when it does work. But, giants, shoulders, yada yada.
- cosmoharrigan 12y ago> meticulously constructed symbolic reasoning world (...) connect such disparate symbols together and maintain that connection strongly for long periods of time Out of curiosity, could you give an example?
- drcomputer 12y agoThe construction and maintenance of my psychology using mathematics and symbolic logic to model, explain, extrapolate, analyze, and manipulate it. I use computer science to explain psychology, in a way the makes the person being judged correct, instead of requiring their behavior to be altered based on personal opinion. Imagine you have two conflicting sets of data from observation in your mind, and you have to process this data quickly. Taking an arbitrary and insufficient amount of data is selective and results in bias. Over time this results in contradiction even though both instances of inference are correct with regards to the logical model they rely on, and the data fed to the model. Now imagine that you received this data because over a short period of time, you have experience such a wide range of life experience that your observations allow you to collect both sets of data simultaneously and with correctness. Both data models model the world correctly, but when separated into distinct models of 'knowing things' instead of 'one confusing mass of data', you get contradiction. So imagine someone endures trauma in their life, and has their mind molded in a specific way based on the current state of psychology, because over time the thoughts in the patients mind are shortly transformed to the thoughts in the therapists mind. Psychology did not experience the trauma, so how can psychology have an opinion on the consequences of bad things happening? Making inferences adds to data and alters future data models and inferences. How people are judged while they are being 'helped' affects whether that help harms or helps them. I was in a group therapy for victims of domestic abuse and my "counselor" told me that she hated people like me.
- deleted 12y ago[deleted]
- decasteve 12y agoI had a couple of things in mind. One was means. That you can solve a problem by restating another way, in a way that it's almost indistinguishable from the original. e.g. solving a problem in linear algebra that also solves a problem in graph theory. solving a group theoretic problem that gives you an answer in topology. solving a problem using category theory that gives you a combinatorial answer, using quaternion algebra to compute a rotation, etc. The other thing is that in Math you are often dealing with the same question but with very different objects or variable types. The same question where your numbers could be real or complex, integers or finite fields, vector spaces or topological spaces, etc., change what the "correct" answer to the question might be.
- kirse 12y agoThanks! I had deleted under the assumption it would just get lost in the pile of comments.
- undrcvr-lagggal 12y ago> i.e. more than one way to skin a cat. While this is true, I've always found applying mathematical analyses such as algebraic reasoning to computation admits a single, minimal, canonical solution in the end.
- gsastry 12y agoDid you start an accredited Math degree? If so, how did that work for you, and how did you get into the program?
- tokenrove 12y ago> Part of the reason I began studying math, is that I felt it was my limiting factor. The range of problems I could tackle as a programmer was limited by math. It turns out this was partly true. I started studying math intensely (doing every exercise in books, etc) when I realized the same thing: math was a limiting factor for my programming ability. Michael Abrash hints about this in some article, and I sneered at it until I realized it was true. I considered going back to do a math degree but the amount of hassle involved, as well as other life changes required, made that impossible. I would like to know how it worked out for you. Are you glad you did a degree program? Do you feel you met people and made connections that were valuable, that couldn't be made by an autodidact?
- decasteve 12y agoIt was a big hassle and a big life change. But I've always had in the back of my mind that I wanted to do it and I'm glad I did. I put it off because the money I was making, and the places I was traveling, was too good to pass up at the time. So I saved money with the idea that I would get the chance to go to school. I did try to learn math as an autodidact before I began the degree. The more abstract the math, the harder it was for me to self-study. It was inefficient at best. At worst, I'd hit a wall and not have anyone to reach out to.
- hobbyist 12y agoI am guessing you went for a graduate degree in math. How hard was it to get admission? Would you like to recommend some good schools for doing something like you did. I am just a little younger but hungry for math knowledge.
- tokenrove 12y agoThanks for the reply. My solutions to the problem of not having anyone to reach out to have been to make friends with mathematicians, and to hire grad students as tutors.
- greggman 12y agoI wish more people would scream this from the rooftops. There's that whole movement trying to get more people into programming like code.org and they all say "If you're good at math you'll love this". I feel like that's scaring away lots of people who would otherwise do just fine. Examples, there's almost no math running Hacker News. There's no math in programming most blogs. There's no math in most apps. There's no math in most text editors. etc etc etc. Most programs don't need anything more than arithmetic. I'm not saying math won't help with lots of problems. Like you said you found it limiting at some point. But you managed 16 years as a programmer without much math. I'm in a similar boat. I've shipped 17 commercial games, written 6 game engines, world on Chrome for 5 years. My math sucks. Would I be better if my math was better? Of course! But that I've been productive without much math knowledge shows, at least one data point, that you don't have to be good a math to program
- hugofirth 12y agoI would have thought game engines would require a strong grounding in maths across a lot of their "moving parts"? Not being dismissive, just curious how you found working in that environment without strong maths skills.
- greggman 12y agoModern 3D game engines need math in the renderer, physics, maybe the AI but the majority of a game engine doesn't. Loading files, reading inputs, displaying UIs, the object system, scripting languages, most tools, font rendering, localization systems, game save system, networking system. Nowadays teams either buy middleware for the parts that need math or else they have specialists on the team for those things. On top of that lots of game engines aren't 3D. 2D Mario? No serious math in there, at least not the SNES/NES ones. The 2D Zeldas? Even less. 2D Metroid? Probably less than Mario. Those games didn't use real maths for physics which is about the only place they could possibly use anything more than basic arithmetic.
- numo16 12y ago> I feel like that's scaring away lots of people who would otherwise do just fine. I am much in agreement with this. I know that the guidance counselor on staff when I was in high school would heavily steer people away from going into computer science/programming if they hadn't completed the entire catalog of math classes available at our school. Her assumption was that you needed to be some sort of math wizard in order to be successful in a CS or programming degree.