Hacker News new | ask | show | jobs
by zwkrt 1214 days ago
If someone told me that they worked through a whole data structures and algorithms book I would be impressed but I would not be under the impression that they had 'mastered programming' in the sense that I would not be comfortable working with them. I would rather work with someone who has large gaps in their knowledge but is curious and motivated.

I 'mastered' programming by your definition by having a 2 year long internship at a hardware company where I was asked to make a website, write code that interfaced with non-standard networking protocols, and automate the company's garden. I had a whole lot of help from some graduate students that were there working on hardware design and were kind enough to answer the 1000 questions I had.

3 comments

I have mentioned before that I worked as a bike mechanic in college. I came into it able to do my own repairs, and even build a few wheels. But there's a difference between being able to complete a task and being able to complete a task for money. I had to get a lot faster than I would have been at my own workbench, and even then I wasn't really fast enough to be the 'typical college student working in a bike shop'. What I was was thorough when I needed to be, so they put me on fixing returned repairs (nobody wants a customer to come back for a third time) and on Hail Mary wheel repairs, because I knew a few tricks that only the most senior folks knew, but the hourly rates didn't math out.

What I've learned from years of rubbing elbows with other skilled labor is that there's nothing special about bikes or software. It's all the same sort of problem all over. Intellectually understanding a problem is not knowing it in your bones. It's not acting on reflex and intuition without having to exhaust yourself thinking about what to do next.

Oh, yes, this is such a good point.

I spent a few years cleaning hotel rooms and, in hindsight, I did some of the best programming work of my life during that time. In part because I would find insights into a problem by analogizing it to cleaning hotel rooms (many of the fundamental problems are the same, just in a different context), and in part because cleaning rooms is mostly automatic, physical, mindless work and it bought me 8-10 hours a day where I could just think about whatever I was working on at home. That taught me the value of letting your mind "wander" into solutions when you can't reason into one.

This is so weird. Someone self-studies a pretty challenging book on data structures and algorithms and you don't think that makes them curious and motivated to the point that you'd not feel comfortable working with them?

What do you consider to be curiosity and motivation if not someone taking the time and effort to work through something like on their own? The way someone smiles?

I feel like too many people in this profession put down the hard work and effort people go through to study this kind of stuff, as if there's some kind of insecurity towards those who know data structures and algorithms, are good at leetcode, have side projects.

It's like all that matters to people is whether someone comes across as a nice guy they'd like to have a beer with and talks nicely.

> Someone self-studies a pretty challenging book on data structures and algorithms and you don't think that makes them curious and motivated to the point that you'd not feel comfortable working with them?

What you learn in DS&A is nearly orthogonal to many tasks a programmer does in an enterprise setting including

- writing code and documentation optimized for readability by multiple audiences with varying degrees of familiarity - learning and integrating and interfacing with other systems - modeling business constraints - working and tracking project completion in a team

It's not the passion regarding DS&A that raises yellow flags, it's the lack of awareness (though that may be OP's omission) that DS&A familiarity is only one aspect of programming.

Maybe he means rote memorization and studying the answers to the test rather than someone who is actually building and tinkering and wanting to understand how things work and apply that knowledge.
Exactly. When I hear that someone has done the same algorithms book three times, I think of the Brazilian physics students that Richard Feynman encountered [1]:

    After a lot of investigation, I finally figured out that the students had
    memorized everything, but they didn’t know what anything meant. When they
    heard “light that is reflected from a medium with an index,” they didn’t
    know that it meant a material such as water. They didn’t know that the
    “direction of the light” is the direction in which you see something when
    you’re looking at it, and so on. Everything was entirely memorized, yet
    nothing had been translated into meaningful words. So if I asked, “What is
    Brewster’s Angle?” I’m going into the computer with the right keywords. But
    if I say, “Look at the water,” nothing happens – they don’t have anything
    under “Look at the water”!
Someone who's ground through an algorithms textbook three times, but doesn't have significant project experience is like a physics student who can name every equation, but cannot calculate the polarization angle of light reflected off water.

[1]: https://v.cx/2010/04/feynman-brazil-education

    Someone self-studies a pretty challenging book on data structures and
    algorithms and you don't think that makes them curious and motivated to the
    point that you'd not feel comfortable working with them?
Not really, no. There are plenty of grinders who will pick the most difficult book and study it, not because they think it will make them better at solving problems, but because they think it will elevate them above their peers. Why you study is as important as what you study.
Can you elaborate on what it is that causes you to judge someone as incurious and unmotivated?

The fact that I did not learn data structures & algorithms 101 well enough to pass a FAANG quiz means I would probably have self-identified as less motivated than many people.