Live data from Hacker News

How to be a wizard programmer

twitter.com

61–69 of 69 posts

Re: How to be a wizard programmer

#61
post #52
post #30

I'm going to be the token buzz-kill senior dev: If you run into problems none of the senior devs have experience in and have no answers for, my first concern is that you're massively over complicating something we've solved in a simpler and less risk-exposed way. My second concern is that you're intentionally reinventing the wheel in a way that is massively over complicating something we've solved in a simpler and le…

OP is proposing you solve the problem if no one else has a solution. You are proposing to solve the problem by simplifying. I don't think these need to be mutually exclusive pieces of advice.

I think what he's trying to say is that if you find yourself with problems that none of the senior people have had to solve before, it's very likely that you are modeling the target system as the wrong problem. As a strawman example, "how can i make a new class inherit from multiple classes" is attacking the wrong problem (multiple inheritance), but a junior person might not be aware that it's the wrong problem.

Re: How to be a wizard programmer

#62
post #30

I'm going to be the token buzz-kill senior dev: If you run into problems none of the senior devs have experience in and have no answers for, my first concern is that you're massively over complicating something we've solved in a simpler and less risk-exposed way. My second concern is that you're intentionally reinventing the wheel in a way that is massively over complicating something we've solved in a simpler and le…

This is how dinosaurs are born.

"No experience in and no answers for" implies a gap in your knowledge, not a bad question.

Re: How to be a wizard programmer

#63
post #61
post #52

Earlier quoted context omitted.

OP is proposing you solve the problem if no one else has a solution. You are proposing to solve the problem by simplifying. I don't think these need to be mutually exclusive pieces of advice.

I think what he's trying to say is that if you find yourself with problems that none of the senior people have had to solve before, it's very likely that you are modeling the target system as the wrong problem. As a strawman example, "how can i make a new class inherit from multiple classes" is attacking the wrong problem (multiple inheritance), but a junior person might not be aware that it's the wrong problem.

Or the question is "can we solve this better with the actor model", which is what I asked my team last week.

None of us has any experience with the actor model, but rather than dismissing the question, we're investigating.

If the senior people have never had to solve the problem before, how can they know if it's a valid problem?

Re: How to be a wizard programmer

#64

Earlier quoted context omitted.

You're demonstrating why people become afraid to ask questions, and stop doing so even when they should. I'd much rather have someone ask when they get stuck, or even if they're kinda stuck. If someone happens to ask me a question that's easily found via poking around a bit more, I'll show them how they could have found the answer, and then they'll have learned two things: the thing they wanted to know and a new patt…

My experience is that people not asking questions when they should is far less common than not taking the time to think when they should. I've found most people's response to a challenging problem is to ask someone for an answer rather than take the time to use their brain and solve it themselves. This might frequently be the fastest way to solve the problem, but there is tremendous value in learning to apply yoursel…

Worse is when they tell you your code doesn't work. Spend half an hour "debugging" it only to find its their code that is the problem.

Re: How to be a wizard programmer

#65

Earlier quoted context omitted.

>but when you have somebody that supposedly has a few years experience this is just infuriating. You know how sometimes programmers on Hacker news talk about toxic team mates who are hard to work with and bog the whole team down through arrogance? Becoming furious when someone asks you a question and truly wishing they'd waste half a day deriving it from first principals themselves rather than just asking you and hav…

Sir, I have worked with many a toxic team-mate who did nothing but wander around the office, making noise, and getting other people to do their work. Because they didn't do their work themselves they didn't have ownership of it, and it simply "didn't work" and when something inevitably went wrong with it others had to sort it out because it's the team that matters, not blaming an individual. This slowed the overall v…

I have had co-workers claim that they think someone has gone in and altered their code overnight, as it was working yesterday (I ended up debugging the problem for her and fixing it in the end).

That sort of attitude gets seriously wearing.

Re: How to be a wizard programmer

#66
post #53

Something that made my coding skills jump: Attempting to reverse-engineer a extremely large, and known to be well coded by wizards C++-based game. I ended having to learn details on how C++ work (how vtables work? why?, etc...), what some common stuff on the code was (reference-based smart pointers, locks of various kinds, thread-related stuff, alignment-based custom fast allocators, STLPort stuff, etc...), reading p…

I'm curious what would work better. Reading and working for open-source projects or reverse engineering like you did. I noticed that my coding skills became better when I did a reverse engineering class, mainly because I needed to debug a lot more than normal.

Re: How to be a wizard programmer

#67
post #45
post #21

Earlier quoted context omitted.

Parade: always ask "what have you tried?" first. Then it's acceptable to just give just a direction (the simplest of which is "try googling for it") and to tell them to come back when they've tried if the problem persists.

I found this the most useful thing about StackOverflow - it taught me how to both ask and answer questions more effectively. Bad: > "I have an error. What do I do?" Better: > "I have this error: {BLAH}. What do I do?" Best: > "I'm trying to do X. I have this error: {BLAH}. I read the documentation and tried doing Y, but it didn't fix it. How I can I do X?" Similarly, I try to avoid giving answers that are just "chang…

It happened to me as well, and now I think that half of the times I am asking something on StackOverflow, I end up finding the answer myself while writing the question.

Re: How to be a wizard programmer

#68
post #53

Something that made my coding skills jump: Attempting to reverse-engineer a extremely large, and known to be well coded by wizards C++-based game. I ended having to learn details on how C++ work (how vtables work? why?, etc...), what some common stuff on the code was (reference-based smart pointers, locks of various kinds, thread-related stuff, alignment-based custom fast allocators, STLPort stuff, etc...), reading p…

I'm curious what would work better. Reading and working for open-source projects or reverse engineering like you did. I noticed that my coding skills became better when I did a reverse engineering class, mainly because I needed to debug a lot more than normal.

Another great learning experience is taking a code base written in one language and porting it to another. I keep poking around at the old IdTech code and reimplementing parts of it. About the most productive thing I've managed is an extractor for the Wolfenstein 3D graphics files, but I've had fun and reviewed a lot of my C knowledge, along with some dusty corners of the language I was porting into that I don't use much.

Re: How to be a wizard programmer

#69
post #30

I'm going to be the token buzz-kill senior dev: If you run into problems none of the senior devs have experience in and have no answers for, my first concern is that you're massively over complicating something we've solved in a simpler and less risk-exposed way. My second concern is that you're intentionally reinventing the wheel in a way that is massively over complicating something we've solved in a simpler and le…

Part of being a senior dev is realizing that novel problems are extremely rare, and when confronted with one first investigating what's actually needing to be solved before diving into designing a novel (and possibly complex) solution.
Post reply on HN