News for hackers. Stuff that matters.
Re:I was a 10x engineer and I’m sorry by Vinnl on Thursday July 18, 2019 @12:08PM (#20471239)
> there are people out there who are just... dramatically more effective programmers

So... At the start of this week I was trying to solve a bug that only occurred when someone had multiple browser windows open. I usually have just one browser window open.

The person who reported the bug did not mention that they had multiple windows open (and why would they). I got lucky when trying to reproduce it: my testing routine included giving it a try in Private Browsing, which meant opening another window.

If I had not done that, I would not have been able to reproduce the bug. How would such a dramatically more effective programmer have been able to reproduce that bug more quickly?

(Also note that the symptoms did not indicate anything relating to multiple windows. The report was simply: nothing happens when I try to run it.)

Re:I was a 10x engineer and I’m sorry by Verdex on Thursday July 18, 2019 @12:24PM (#20471417)
Aren't you answering your own question here?

| my testing routine included giving it a try in Private Browsing

The 10X programmer (or in this case the 10X bug fixer) has a testing routine that sufficiently covers enough logical scenarios such that they're able to converge on the truth at a 10X speed.

It's basically the same reason why Guess Who is a game. Some people ask better questions that allow them to eliminate irrelevant details at a faster rate.

Re:I was a 10x engineer and I’m sorry by Vinnl on Thursday July 18, 2019 @03:28PM (#20473146)
Well, yeah - in this case, trying Private Browsing helped to find the issue, but only because it opened another Window. That was good enough for me to find it - and I'm probably not a 10x engineer.

Had that not been the case, though, there would have been no indication to try using it with multiple windows open, as the error was a general "nothing loads", which is the result of an error condition anywhere in the code.

Re:I was a 10x engineer and I’m sorry by salixrosa on Thursday July 18, 2019 @08:25PM (#20475250)
I don't think any amazing programmer is immune to every bug. Just imagine a programmer who, when confronted with a bug, is always like "oh, that must be X or Y, we can test that real quick!" (And is right.) What a crazy world that would be.

What I do know is that my programming style is to really dig into every new project I have to work with. Maybe not every part of an application, but everything relevant to the feature I care about. I'm an incredibly judgemental reader (this is sad for personal reasons) and as such, I come up with long lists of "I don't think this would handle that scenario." I don't have time to dig into them, but that list stays there in the back of my mind -- a vague sense that a loop wasn't accounting for a particular kind of array value, etc, etc.

Inevitably, months down the line, some of those bugs surface as actual things. I keep an eye out on tickets, or listen during stand-ups, and I only have to remember just enough of that problem to cut out the investigative time. Eventually I become the person everyone goes to to get them up to speed on any problems within any of the features I've worked in, over people with much more seniority on the team, or often even the people who are responsible for that project. This is also how people seem to always think I've been around twice as long as I have.

I'm not a 10x engineer -- I find it incredibly difficult to stay "on task" and that massively kills my productivity. But the way I approach codebases, outlined above, is just one of many tactics that can, in the right environment, make a programmer far more productive/useful than they would otherwise be.

Re:I was a 10x engineer and I’m sorry by Vinnl on Friday July 19, 2019 @02:50AM (#20476653)
That's a good point: keeping potential problems in the back of my mind for months is definitely an area in which I have potential for improvement.

I guess that's also an additional argument for not being the only person working on a codebase - it's far harder to read it judgmentally if you wrote it.

Re:I was a 10x engineer and I’m sorry by parliament32 on Thursday July 18, 2019 @03:06PM (#20472968)
A 10x programmer would read the description of the bug, and from their knowledge of the codebase think "hmm, that should only happen when you have X loaded multiple times at once making Y happen..." then go on to immediately test and repro with two windows open.

UI dev/QA is a bit different but this is how things typically go in sysadmin-land. A good engineer can hear a description of an issue and immediately pinpoint one or a few seemingly unrelated potential underlying issues to test. This is just a combination of experience and a deep knowledge of the underlying systems and processes that make things happen. The tough part is that this isn't something that's "teachable" -- some guys just "get it", others, while having superficial knowledge of the infrastructure, just can't seem to be able to mentally walk though a system or process and identify where the trouble might be originating from.

Re:I was a 10x engineer and I’m sorry by Vinnl on Thursday July 18, 2019 @03:29PM (#20473155)
> A 10x programmer would read the description of the bug, and from their knowledge of the codebase think "hmm, that should only happen when you have X loaded multiple times at once making Y happen..." then go on to immediately test and repro with two windows open.

I don't think that would be possible, because there are literally hundreds of potential errors that could have the described behaviour as a result.

Re:I was a 10x engineer and I’m sorry by Izkata on Thursday July 18, 2019 @04:51PM (#20473812)
You do it by ruling out classes of errors, rather than one at a time, and drilling down from the ones you can't rule out. For example:

* Application code error should result in an error message somewhere.

* Application server configuration issue should occur for multiple users.

* Something happening to only one user should be caused by either their configuration or what exactly they were doing.

(And I'm sure there's more cases, but this is what's coming to mind offhand)

From another comment, it sounds like this landed in the third bucket - and better, nothing loading meant it wasn't something they were actively doing.

So it's some configuration specific to that user: Something user-specific from the database on page load, browser choice, add-ons, or - as you found - unusual (to the devs) browser usage, like zoom or multiple windows.

Obviously this isn't thorough and could be wrong depending on the situation (note I said "should" in the bullet points, not "will"), but it should help a bit. Even knowing possibilities like zoom or multiple windows is something you get from experience - now that you know it can be a problem and one of the ways it manifests, you'll know to check it next time you see something similar.

Re:I was a 10x engineer and I’m sorry by Vinnl on Friday July 19, 2019 @02:47AM (#20476647)
You're right, it was the third bucket. I guess you're right that experience teaches you about the potential sources of problems; it's just that I can already think of many, many such potential problem sources, and the only strategy I have is trying them out in order of likeliness.

But 10x engineer or not, there's always he risk of running into the least likely problem - or, more likely, running into one of the problems in the long tail of individually very unlikely problems. It'd be nice if one could learn to lessen the impact of those worst cases, but I guess the primary thing one can grow in is making them less frequent.

Re:I was a 10x engineer and I’m sorry by maccard on Thursday July 18, 2019 @12:12PM (#20471278)
A single anecdote doesn't disprove his hypothesis - in this case a more effective engineer might have sent it back saying "can't repro, needs more info".

They also might have looked at the code and said "oh hey, that won't work with multiple windows, I'll just change that".

Re:I was a 10x engineer and I’m sorry by Vinnl on Thursday July 18, 2019 @03:32PM (#20473171)
I wasn't aiming to disprove the hypothesis, merely looking for strategies better than my own.

In this case, I was also the person dealing with the person reporting it. Having had to close it with "cannot reproduce, won't fix" would have been a pretty disappointing outcome, and would make it really hard to discern between a 10x engineer and someone who's just bad at debugging...

Re:I was a 10x engineer and I’m sorry by wysifnwyg on Thursday July 18, 2019 @01:50PM (#20472259)
When I'm addressing bugs in the project I'm working on, especially when the bugs are described vaguely by outsiders, I start by confirming what I know to work. Take the most likely path I can conceptualize them reaching some sort of issue that's similar to their reported issue. While confirming what I know to work, if I'm not encountering anything that indicates that I'm on the right path, I switch over instead to what potential edge cases could be the issue. Focusing on the expectations, assumptions, and behavior I expect to see given what the options are provided (do they have the option to switch between two screens over and over).
Re:I was a 10x engineer and I’m sorry by Vinnl on Thursday July 18, 2019 @03:34PM (#20473190)
Yeah that's mostly what I do, and it generally works well. Sometimes there are cases like this, however, where the observed effect has hundreds of possible edge cases causing it, and I just lucked into observing the right one on my own machine.
Re:I was a 10x engineer and I’m sorry by tuvan on Thursday July 18, 2019 @12:16PM (#20471324)
Are you saying there are no dramatically more effective programmers because you encountered a bug that would be difficult for everyone to reproduce? Even if task X takes the same time for 2 people, one is more effective in the end than the other if they can do task Y in less time/more efficiently/some other performance metric.
Re:I was a 10x engineer and I’m sorry by Vinnl on Thursday July 18, 2019 @03:38PM (#20473223)
No, I was wondering whether this task was of category X, or if it was of category Y and there's some strategy better engineers than me employ that I can learn from.
Re:I was a 10x engineer and I’m sorry by ziddoap on Thursday July 18, 2019 @12:14PM (#20471310)
>How would such a dramatically more effective programmer have been able to reproduce that bug more quickly?

I'm not quite sure I understand your point.

"Dramatically more effective" does not mean "dramatically more effective in every single scenario you can think of."

Re:I was a 10x engineer and I’m sorry by Vinnl on Thursday July 18, 2019 @03:40PM (#20473241)
I'm not really making a point, more wondering whether this is a scenario that has room for a more effective approach. Like most programmers, I'm sure, I approach most errors I encounter relatively confidently, and they usually don't have me struggling for hours.

This one had me baffled for a bit, though, and I was fearing having to spend a couple of days on tracking it down - or having to give up. Sometimes those happen, and it'd be great if there are ways to have that happen less often.

Re:I was a 10x engineer and I’m sorry by username90 on Thursday July 18, 2019 @02:17PM (#20472529)
A 10x programmer would learn from this bug, think through why their current architecture could produce such bugs, write a test suite to ensure that they wont happen again and alter their testing procedures for finding reported bugs in the future.
Re:I was a 10x engineer and I’m sorry by Vinnl on Thursday July 18, 2019 @03:37PM (#20473215)
Alright, so in this case, the bug was produced by querying open tabs for a tab with the property `active: true` (not our API). Apparently, that produces not only the currently focused tab, but the tab that's in focus in every open window - another search param was required to narrow it down to the focused window as well.

What lessons about our architecture could we draw from this? What kind of test suite should we write?

Re:I was a 10x engineer and I’m sorry by travisjungroth on Thursday July 18, 2019 @12:12PM (#20471283)
Uh, they don’t. They also don’t turn on their computer faster than you. But a 10x programmer, while fixing that bug, might eliminate 3x as many bugs in 1/3 the time (so maybe they’re a 9x programmer).