In practice, you should have at least one independent reviewer who did not actively worked on the PR.
That reviewer should also download the entire code, run it, make tests fail and so on.
In my experience, it's also good that this is not a fixed role "the reviewer", and a responsability everyone in the team shares (your next task should always be: review someone else's work, only pick a new thing to do if there is nothing to review).
Yes it does. There are many ways to do things, of course, and you can institute that there must be an independent reviewer, but I see this is a colossal waste of time and takes away one of the many benefits of pairing. Switch pairs frequently, and by frequently I really mean "daily," and there is no need for review. This also covers "no fixed responsibilities" you mentioned (which I absolutely agree with).
Again, there are no rules for how things must be done, but this is my experience of three straight years working this way and it was highly effective.
Mixed-level pairs (senior/junior), for example, are more about mentoring than reviewing. Those sessions do not qualify for "more than one pair of eyes".
Excited (or maybe even stubborn) developers can often win their pairs by exhaustion, leading to "whatever you want" low effort contributions.
Pairs tend to under-document. They share an understanding they developed during the pairing session and forget to add important information or details to the PR or documentation channels.
I'm glad it has been working for you. Maybe you work in a stellar team that doesn't have those issues. However, there are many scenarios that benefit a lot from an independent reviewer.
The problem with most people's experience with pairing is that they are given no guidance on how it should be done outside of "just work with someone."
In terms of under-documentation, I didn't really find that. Most of my jobs have either been way under-documented, way over-documented (no one reads it and it gets outdated). Again I'll say that I find switching pairs daily is key with no one person stay on for more than 2 days in a row (so if a story takes three days to complete, the two people who finished it are not the same two who started it). This keeps that internal knowledge well-spread.
But you're right, if you're dealing with overly excited/stubborn folk who refuse to play ball, that's obviously not going to work. Conversely, if you have a trusting team and someone is having one of those days where they feel useless and unmotivated, pairing can turn it into some kind of useful day. This could be because your colleague gets you excited or, if you have high trust, I've literally said and had people say, "I'm not feeling it today... can you drive all day?" and you're still able to offer good support as a navigator and not have a total write-off of a day.
To the point of improving an otherwise bad day, one of the more interesting arguments against pairing I've heard is that companies use it to make sure everyone is always working. That would indeed be sad if that was the motivation.
Pairing people together on a single task makes that task get done faster, with higher quality. However, when paired together, the people still pick up some of the same biases and hold the same assumptions and context, so it is really worse than having a single author + independent reviewer.
So:
single author, no review < pair programming, no review < single author + review < pair programming + review
Is this pairing on small tasks that get done in (less than) a day? Or do you also have longer-running implementations (a few days, a week, or maybe even more?) where you rotate the people who are on it (so one task might have had 5 or 10 people on it during the implementation)?
If the latter, that sounds very curious and I'd love to learn more about how is that working, how do people feel about it, what are the challenges you've seen, and what are the successes? It'd be great to see a write-up if you've had this running for a longer time!
If it's only the former (smaller tasks), then this is where biases and assumptions stay (within the scope of that task): I still believe this is improved with an independent reviewer.
I do have a blog post about this sitting around along with all my other mostly completed posts. Finishing this one would be great as it's a topic I'm very passionate about!
Our stories were broken up to take worst-case-scenario 5 days, the ideal was 1-3, of course. Maybe would be multi-day stories so yes, if something ended up taking 5 days it was possible the whole team could have touched it (our team was only 6 devs so never more than 6).
In short, there are the usual hurdles with pairing, the first one being that it takes some time to catch your stride but once you do, things start flying. It is of course not perfect and you run into scenarios where something takes longer because as a new person joins the ticket, they want to tweak the implementation, and it can get pulled in different directions the longer it takes. But this also gets better the longer you keep at it.
There are lots of pros AFAIC but a couple I like: you develop shared ownership of the codebase (as well as a shared style which I think is neat), ie, every part of the app had at least a few people with lots of context so there was never any, "Oh, Alice knows the most about that part of so let's wait until she's back to fix it" kinda thing. There is no "junior work." When a junior joins the team they are always pairing so they ramp up really quickly (ideally they always drive for the first several months so they actually learn).
Another downside would be it's bad for resume-driven-development. You don't "own" as many projects so you have to get creative when you're asked about big projects you've led recently, especially if you're happily in an IC role.
And also yes, if there is a super small task that is too small to pair on, we'd have a reviewer, but often these were like literal one-line config changes.
We'd also have an independent reviewer whenever migrations were involved or anything risky task that needed to be run.
I couldn’t find the right combination of search terms to provide a citation, but I’ve heard stories of plane crashes where locals took the flight data recorder or other critical pieces of evidence from the scene before officials arrived. Rewards had to be announced and paid out to get people to bring back parts so that investigations could proceed.
I picked up my first two last year - they require a decent amount of maintenance -- more the older they are.
Home use only machines will be in better shape - my 2018 Stern pin (3rd owner, home use only) has only really needed replacements of the coil stops and sleeves for the the upper flippers.
On the other hand, my 2002 Stern machine (3rd owner, but first was on location in a Century theater where it saw thousands of plays) required in just two months of ownership:
- diagnosis and replacement of a bad bridge rectifier for the controlled lights,
- new plumb bob (machine info showed it had never reported a tilt before - looks like it had been removed before ever been played),
- clear mylar patch on the playfield near the plunger lane exit,
- replacement of the main power cable -- someone had ripped out the third/ground prong (which is apparently very common),
- redoing the connections inside the power box -- someone had decided all the connectors should just live in giant solder balls.....,
- replacement of the coin door lock mechanism,
- replacement of a flipper return spring
and it has a few cracked pieces of protective plastic that just aren't worth trying to find replacements for.
In total all together that's still less than $50 in parts, but figuring out the lights issue took weeks, and some of these required soldering. (And desoldering! I strongly recommend the Hakko FR301 desoldering tool instead of mucking about with copper braid.)
For the prices you listed, I would guess you're looking at older machines, which will probably have more issues sooner than new (but not brand-new!) pins. I suggest pinside.com for the classifieds and also the "_X_ Machine Owner" forum threads which might have game-specific info for you. Stern has very detailed manuals, and pinballlife/marcospecialties have just about every part you might need when you do have a problem.
This is the best, most helpful message I've ever received in response to something I've typed on the Internet. I'll take it to heart, thanks boss.
Edit: to further take advantage of your kindness, let me ask you a question: it looks like an old bowling alley near me has several machines reported to be non functional, including an Elvira and the Party Monsters. In your humble restoration opinion, would it make sense for me to stop by and give them the old "eh it's busted? Maybe I can do something with it. Sell it to me for $400?" type spheel and see if I can dump ~$700 into it to get a functional machine for a good price? I wouldn't be looking to resell.
https://pinside.com/pinball/machine/elvira-and-the-party-mon...https://www.afpinball.com/restorations/system-11b-mpu-batter...
Aww I'm glad it helped! I wanted to illustrate the amount of upkeep it takes to even keep a machine that was already about 99% working from disrepair.
I think you could give the offer a shot, but it looks like the market is a good bit higher - the bigger the discount the more you're probably going to have to work to get it operational. It looks like you've already got a headstart on that, so if none of this is scaring you off, I say do it! My two machines are Whitestar and Spike2 systems, and are from Stern, which is still operating. My concern going for Party Monsters would be that System 11(B?!) boards and replacement parts may be in short supply, and I can't comment on the quality of documentation for it all.
Watch out though - I see posts about mods in the game thread. My newer machine came with 6-7 already installed by the first owner, which got me hooked. At this point I've added another 25 or so... I think I spend as much time working on these machines as I do playing them (but my goal is to make my own machine, so every piece of work comes with learnings and better understanding of what's in store for me.)
Post back here later and let me know what you end up doing!
You're making good sense about the pitfalls, and I think these might be great for me to bring up when negotiating price. It looks to me like the machine is in pretty good shape for its age and being a bowling alley machine. It also has a topper (that I didn't get in the photo) and seems stock. https://ibb.co/pZV1Vx5
When I arrived the lights in that area weren't even turned on in that section of the building because, as they said, most of the machines are broken. It can't be making him money if it's not even worth it to the run the lights. The out of order paper in the machine looks like it has been there for 5+ years (it could be used on different machines when they go out but I don't think so).
If I can swoop in and buy it for $500 or less I think I'm going to. I have to keep it low on the off chance I end up with a paperweight. My wife won't be thrilled about the booby lady pinball but at that price she can't get too mad. I'll home it at a buddy's house for now if it comes to it.
I'll keep you posted about any developments, thank you again for your help.
To get that game for $500 I think the owners would need to be at a point where they're sick of it and just want it gone.
A couple of thoughts:
1. Games on location are often not owned by the location, but instead owned by a third-party operator that is responsible for maintenance and splits coin drop with the location.
2. Since the game is on location it was probably playable at some point recently. It may be off because of something simple like a rubber ring breaking and the ball keeps getting stuck or an important switch not registering, but the operator hasn't had a chance to fix it. If it was recently and only needs minor work, its value is more likely to be $5,000 than $500.
3. Even if it has been broken and not working for years, its value would heavily depend on the cosmetic condition. A non-working machine with a great cabinet (artwork without fade, no dings) and no wear or damage to the playfield would still probably be worth closer to $2-3,000.
You're making good points.
1. I neglected to mention that I confirmed the owner owned the machines. The employee I spoke to said she was going to approach the owner about purchasing the pacman machine herself.
2. The location seems like it's being kept alive by bowling leagues. I wouldn't be shocked if it wasn't there in five years. They quite literally do not turn the lights on in this section of the building.
3. You're right that I'm off on the price, but I'm starting with 400. If he wants to try to sell it online and ship it or deal with the arcade two cities away he can, but it's a question of how much it's worth it to him. I bought a grandfather clock six months ago for $100. It never hurts to ask. I won't weep or be rude if it doesn't work out. I've found I can get great prices on low volume stuff.
I don't particularly think it will work out, I just need to try so I can throw my hands up in the air and answer my original question in this thread with "I don't own one... because they're too darn expensive".
But dag on I want it. Elvira is calling to me.
You've also given me great information in this thread, thank you.
Idk, once fixed my machine the first time after buying it, I haven't had to fix a thing in 7yrs.
Star Race, 1980
Hired a tech to resolder some switches and then replace the main board with a maddog and I literally have done nothing to it since 2017ish and even then that was just putting new flipper rubbers on...
It actually doesn’t seem to qualify as an electromechanical pinball machine at all. Given the 17 computers in control and modern playfield mechanisms and sensors, it is almost certainly considered a solid state pinball machine.
EM machines use much older tech - look at Gottlieb machines from the 40s-70s. Even they switched to SS by the end of the 70s
That's a pinball-specific nomenclature. From the outside, all the games are "EM": the primary nouns and verbs of gameplay occur relative to those mechanisms. The distinctions of "SS" and "DMD" exist mostly to describe the shifts in rulesets, servicability and audiovisual feedback.
I think y’all are both right and I appreciate the additional contexts. It’s just awkward to headline the article with a term that has a pinball-specific usage and not define it or dig into it a bit more.
I’m super impressed though Andy, did you use MPF or something else to program it? I’m only just dipping my toes into building my own pin, it’s quite intimidating realizing the breadth of skills required.
EDIT: another post clarified that it is on MPF - nice!
It was prototyped on MPF. But I later refactored and used a more direct API for the P3-ROC. Because these games are nothing like typical pinball. And because I'm allergic to frameworks. The direct API isn't public but I can share it with you if you want.
Nice! Direct access seems like the way to go if you're not worrying about the single player modes and shot structures, and if all the sound is from the physical interactions. I appreciate the API info offer, but I've already got the FAST Neuron controller, so I think it's a different path for me
I’ve been pairing at all but one of my jobs in the last ten years, and love it, but I found mobbing to almost always be a driver, a half engaged navigator, and a third basically napping or distracted by a smartphone.
The devs in question were experienced in pairing and happy to do it, but I pretty much always found adding more than a second head was effectively net neutral if not negative.
So I’d love to learn how to make mobbing better for the rare times it comes up. What do you have to change or be more disciplined about to make mobbing a net gain?
We don't have that issue really. We do remote mob programming (all day long zoom call + https://mob.sh/ ) so we see everyone while we work.
The issue we do have is that sometimes myself and my other senior dev end up Navigating too much, leaving our more junior developers to not contribute as much. When I catch ourselves doing that I'll just ask the other sr dev to step back for a little bit and allow the others to step up.
Thanks for the response! I guess the big difference is being on camera. My team has been 100% remote of course since Mar’20, and split across SF and Toronto for the most part.
We use Zoom for cross discipline meetings (and nearly everyone has camera on most of the time, though there’s no explicit rule) but discord+drovio for remote pairing. Discord has been nice for the ability to drop into another pair to ask for help, or for non devs to know who is pairing and drop in as well.
One other thing I’ve noticed is that some team members play music in their headphones while pairing/mobbing. While the others can’t hear it, it’s certainly not helping our communication or focus… and it certainly feels disrespectful to me.
I've done all day Zoom/VC mobs, and that sounds exhausting as hell to me. Different strokes and all, but programming this way really takes the fun out of it.
We solve this three ways. 1. We don't do a full 8 hour day, 2. We take breaks every hour, 3. we keep it entertaining by joking around with eachother while we work.
We thought it was going to be exhausting like you said, and one of our guys even brought up that he was very introverted and didn't know if he would be able to do this. To our surprise, the days go by faster (not just because they are shorter), we get done with more work than we did before, and although yes we are tired after working all day, we all look forward to doing it again the next day.
It's true, mobbing isn't for everyone. But for us it couldn't have worked out better.
Yeah I find that I can remote pair for maybe 5-6 hours a day. Catching up on non pairing work things (email and slack and whatever) takes another hour or two, and I’m beat by 4 or 5.