“… I need to learn how to Google before getting excited.”
No! That’s about the worst lesson you can take as a student. Get excited about things, you’ll learn so much that way.
But the author got it at the end, so all is good :)
I think he meant to use Google before getting excited about “discovering something new.”
That’s exactly what he shouldn’t do.
If he thought “oh, hey, I’m going to google ‘sort with binary tree’” he’d have probably seen that treesort is a thing and wouldn’t have the same excitement and drive to investigate it. It’d be much easier to skim the Wikipedia page and move on. Where’s the excitement there? What do you learn? How do you improve yourself?
Googling first is fine when your code ends up going to production; when you’re a student, you should always assume you’re the first person to crack the problem and proceed accordingly! Even if you’re on a well worn path the excitement of going down it will let you learn so much more…
I don’t mean to sound rude, but that’s engendering a delusion. If you’re not opposed to using a delusion to motivate yourself why just just convince yourself that you will be shot if you stop working. In fact when people get attached to this mindset, when they go out into the workforce they view themselves as God’s gift to programming, with a habit of failing to do adequate research. They ritually reinvent the wheel and pat themselves on the back for being SO SMART. This is terrible mental hygiene. You don’t need delusion to motivate yourself, just get it done.
@owen already made a distinction between learning and production above.
You seem highly focused on the “in the workforce” / production case, while @owen is thinking of educational value outside of the goal to build a product.
There is no educational value in pretending to be the first person to have invented a thing.
Learning to innovate and developing the desire to blaze trails is just as important as listening to a professor tell you about all the different sorting algorithms that are out there.
If people don’t get that in university (or, for self taught programmers, if you don’t develop that yourself) you can end up with the opposite effect: they’re plenty able to solve problems so long as they fit in a narrowly defined scope of what they’ve done and been shown before, but they’re completely unable or uninterested in exploring new solutions and learning new things. A sort of “programming by rote” individual, I guess.
But perhaps we’re both colored by experiences with people who have very different pathologies at play :)
I more or less agree, though even in research rather than applied work, I think it does eventually become important to get a feeling for when something “probably has already been solved”, and be able find that solution rather than reinventing it. It helps to develop an intuition for what someone has probably already studied vs. is probably new, so you can maximize the proportion of your time working on not-yet-solved things, and tie in your work to the existing work, and the established terminology for it. That’s one thing that productive PhD students tend to do better than less-productive ones.
But yeah, probably not when starting out. When figuring out how things work in a new field (or if you’re new to research entirely), it’s more motivating and less overwhelming, and can help understanding, to tackle things on first principles, and it’s fine to re-discover standard solutions.
Sure, you SHOULD reason about a problem, but you definitely shouldn’t pretend there isn’t a solution out there. Very different statements with very different implications. Mess around with it a bit, see what you can accomplish, but also go out and find the accepted answer to the problem, observe that and figure out what makes that tick. If you just do the first part, you’ll end up in an ego trap.
I agree with this. An undergrad probably should attempt to crack the problem (or think of potential solutions) from first principles. Though in a Masters' through research program, you are kinda neither here nor there. You are a student-cum-researcher that is forced to do a lit survey before starting your thesis.
A lightly tangential remark: I will bet anyone a hundred bucks that though the posters' Professor was seemingly nonchalant, he clinked a glass of whiskey that night celebrating the fact that a student of his understood the class and came up with something on his own.
A thousand times this.
Gold at the end:
Besides, if people call Columbus the discoverer of America then I sure as hell can call myself the discoverer of Treesort.
I think there’s a very valuable lesson here. He no doubt gained a much better understanding by doing that simply by skimming something that Google linked him to.
What a shitty professor, at least based on the quote. The professor probably should have been a little more encouraging. “You’ve discovered something called treesort. It is indeed blah blah blah… Let’s talk about heaps! … What if you used those for sorting?…”
Luckily, the author didn’t seem phased by it.
I wonder how he was keeping his binary trees balanced. All the ways to do it seem fairly tricky to come up with on your own.