Succeeding at life is being shiny – living, sure and certain, in your purpose that God gave you as best as you currently understand it, and letting your soul shine. Letting the joy of being you flow out of yourself and everything you do. This is hard to do, and it’s hard to maintain. It’s difficult, and it’s complicated, but it really comes down to two things:
Doing what you’re supposed to do
Not being afraid of rejection for being yourself
If you have both of those going on, in our experience, you’ll have a lot of joy, and a lot of fun. You’ll attract people who like your vibe, and you’ll have an impact in the ways you’re supposed to.
A long time ago (comparatively, time moves very oddly these days…), I (Laine) wrote this post about my experience thus far with the first church I’d ever regularly attended. Coming to Christianity as an adult has been…an experience. Especially as a strong, capable, independent, female (I wish it didn’t matter, but I’m not convinced it doesn’t) adult who is as committed to God as I know how to be.
See, the thing is, I came to Christianity as an adult – I did not come to faithas an adult. My faith is independent of any church, and my relationship with God is the oldest, strongest relationship I have.
We all have good parts of our lives: fun events, good friends, adventures, trying new experiences. We all have bad parts too – deaths of people we love, arguments that end relationships, work disappointments.
In my life, I have had some amazing experiences and some really low lows.
Recently, however, I’ve noticed that something seemed to be broken with how I experienced the good in my life. Even really great things, I didn’t enjoy. I didn’t really notice until I could experience them normally again, but it was like I went numb. I would notice that I couldn’t taste my favorite food, or a delicious cigar…and I would wonder, what is going on?
I realized, some good things are so Big Good that it’s actually hard for me to process them. I get scared…and then I hide from the good. This is super annoying actually, and double bad, because it prevents me from both enjoying the good and also being thankful for the good.
We both recently started traveling a lot for work. Luckily we both like to travel, or it would be kind of terrible – because traveling is a lot of work. We’ve learned a lot about travel in general, and especially work travel, mostly via stumbling across pro tips.
Also…we really think that if you do a thing a lot, you should try to get good at it. You’ll have a lot more room to enjoy the fun parts that way.
If you do a thing a lot, get good at it. You’ll have a lot more room to enjoy the fun parts that way.
We kept saying we should write up a blog about travel tips, so hey we finally did it! Here are our favorite tips, the ones that have helped us the most – we share this with the hope that it helps you. Most of these are focused on work travel, although a lot of it will work for fun travel too. If you know tips we don’t, please drop us some wisdom in the comments, because honestly we’re still learning a lot…
For All Travel Methods
Join Some Loyalty Programs
Pick an airline, and a hotel chain, and use their loyalty programs. Points add up fast! We both like Delta and Marriott, but Laine travels to more places and also has accounts with United and Hilton (we don’t get anything if you click on those links, Laine checked…).
Match Up Your Credit Card Rewards
If you’ll be charging your travel expenses and being reimbursed, it can help to have those expenses on a different credit card than your normal expenses. If you go this route, pick a credit card with good rewards, because chances are good you’ll get to keep those (see above, re: airline and hotel rewards programs!).
Buy Some Grown Up Luggage
You’ll need good, well-made luggage. Luggage is one of those things where you really do get what you pay for. Laine likes Samsonite (which is often on sale at Kohl’s, but Google as you will) soft shell (and therefore expandable) cases in as bright of colors as humanly possible, Josh has a hard-shell case that looks like it could probably withstand an apocalypse or two. Get two different sizes – one that you’ll check when you fly/for longer trips, and one that will fit in the overhead bin and can be a carry-on (more on that in a minute…).
Get a Frickin’ Bluetooth Headset Thing Already
(Amazing Josh rant ahead!)
This is a pet peeve of mine. If I have to walk by another speakerphone conversation while I’m walking, and listen to them yell at their phone and then try to hear over the ambient noise…
…or even worse, holding their phone in their hand and trying to talk on speaker while they’re driving…
…I’m gonna yell at them, and their phone.
(…end, Josh rant.)
It’s much, much easier on your brain to have a headset and talk hands-free. It lets you think less about your hands and more on what you’re supposed to be working on. Most important, it’s kinder on the person you’re talking to, because they don’t get echos of themselves plus all the background noise. A good headset will automatically filter out background and wind noise, so it’ll always sound like you’re sitting in an office, instead of driving or walking outside.
We love the Plantronics Voyager Legend, which, again, we get bupkis if you click on that link (unless you’re from Plantronics/Poly, in which case will work for extra headsets. :D)
Make Duplicates
Packing and re-packing means you’re probably going to forget stuff. One way to avoid this is to have duplicates of the things you can – the coolest example of this was Josh’s coworker who recommended multiple full cosmetic bags. Like…buy an extra toothbrush/toothpaste/face stuff/etc, and keep it in a cosmetic bag that just lives in your suitcase. We extended this pro tip to two cosmetic bags – one for short trips/the carry-on, because you’ll be limited to one clear quart-size ziploc bag of liquids that are each less than 3oz, and one for the big/checked suitcase that has all the things you might need. Think about stuff like nail clippers and tweezers here too!
Sometimes hotel shampoo/conditioner/soap/lotion is good enough, and sometimes it’s not.
Josh: I depend on hotel stuff and keep a little bit of liquor in my quart bag.
Laine: I use hotel shampoo and conditioner, but have stupid sensitive skin and prefer not to chance it with things like lotion/face stuff.
Other things you can and should duplicate between luggage:
medication – luggage can get lost, and you will NOT want to mess around with trying to get an emergency refill in a new city – especially if you take any kind of controlled substance
cords/plugs/batteries – you’ll need to charge your phone, laptop, headset, Kindle, etc…USB hubs or combination cables are great for this
Pack Extra Clothes
Josh: If I check a bag, I always pack one extra pair of clothes: jacket, shoes, pants, socks, shirt, underpants. Just in case.
Laine: I always pack an extra of everything, because I am messy and I tend to spill stuff on myself. I typically pack multiple extra, especially of shirts, because my sensory issues are such that I never know exactly what my brain will refuse to wear on a given day. Being comfortable with traveling is super important.
There are Probably Stores Where You’re Going
Don’t worry too much about packing exactly the right thing. That can make travel stressful and stupid.
There are stores for travelers for almost everything, and you’ll figure it out. Things obviously cost money in stores, and that’s a valid concern – but just like anything else, there’s a threshold of money vs worry and if the worry is too high of a cost, assume that money will help.
Just don’t forget the same thing multiple times or you’ll end up with like six USB-C cables by your luggage at home…
How are You Going to Get There? (drive vs fly and the 4-ish hour rule)
Of the time you spend away from home (away from Netflix or Reddit or blogging or playing Unturned with your kid(s)…), the time actually moving from place to place is the biggest potential waste. So…plan how to minimize it.
Josh: Here’s my thinking: if the total drive time from door to door is less than four hours, I should just drive it. Even with TSA Pre-Check (see below), driving to an airport that has good direct flight options (…see more below) is a 90 minute drive. Add in parking, how much I hate security checkpoints, needing to be early for the flight, the stress of maybe missing flights, limited airport meal choices, and sitting close to 100 other people…then after landing, getting my bags, finding transportation, and being limited to Uber/Lyft + my own two feet if I don’t want to bother with a rental… I should just drive it. It’ll be faster. And less annoying.
Plus flights are expensive and driving is often cheaper – and if you get reimbursed for mileage, you get paid rather than the airports.
Laine: I hate driving, especially alone. ADHD things. It’s boring, and my mind wanders, and I have to sit still the entire time. My phone giving me directions is better than the days of printed-out MapQuest, but… ughhh. Josh is right that the question really starts around 3.5-4 hours, though – I recently went to the same airport two weeks in a row. The first time, it took 4.5 hours to fly when it would have taken 3.5 to drive. The second time, it took 3 hours to fly when it would have taken 4 to drive. This science was also with a very close airport and a direct flight – anything else, driving probably is better.
…also, that first flight was delayed for 4.5 hours, so I guess it really took 9 hours to fly it? Time math is hard.
Flying
TSA Pre-Check
If you fly, get TSA Pre-Check or Global Entry or CLEAR. This post does a great job at explaining the difference, but the basic idea is that these programs allow you to trade money and some personal information for a) faster security lines, and b) not needing to do all of the complicated security things. Pre-Check (domestic) and Global Entry (international, includes Pre-Check benefits) are run by the TSA itself, and CLEAR is run by a private company backed by Homeland Security. CLEAR can also be used at some stadiums/large venues.
Laine was sold on Pre-Check when she realized she didn’t have to take off her shoes or wrestle electronics out of carry-on luggage. We mentioned it was work travel, right? Do you know how many electronics nerds carry for work travel? More than zero. It was only after we tried it a few times that we realized how much faster it is to get through security.
TSA Pre-check is quick to get (we had our known traveler numbers [KTN’s] within 3 business days of the in-person part), costs $85, and lasts 5 years. So worth it for skipping lines if you fly more than once or twice a year.
Pre-Check also lets you bring children under 12 with you through the fast lane, although the other two require every traveler to register.
Fly Direct
Don’t bother with transfers. Transfers are stupid and annoying and risky. Fly direct. It’s faster, it’s often cheaper, and it’s always easier on your tired brain not to need to worry about missing a connecting flight, or to bolt through an airport at the last minute.
To Check a Bag or NOT to Check a Bag – That is the Question
If you’re flying, think about if you need to check a bag or not. Most airlines allow you to have one “carry-on” and one “personal item” – which can be like…a backpack, or a large purse – without needing to check a bag.
Reasons to check a bag:
You can bring more cool stuff, like alcohol, guitars, and spare shoes.
More room for spares for stuff. Or loot.
You can pack your full-size cosmetic stuff/liquids.
Reasons to not check a bag:
Most airlines charge a fee per checked bag.
It takes more time before and after your flight.
You gotta lug more stuff around.
Josh: My rule is 2 days. I can pack for 2 overnights in a carry-on bag, and I don’t keep a big one.
Laine: I can do 3 days, but I really hate the time suck that is checking a bag and would rather pack lighter.
Driving
Get an EZPass or equivalent
If you’ll be driving through states that have toll roads, it turns out that stopping to pay for tolls is dumb. Take a second and get yourself whatever the variant is of a pre-paid pass for the state(s) you’ll be driving in. You can find a list here. We know the most about the E-Z Pass, which works in most of the states in the Midwest.
Don’t Try to Drive + Work for More than About 10 Hours/Day
Josh: If I have meetings with my team(s) and/or my customers, and a drive time that adds up to more than ten hours, I get exhausted. Get a hotel and rest. Not crashing in a car wreck is more important than getting somewhere rapidly.
Stop. Pee. Get Coffee. Be Early!
On the way to somewhere, take breaks, at about 3 hours intervals or whatever works best for your brain.
Leave early so you have time to take these breaks and still arrive early – both because spending four hours worried that you’re going to be late is a lot of stress, and also so that you can do what you need to do to wind down before you have to actually work. Leave yourself enough time for a walk, or a smoke break, or to call someone who helps your brain.
Spending four hours worried that you’re going to be late is a lot of stress. Leave early so you’ll be early.
Conclusions
Like we always say: take care of your brain. You need it to do your job well, and to live your life well. Traveling is a blast, but it’s also definitely work – learn what makes it easier on you, and plan for that. Some of our tips will probably sound ridiculous, and that’s totally fine – the point is actually more that it’s really important to pay attention to how you function best.
These tips, however, are what we’ve found work best for us! Again, if we missed anything, please let us know!
We’re (hopefully) taught some important things as children:
you can do anything you set your mind to, so aim high
we’re all representatives of humanity, and being part of humanity comes with some responsibilities – vote, take care of the environment, take care of each other, etc
do what you think is right, even if all your friends are doing what you think is wrong
A pet peeve of mine (Josh) is messy garages. I was ranting about this to Laine the other day, and an epiphany hit me.
Souls are like garages. Keep yours cleaned the f&$# out.
We are not naturally highly organized people. This is not a rant/post proposing that you itemize, alphabetize, and categorize every one of your possessions, towards living a better life. This is not that kind of post.
However, your garage is made for a specific purpose. We both live in Michigan. It gets cold here. If you have to park your car on the street, or in your driveway, your car gets covered in frost that has to be scraped off with one of the most annoying tools ever created. It also gets covered in snow when it inevitably snows, and regardless of snow or frost, it’s cold in the mornings.
Your driveway is also the safest place for your friends and buddies to park when they come visit you – but if you have to park in the driveway, they have to park in the street.
If you park in a garage, if you use the garage for its intended purpose, you avoid all of this pain.
Garages are for parking. They shouldn’t be filled with cruft and detritus that you don’t need, you haven’t used in years, and you have no real plans to even think about.
“I am the good shepherd. The good shepherd lays down his life for the sheep.” John 10:11
The Bible talks about sacrifice a lot. Sacrificing for each other, sacrificing to serve God. The Gospel, the most important story arc in the Bible, is in part about Jesus’ ultimate sacrifice – his death, yes, but more his complete and utter separation from God when he needed God the most. Unfortunately, over the past 2000 years, the definition of sacrifice has been broken to the point where it’s used to do more harm than good.
There’s a relatively simple list of things that most people want. We want to feel important to our world. We want to be good, kind people – people who aren’t the bad guy, people who deserve good.
We want the freedom to choose what makes us happy, and to find things that make us feel fulfilled. We want to be able to choose the things that fill our souls to the brim.
Conflict
But the people around us don’t always want those things for us. They want us to work in their best interests, and they sometimes get hurt when we instead do what we want or need. When they get hurt, they try to control us into changing. They try to make us feel bad (or good) until we do change, until we do things that don’t make us happy or things that will hurt us – and if that doesn’t work, they decide that we must be an enemy and they begin to treat us accordingly.
Resolution
False Realities
I (Josh) didn’t like reality. Reality kept showing me that people may not always react favorably to the things I want or need – and I was scared of what might happen if I continued to fight for my right to those things. Ultimately, I was scared that they might leave if I continued to take care of myself.
I didn’t value my own soul enough to believe that it was worth taking care of, except…I kind of did. So in response, as a way to feel justified in fighting for my soul, I created alternate versions of people. I made people into monsters – monsters who manipulated me for their own selfish purposes. I saw them as willing to destroy me in order to get what they wanted. And since they were evil, I didn’t have to do what they said – I had the right to take care of myself, and I also had the right to control them into being not evil.
False Realities Believe in the Right to Protect Myself
Some of these people were not trying to manipulate me. I would see people as evil who were just trying to help me face my fears – deeply hidden, pressed down, and blocked away – and I would see people as evil who would shove me at God when I didn’t want to do that.
But…some of the people I turned into monsters were trying to manipulate me.These people weren’t evil though, they were just…afraid. They were afraid of the same thing I was, actually, that if they couldn’t control me or our relationship, I would leave. In their fear, they were trying to destroy me, but sort of as a…byproduct. They tried to destroy me to make me safe for them to love.
What I struggled with was the simple fact that I’m supposed to do what protects my soul, what nourishes and cares for it, and what keeps it whole so that it can serve God to the best of its ability. I don’t actually need to see evil motives in other people in order to do so.
I don’t need to see evil motives in other people in order to protect my soul.
Three Realities
I realized that I believed in at least three realities:
the utopia, a perfect place, without fear or risk, that I had long ago lost all hope of getting to. I was angry at God, because I assumed he was choosing to keep me away- so really it was his fault that I couldn’t get there.
the horror, where the people I loved were evil and trying to destroy me, and where nothing would ever ever be good – where not even God could fix things.
actual reality, where things were mostly good, but not my previous understanding of ideal.
If life was intended to be the utopia, then I had seriously messed something up at some point, despite always trying as hard I could to do and be what God wanted from me. If life was the horror, I thought I could (and should) seize control from God and set my own destiny – but it turns out that seizing control from God never works. I tried, and tried, and tried with all my soul and strength to take control and make the horror world less awful. It was a terrible process, but I realized, eventually, that it was impossible. Also, thankfully, that it wasn’t even reality.
That left only actual reality – and if actual reality was all that was available for me to work with, I was really scared that my life would never be what I wanted it to be.
Oh good, not just me then…
We realized that other people do this too – we saw it happening, we had it happen to us as the objects, and we were confused and hurt when people saw us as demons or monsters out to destroy them. But…then we realized that these people were just really scared. They wanted to control us into doing the things that would make them feel less scared – which we weren’t willing to do. The inability to control us made them more scared, which led to more attempts at control, and…
Scared people do crazy things.
It gave us a lot of new empathy actually. We realized that most of the people who ever did a bad thing to another person…they probably just created a false reality. Every mugger was just keeping himself fed and giving himself the life he deserved – it was only fair, only what he deserved from the people and world around him. Every despot was just preserving freedom or safety for his people – whatever meager amount could be eked out from this cold, dark world. “Because even meager safety in my kingdom is better than the horror of living under their regime.”
At this point, we’re pretty sure that even truly evil people create their own moral justification via false realities. Hitler believed in what he was doing so hard that he convinced thousands of people that he was right – his opinions were awful, and fueled by fear. But he was convincing. He was sure.
Scared people do crazy things.
What’s the answer?
What’s always the answer?
Faith. Trust.
I had to learn all over again how to trust. I had to trust that God loves me – and while he disciplines, he does not punish. I have already been forgiven, so…there isn’t anything to punish.
I had to be willing to see the people I loved, which I had been avoiding in case I was about to see them walk away from me. Once I saw them, I knew that they were not trying to destroy me – or if they were, I didn’t have to let them.
Once I could trust God, and remember that he loves me and wasn’t trying to punish me, it was clear(er) that the utopia probably didn’t exist. And once I could see the people I loved again, and I trusted that they were not trying to destroy me, it was clear(er) that the horror probably didn’t exist either. That left learning how to exist in actual reality, which…is an entirely other blog post.
I really love Halsey. Josh introduced me to her via a roundabout way that included Bishop Briggs and Amazon Music’s stations – and she grew on me slowly, because typically pop music about someone’s bad romantic choices is not my jam. But the more I listen to what she has to say, the more affected I am.
There’s a song called Sorry that I thought I understood. What I heard spoke to some of the broken ways I’ve approached relationships – and then I listened and…I realized it spoke to some of the deeper broken ways I’ve approached relationships.
It’s okay. You don’t have to love me. My fault, seems legit.
So I’m sorry, to my unknown lover, sorry that I can’t believe
anybody ever really, starts to fall in love with me.
This was the first part I heard. My default when I’m scared in a relationship is to retreat – shields up, and hide. In the past, that included looking for reasons that I should retreat – clues that I was about to be hurt, “proof” that the other person didn’t really want me around. And the clues and the proof that I found were always easier to accept if I believed that whatever I found was my fault.
This…well, it some kinda’ worked. It certainly kept me from being hurt – by anyone other than myself. It also made me blind to people truly caring about me, because all I ever saw were the “early warning signs” that the relationship was going to end.
It’s fine that you’re gone. I’m not hurt. Also, it’s still my fault.
I’ve missed your calls for months it seems.
Don’t realize how mean I can be
’cause I can sometimes treat the people that I love like jewelry.
I can change my mind each day.
I didn’t mean to try you on, but I still know your birthday and your mother’s favorite song.
And then I heard these words. And I noticed that she was lying to herself, because if she remembers their birthday and their mother’s favorite song, there’s no way that she actually changed her mind about them. But…again. Blame. “I was mean, I discarded you. It’s my fault you left. I accept that.”
And I know you’ll be happier with someone else.
Someone will love you, someone will love you.
Someone will love you, but someone isn’t me.
…Yep.
But really…I just…didn’t know.
I run away when things are good, and never really understood
the way you laid your eyes on me in ways that no one ever could.
And so it seems I broke your heart, my ignorance has struck again.
I failed to see it from the start, and tore you open ’til the end.
I thought the summary of this song was, “There’s no way you love me, no way you’d really want to. Someone else will love you better than I can, so I’m glad that you left and I’m sorry for the pain I caused you by trying to have a relationship with you.” I thought she was basically choosing, that she was saying “nope, I don’t believe people love me, so I choose good bye.”
This made sense to me. It fit what I thought I was doing when I ran away.
And then I actually heard this verse. And…I realized that the summary is more like, “I…didn’t know that you loved me. I couldn’t see it. And what I could see, I didn’t believe. Because I didn’t believe, I kept you away, and that hurt you. So…you left. So…I will let you go, and I will choose to believe that someone will love you better than I can.”
…and then I realized what I was really doing when I ran away – I realized that I ran because I couldn’t see. This summary explained how it felt to find myself running away when I didn’t mean to – and it explained what I was afraid would happen every time I found myself running.
Why explain this? Good question.
When Josh told me that I should explain what I learned about this song, I sort of painfully asked him why on Earth I would ever do that. We’re pretty open about our souls here, but…this is deep damage. And it isn’t fully healed damage, and…actually I hate that I do it.
I also just…don’t have any stellar advice on how to not do it. I started to learn how to not do it on accident, because of a relationship that was more important to me than the sense of self-protection that came from running away. Since then, I’ve fought through multiple layers of this thing. At every layer, it comes down to deciding which is more important – the relationship or feeling (falsely) safe. I keep choosing the relationship.
The only way I know of to do that, to choose the relationship in the face of a lot of fear and the instinct to run and hide, is via trust – trust the other person and trust God. With trust, I can believe that the people I’m in relationships with love me and will stick around through all of the pain and confusion and…eventual wonder and joy of “figuring it out.” With trust, I can know that if they don’t stick around, God will take care of me – so the risk of them leaving is not enough of a reason to close myself off from people or run away.
But…this isn’t new information or helpful clarification or a good how-to. The answer to most soul damage seems to be trust. And I did not want to talk about it.
And then Josh, in a tricky bit of wisdom, asked me why understanding the song mattered so much to me. And…it mattered because it put words to my broken. It described it, accurately. The existence of words that described my broken told me that I’m not alone in it – and that I’m not alone in being blind to people caring about me. I’ve ruined relationships by retreating when I get scared, and that weighs on me. It scares me that I might do the same thing with the relationships that are so important to me now.
The existence of words that described my broken told me that I’m not alone in it.
I said that my new understanding of the song explained what I’m afraid could happen when I run away. When I run, it feels like no one follows me. And…really, it isn’t up to them to follow, it’s up to me not to run – which I do manage to figure out. Eventually. But…I worry that before I can figure it out, I will run too far. And, having run too far, it will take too long to find my way back, or I won’t be able to find my way back – and that if I manage to get back, by the time I get there, no one will be left waiting for me.
So…ultimately, I think I’m explaining this because hearing the words and knowing I wasn’t alone helped me get past another layer of this broken thing I do. It helped me identify it the next time I did it, and because I understood what I was doing, I knew that trust was the answer – even in the midst of sheer panic.
Sometimes seeing our broken, having the words to accurately describe it, is one of the most important ways to heal. And the words in this song helped me see this jagged stabby place in my soul clearly enough to be aware of when I was inclined to run. And it helped me remind myself to trust instead of run – and it helped make it easier for me to stay.
Our Pair Programming Experience – or, the first time we nerded out together and learned a ton
Pair programming is an agile software development technique in which two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently. (Wikipedia)
Why explain our experience?
At the end of 2017, we were both OpenShift Architects at our last employer. We were working on integrating the new-to-us platform with the existing processes of the organization – especially the build, deployment, and release processes. Most of the applications on OpenShift would be Java applications, and all Java builds were done with Jenkins. There was a release management tool that was written in-house serving as a middle layer to control deployments and releases.
We (the organization) were also in the middle of transitioning from enterprise Jenkins + templates to open source Jenkins + pipelines. There were only a handful of people in the very large IT division who even knew how to write a pipeline – and we took on writing the pipelines (and shared libraries) that would prove out a default implementation of building and releasing to OpenShift. We knew this would be a huge challenge – if done properly, the entire company could run their OpenShift deploys on this pipeline, and it could be improved and grown as more people contributed to it via the internal open source culture that we were building.
We ended up doing this via pair programming – because we work really well together, mostly. However, because we’re both technology nerds and also people/culture nerds, and because pair programming has some push-back from more traditional organizations, we wrote down the benefits we saw.
I know some stuff, and you know some stuff, but basically we’re both noobs…
The team Laine was assigned to was the team that oversaw Jenkins administration and the build process, along with the in-house release management tool – but she’d only been on that team for about 4 months. She knew more about Jenkins than Josh, but….not by much.
Josh was the one who spearheaded bringing OpenShift into the company, and so he knew a lot of the theory of automating OpenShift deploys and had a rough idea of what the process as a whole should look like.
…basically, neither of us really knew how to do what we set out to do, and actually we didn’t intend to do something that fell into the realm of pair programming. We just already relied on each other for many things, including understanding and processing information, and we both deeply loved OpenShift and saw its potential for the company we also loved. We were determined to do as much as we possibly could to help it be successful.
What We Actually Did
Mostly our plan was to just…try stuff. We followed the definition of pair programming above some of the time – we took turns writing while the other focused more on review, catching problems, and planning the next steps. This was awesome, because we caught problems early just by keeping an eye on each other’s work – like, “uhh, you spelled ‘deploy’ D-E-P-L-Y, that’s not gonna’ work…”
Taking turns doing the actual coding also allowed us to churn through research whilestill doing development. We’re both top-down thinkers, which means that we understood the steps that needed to happen without knowing quite how we would implement each step. With one of us researching while the other was coding, as soon as one coding task was complete, we could more or less start right away on the next. Given the amount of research we had to do, this was huge in speeding us up. It also allowed us to switch up what we were each doing, and not get bogged down in either research or implementation.
In addition to taking turns coding vs overseeing, we also did a lot of what might be called parallel programming – we worked closely on different aspects of the same problem at the same time. This was also highly effective, but it required us to be very much on the same page about what we were doing. We did this mostly off-hours, via Slack communication, so…it wasn’t always a given that we actually were on the same page.
Despite the communication hijinks, or maybe because of them (it was really funny…), this was probably the most efficient of all of the coding work we did. If we got stuck or didn’t know how to solve a problem, the other could easily figure out how to help because we were already in the code. We also bounced questions and implementation ideas off of each other (efficiently, because we didn’t need to explain the entire project!), so…something like pair solution design.
And again, up there in overall efficiency, was some pair debugging. We could put our heads together to talk through what was broken (aside from typos…), figure out why it was broken, and land more quickly at the right solution to fix it. (See also: Rubber Duck Debugging)
Two heads are better than one. Often, the part of development that takes the longest or is the most complicated isn’t writing the code – it’s figuring out what to do, and then figuring out what you did to break it and how to fix it.
Having a person there who understands the project as well as you do can speed up…well, literally all of that.
Higher Quality
…virtually all the surveyed professional programmers stated that they were more confident in their solutions when they pair programmed.
Pair programming provides better quality, hands down. We talked about this some already – a pair programmer can catch bugs before compiling or unit tests can, and they can catch bugs all the way from a typo to an architecture or design problem. Pair programming also requires by its very nature discussing all decisions – both design and implementation, at least at a high level.
…basically, you end up with an application where there’s been a design and code review for literally every aspect of the application.
Resilient Programming FTW (or, You Can Still Make Progress Even when Your Computer Dies)
We both had some laptop issues in all of this – Laine had some battery issues, and Josh had his laptop start a virus scan (slowing his computer to the point of being unusable) while he was trying to code. We got on Slack and helped the one who still had a working laptop, rather than that time just…being wasted.
Relationships, and Joy
…more than 90% stated that they enjoyed collaborative programming more than solo programming.
Laughing at mistakes, getting encouragement (or trolling) when we did dumb stuff, nerd emoji celebration when something went well – all of these were better because we were working together.
It was just…fun. There was joy in all of it, in both the successes and the failures. And there was joy in the shared purpose of setting something that we loved up for success.
When making a pair…
There are a few things we learned that were vital to pair programming going well for us. We think that the following pieces are the most important to a successful pairing:
Trust
Without trust, you lose some of the benefit of pointing out mistakes and instead spend the time you’d gain making sure that feelings aren’t hurt. Based on our experience, we actually think that this one is the most important key to success.
Temperament
You’ll want to find someone with approximately the same temperament and, uh…bossy-ness. We went with Bossy-ness Level: Maximum, but you do you. We both push for what we think is the right solution, and we kind of enjoy arguing with each other to figure out whose solution really is right. If either of us had paired with someone who was uncomfortable with conflict, chances are it…wouldn’t have gone well.
Technical Level/Skill/Experience
Pair programming probably isn’t going to work very well with a brand new associate paired up with someone who’s been in the industry for 10 years. That’s a lot of context to explain, so while this set up is amazing for training purposes, it isn’t the most effective for software delivery.
Lack of Knowledge
Look for someone who knows something you don’t about what you’re trying to accomplish. Laine knew Jenkins and is a Google savant, and Josh knew the OpenShift theory and reads constantly – when automating releases to OpenShift, it was a good combination.
And Finally
Pair programming provides a ton of value. It speeds up development, catches bugs sooner, and aids dramatically in design and implementation. It’s also fun, which is important and sometimes forgotten about in the just deliver more world of IT.
We loved working together on this, which led to much joy in learning the deep knowledge necessary to build a pipeline the whole company could use. And, even better, it worked – teams that joined OpenShift used and improved upon what we did, and those teams implemented continuous delivery on OpenShift. We’re both very sure that we never have been that successful if we hadn’t paired up on it.