Parenting Makes Me a Better Developer

Note: This post was inspired by a series of pieces I wrote in an attempt to work out some friction between myself and a coworker as we tried to do some pair programming 

The Horror of the Mirror

Confession: I hate introspection. I’m really bad at it. I’d much rather you just tell me what’s wrong with me (and then let me be offended for a bit before I realize you’re right) than be forced to figure out something about myself on my own.   

That having been said, in an attempt to be a better team-lead/coding-mentor I bit the bullet and delved into the scary place that is my mind.  When I had finished, I realized that I have 2 modes of operation when I’m working through a problem.  Unfortunately, neither mode is particularly conducive to working closely with someone. 

Here’s the fact sheet on those modes:

  1. Figure it out mode (aka Pull Over and Let Me Drive Mode) - Active under the following conditions:
    • When I’m trying to wrap my head around something
      • Involves lots of scrolling, window switching, pondering, sighing, finger on my nose/chin, and silence.
    • When I really don’t know exactly how to get where we need to go
      • Involves countless cycles of the following sequence: Make Small Change -> Save -> Run -> Check Progress -> Repeat.
  2. Teaching mode (aka Let Me Tell You Why You’re Wrong Mode) - Active under the following conditions:
    • When someone yields to me as an authority on a product/process and asks for assistance
      • Involves many questions along the lines of “What was your rationale for doing it this way?  It could certainly be made to work like that, but if it were me, I’d do it like this...”.  Accusatory tone and looking down your nose at the target of the questions are optional, but highly likely to accompany said questions.
    • When I’m not driving, and the other person is trying to implement something that we’ve talked about
      • Involves interruptions such as “Uh, are you sure about that?”, “Wait, what are you doing?”, “So, yah, that’s not exactly what I was talking about when I said...”.  These generally result in a conversation that ends in me entering Mode 1 in order to move on

I know what you’re thinking.  “Man Dustin, you’re such a jerk face.”  You’re probably right.  But if you’re a programmer, I’d wager that you are either just like me or work with someone just like me. 

Now What?

It turns out that the introspection is really the easy part…probably because there’s the added pressure of social interaction. 

Mode 1 is still a challenge for me.  When I’m being looked to as the expert/authority and I don’t know the answer, have any direction or any suggestions, it triggers an egotistical competition reaction. Right now my solution to finding myself in Mode 1 is to disengage as gracefully as possible and work on separate computers. I try to maintain as much communication as possible while doing so, but I still tend to turtle up in concentration. 

My improvement in dealing with mode 2 is a different story.  The longer I’ve been a parent, the better I am at handling authority.  I’d thought about making some crazy claim worthy of a Hacker News link that compared developers to children, but let’s not be dramatic about something that’s so obviously true.

Parenting and Programming

Seriously though, here’s a list of things I’ve found myself transferring from parenting to working with other programmers.

Everyone is different and everyone approaches a problem differently.

Parenting

My two daughters think very differently, and thankfully neither is unfortunate enough to think like me.  Approaching situations, puzzles, problems, discipline, etc. has to be customized for each child. It has taken time to understand each one, and doing so will be a constant endeavor as we all grow.  However, enabling each to solve problems in their own way allows them the sense of freedom needed to really own and take a hold of it…and learn.

Programming

Just as my daughters don’t think like me, I have yet to meet a teammate who is unfortunate enough to think like me. It has taken some time to embrace this and let my teammates go about things in the way that their mind works.  Sure I can provide suggestions and best practices, but in the end, if I want someone to really own a piece of code or a feature, they’ve got to feel like more than just a code monkey doing my bidding.

Don’t sweat the small stuff.

Parenting

Because I know what my kids are capable of, I have high expectations for how they act and behave.  I want to see them at their best 100% of the time.  However, I have to remind myself that they are still just kids.  They’re going to screw up.  They’re going to fail to meet my high expectations of them.  It’s okay.  Life will go on.  Now, there are still some things that are absolute non-negotiable.  My wife and I make it abundantly clear what those are and we “strongly encourage” those rules to be abided by.

Programming

Code quality and documentation standards are your main non-negotiables. There are some others that will come from your experience, such as code’s maintainability, modularity, etc.  Decide what you’re not willing to bend on, and then don’t be a jerk about the other stuff. If it works, passes your list of “musts,” and moves your product towards the requirements, simply provide guidance and suggestions, and then let them make their own decisions.  Your blood pressure and the relationship with your teammate will thank you.

Celebrate successes and be encouraging

Parenting

One word of encouragement or positive reinforcement is worth ten words of correction.  Little girls just want to make their daddies proud.

Programming

In this industry, there’s a culture of egotism and narcissism.  News flash: you’re not the only person who can be good at programming. It’s okay to tell your teammates that they did a good job.  It doesn’t make you look worse.  It may even make them want to do better, which…gasp…may even make you look better.

Final Thoughts

Like I said at the beginning of this heap of words, I wrote a lot of this for myself, but I hope that after reading this you at least give some pause to how you can be a better teammate or lead.


comments powered by Disqus