Hacker News new | past | comments | ask | show | jobs | submit login

This is an utterly bizarre comment, and I have absolutely no idea what to make of it. It seems mostly non-sequitur, and then gets things exactly the wrong way round. I really don't know how to respond - it's almost perverse.

However, there appears to be such a depth of misunderstanding, or non-understanding, I feel compelled to try ...

Having read, re-read, and re-re-read your comment, let me say this. You appear to completely misunderstand the point. I'm not talking about mathematical ideas that have been taken, used, programmed, and made available through libraries. I'm talking about recognizing problems and techniques when they turn up unexpectedly, and in disguise.

Many, many times in my 30 years as a working programmer have I found elegant solutions to previously intractable problems, purely because I recognized some sort of weird mathematical structure lurking underneath. It's my specialty to go into a situation where the domain experts have worked to solve a problem, sometimes for years, to have them explain the problem to me, and then to bring different insights and tools to bear on the problem. I'm not necessarily more clever, or more capable, I just have a different toolbox. And when the problem at hand is unusual, my toolbox is particularly powerful.

You said:

    Somebody outside devops would consider pervasive use of sed, awk
    and other unix text processing utilities line noise.  Yet such a
    thing would come naturally to that person working on it daily.
I have no idea what point you're trying to make here.

    If you can't really get such stuff easily at the very first time
    does it mean you are a bad programmer?  Not quite.
Of course it doesn't. Different programmers have different skill sets, and different experience. Someone who doesn't know databases or web programming may be a wonderfully productive programmer in another area of specialization.

I have no idea what relevance this has to my comment.

    The way I look at it, I would consider somebody good if he can read
    the documentation/theory etc and then come up solution to problems
    (read: can write programs). That way you know the guy can actually
    get some work done. It requires practice and time to get used to and
    comfortable to a new domain. That's natural friction you have to wear
    out. Regardless of whether its math, music, literature of whatever.
    Paying too much importance to factual stuff isn't of much use. What's
    more important is, can the person work his way out of the problem.
Perhaps. My point is that people often dismiss mathematics as useless to programmers because they can't see how this lemma or that theorem can ever be relevant. My point is that the methods of thought trained by the study of advanced mathematics has, in my experience and others', regularly led to deep insights in apparently unrelated problem domains. This ability is not something you can "just read up on." This isn't a case of reading documentation and/or existing theory - this is a case of seeing something as being a disguised example of something else. I've lost count of the number of times I've recognized a matching problem, or a topological separation, or an abstract vector space, or a group acting on a metric space, and that recognition has subsequently led to a new solution.

    I checked out your bio, I understand you do math for a living and are
    obviously a little defensive when some one underplays the importance
    of your area of expertise. But the fact of the matter is though math
    is relevant, the areas in which its relevant are largely either rare
    or are already solved and presented to most programmers as libraries
    and frameworks.  And if its not, simple analysis, a little reading and
    experimenting is sufficient to solve the problem at hand.
Then, with respect, your experience appears to be limited, and your opinions parochial.

    Your problem is not with programmers but with a term called abstraction.
    And fighting that is futile. The benefits vastly over weight any
    intellectual argument you can present against it.
This is just bizarre. I'm a pure mathematician - how can you suggest my problem is with abstraction? How can you possibly think I'm offering any argument against abstraction?



When I said 'your', I didn't mean 'you'. I mean't the problem with 'your argument'. I apologize if this has hurt you. Its like code review, I was intending to critique your argument, not you.

Yes, I agree my experience is limited. In fact now that you mention you have been a programmer for 30 years. I now realize I have much more to learn and understand, Its possible I have simply don't even know what you know and how deeply you understand things.

What advice would you give to some one like me.


  > I meant the problem with 'your argument'.
To recap the discussion:

==========

Chirono: I find this comment interesting given the recent ... talk about not using maths puzzles in programmer interviews. This is perhaps an interesting real-world case that demonstrates how a mathematical outlook leads to much cleaner code.

thomasz: The secret sauce here is not the ability to solve "maths puzzles", but specialized domain knowledge.

I replied: That's exactly the wrong way round. You can acquire domain knowledge, you can have a domain expert assigned to you to work with you. What you can't acquire, on demand, is the ability to think in the ways that mathematics gives you. That requires extensive training and practice, and recognizing when obscure bits of theory are applied is something that doesn't come overnight.

==========

So my argument is that while domain knowledge is a good thing, and (jacquesm eloquently argued) often necessary to solve a problem, it usually can be acquired as needed through reading, study, and discussion with local experts. The ability to recognize, let alone solve, problems that are actually obscure mathematics in disguise cannot be acquired on as "as needed" basis. This is why knowledge of advanced mathematics needs to be gained early, and if you don't have it by the time you are a practising, working programmer, you are unlikely ever to acquire it.

Not having acquired such skills does not make one a bad programmer. I know very, very few programmers who hold advanced degrees in mathematics, and yet the world is full of programmers who can "get the job done" efficiently and effectively. Equally, having skills in advanced mathematics does not, of itself, make one a better programmer (and certainly not a better person.) I know many PhDs in mathematics who simply cannot program effectively.

But it does make one a programmer with different skills, and those skills can enable one to solve problems others can't, and sometimes to produce solutions that are more elegant. Not always, not every problem requires such skills. But if it does, by the time you find the problem, it's too late to acquire them.

  > What advice would you give to some one like me.
I don't know what you like, what skills you already have, or what you want to end up doing. I studied math because it was fun, exciting, and I was good at it. Computers at the time didn't exist in the form they do now - maybe I would have done computing. Impossible to say.

So I can't give advice - there would be a real danger of simply trying to turn you into a clone of me, and that's a bad idea. I can tell you that understanding algorithms, time-complexity, calculus, vector spaces, and point-set topology have all been of direct and immediate use in my work.

And if you'd like a simple puzzle, here:

    Suppose the demand for a product falls linearly as a function
    of its price.  Show that if you price the product to maximise
    your profit, you will have less than half the possible market.
That turned up a few years ago in a discussion with a customer.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: