(no subject)
Aug. 29th, 2018 09:41 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
You know that old thing about how as you get old you walk into a room and can't remember why?
I'm increasingly fighting the opposite problem. I feel so short on time that I do this optimization process: I should go downstairs and move the sprinkler line. But if I'm going downstairs I should take the trash bag down because it needs to go in the can and out to the curb anyway. But if I'm going out to the curb I should get the replacement turn signal bulbs out of my car. But if I'm going to get the bulb I should grab a screwdriver so I can pull off the spitfire bulb cover and replace it. But I don't have enough hands to carry all those things. And then I freeze while I try to reoptimize my path.
Is this better or worse?
My manager came in and tried to help me with my project. About two hours in he was clutching his head and saying "this is a nightmare." However, we did make a bunch of progress, because I started detailing every single step of what I was doing, including stuff that seemed really obvious, and it turned out what seemed really obvious was wrong. There's this board, that I have to reflash firmware onto, which I do by plugging the usb cable into the debug port. Every other system I've used, you continue with the cable plugged into the debug port, and nowhere in the instructions does it say to change that, but when I was detailing what I was doing to some other people via the phone, one said "wait, no, you unplug it after loading the firmware, then plug it back in again, and that sets up the comm port for that side, and then you unplug it and plug in to the target instruction side and interface from there."
I wish I'd known that a week ago. Or two.
ANYWAY. So I did that, and then the board didn't even show up: refused to enumerate as a usb device. I measured and it had no power. So I'm all "you SURE this is how this works?" and he replies "oh, you have to change a jumper setting so it gets power from that usb port." I do that, still nothing, he says "you must have something wrong, because it works for me" and then another person chimes in "oh, wait, I just tried it and it doesn't work for me." There's a silence, and the first guy says "oh, I have a custom firmware package that enables that, and I forgot."
That was one of the points where my manager walked out of my office without saying anything and just walked around the building for a while, as I dealt with talking to them.
So I plugged in both cables and ran the software I'd written almost a month ago and it ran just fine.
sigh
well, not just fine. I ran it, not paying close attention, just seeing what happened, and all sorts of errors showed up about halfway through, and I shrugged because I figured that was not surprising, and ran it again, and now the errors showed up at the second step, and that was surprising, and by then my manager was back and anxious about why that was messed up and why a program wasn't deterministic: it should run the same each time, right?
Except the first pass, it (invisibly, but I happen to know) allocates a block of memory as a buffer for communication, and because the program is crashing, it cannot deallocate that block of memory, so a subsequent initiation blows up because the memory allocation call fails.
I felt really clever to figure that out within about five seconds of it happening.
I'm hoping the experience has convinced my manager that I do know what I'm doing if I have accurate documentation, and that if I have some time, I can work around documentation that is missing things and expert opinions that are flat-out wrong. I think all he saw up until now was that I was spending days of effort and getting nothing, when I was actually getting a lot of experience on what should be happening and how it was likely failing.
I'm increasingly fighting the opposite problem. I feel so short on time that I do this optimization process: I should go downstairs and move the sprinkler line. But if I'm going downstairs I should take the trash bag down because it needs to go in the can and out to the curb anyway. But if I'm going out to the curb I should get the replacement turn signal bulbs out of my car. But if I'm going to get the bulb I should grab a screwdriver so I can pull off the spitfire bulb cover and replace it. But I don't have enough hands to carry all those things. And then I freeze while I try to reoptimize my path.
Is this better or worse?
My manager came in and tried to help me with my project. About two hours in he was clutching his head and saying "this is a nightmare." However, we did make a bunch of progress, because I started detailing every single step of what I was doing, including stuff that seemed really obvious, and it turned out what seemed really obvious was wrong. There's this board, that I have to reflash firmware onto, which I do by plugging the usb cable into the debug port. Every other system I've used, you continue with the cable plugged into the debug port, and nowhere in the instructions does it say to change that, but when I was detailing what I was doing to some other people via the phone, one said "wait, no, you unplug it after loading the firmware, then plug it back in again, and that sets up the comm port for that side, and then you unplug it and plug in to the target instruction side and interface from there."
I wish I'd known that a week ago. Or two.
ANYWAY. So I did that, and then the board didn't even show up: refused to enumerate as a usb device. I measured and it had no power. So I'm all "you SURE this is how this works?" and he replies "oh, you have to change a jumper setting so it gets power from that usb port." I do that, still nothing, he says "you must have something wrong, because it works for me" and then another person chimes in "oh, wait, I just tried it and it doesn't work for me." There's a silence, and the first guy says "oh, I have a custom firmware package that enables that, and I forgot."
That was one of the points where my manager walked out of my office without saying anything and just walked around the building for a while, as I dealt with talking to them.
So I plugged in both cables and ran the software I'd written almost a month ago and it ran just fine.
sigh
well, not just fine. I ran it, not paying close attention, just seeing what happened, and all sorts of errors showed up about halfway through, and I shrugged because I figured that was not surprising, and ran it again, and now the errors showed up at the second step, and that was surprising, and by then my manager was back and anxious about why that was messed up and why a program wasn't deterministic: it should run the same each time, right?
Except the first pass, it (invisibly, but I happen to know) allocates a block of memory as a buffer for communication, and because the program is crashing, it cannot deallocate that block of memory, so a subsequent initiation blows up because the memory allocation call fails.
I felt really clever to figure that out within about five seconds of it happening.
I'm hoping the experience has convinced my manager that I do know what I'm doing if I have accurate documentation, and that if I have some time, I can work around documentation that is missing things and expert opinions that are flat-out wrong. I think all he saw up until now was that I was spending days of effort and getting nothing, when I was actually getting a lot of experience on what should be happening and how it was likely failing.
no subject
Date: 2018-08-30 05:03 am (UTC)Glad your manager had that experience. I would think it should help him to be more understanding.
no subject
Date: 2018-08-31 04:54 am (UTC)no subject
Date: 2018-08-30 07:05 am (UTC)I optimize like that too, only I cut myself off at about three or four steps since that's generally how many hands I have. The place where I go further than that is when I'm leaving the house in the morning for a whole day, and I have to figure out everything I need for the day. (Yesterday: yoga mat, work laptop, date clothes, motorcycle stuff, tea canisters for refill. Today: present for friend, Crossfit outfit, running shoes, Kindle, mail.)
no subject
Date: 2018-08-31 04:56 am (UTC)And, yeah, I'm increasingly finding myself making tiny lists of things. I've found I can reliably remember four things, but if I try six, I only have about 50% success.
no subject
Date: 2018-08-30 02:24 pm (UTC)I think this work experience kind of summarizes a lot of programming-related frustration, in a nutshell. We solve the easy stuff quickly, but getting stuck and working through the harder problems is often a nonintuitive, non-linear experience. And we always feel dumb when we start to figure out where things have been going wrong. But VERY GOOD to have your manager present to see what it's like and see you fight the dragons. :^)
no subject
Date: 2018-08-31 04:58 am (UTC)no subject
Date: 2018-08-30 03:46 pm (UTC)Congrats on no murder!
And go you on problem spotting!
no subject
Date: 2018-08-31 05:00 am (UTC)For one thing, he's a product line manager, which is like three rungs above me in the direct hierarchy, and a bunch more in the technical ability hierarchy.
no subject
Date: 2018-08-30 05:02 pm (UTC)About the task-optimization stacks: Yeah, me too, and usually I'm figuring out how to configure stacks of really really boring tasks, which is an exponential level of boring.
My commiserations. :(
no subject
Date: 2018-08-31 05:02 am (UTC)One of the problems I face is finding a way to present that documentation so that other people can find it. The two programs I wrote tonight (same program, in two languages) are likely to be really useful to someone else, but my company lacks a good way of sharing it in a way that is searchable.
I wonder how often that's the case for other people.
no subject
Date: 2018-08-31 11:02 am (UTC)no subject
Date: 2018-08-30 08:04 pm (UTC)no subject
Date: 2018-08-31 05:04 am (UTC)https://xkcd.com/1319/ seems even more relevant.
https://xkcd.com/1445/ seems so incredibly relevant it makes me want to cry.
no subject
Date: 2018-08-31 05:34 am (UTC)I think my turdpolishing tendencies are a corollary of FOMO.
no subject
Date: 2018-08-31 06:56 pm (UTC)no subject
Date: 2018-08-31 11:05 am (UTC)no subject
Date: 2018-09-01 12:39 pm (UTC)Yeah, I get that.
Glad you were able to figure things out. We're having similar problems, but less luck.