Maybe it’s because I’m a radically-biased father of three amazing princesses. Maybe it’s because I still have a big kid living inside of me who gets excited to play with Legos and K’NEX. Or maybe it’s because the adults in this world over-complicate matters by trying too hard to be politically correct and polite every second of every day.
My children have incredible imaginations, and every day they only get more amazing. As programmers, our creative imagination is one of the most important assets we have at our disposal. So, stop—take a look around—and focus on some of the kids that surround you.
Fair warning: if you’re not a fan of kids, you can stop reading now. Because I plan to do a bit of fatherly gushing as I relate childhood to our skills as programmers (and programming teams).
Wear Your Emotions on Your Sleeve
As my oldest matures, she’s starting to guard her emotional state a little bit more carefully than she did even a year ago. However, if there’s one thing I can count on with all three of my kids it’s that they’re not afraid to let me know how they feel. In fact, I’ve got one of them staring at me right now, screaming her lungs out because it’s bedtime, and she always fights bedtime loudly and noisily.
Now, that’s not to say you should go march into your boss’s office and start screaming in his face. However, making sure you’re in touch with your emotions (even the strong ones) does have important implications for how you interact with your teammates and your management.
Unless you work in the completely wrong field (which it sounds like a good chunk of the U.S. workforce does), then for at least some of the time, you’re going to find yourself passionately absorbed by your company or team’s mission. Possessing passion for the workplace brings with it many emotional states.
When things go well, happiness abounds. When people act like morons, it’s easy to get angry. If you’re on a solid, well-groomed team, and if someone experiences sadness in their life, you’re going to experience a little of it, too, through empathic bonding. However, there’s definitely one emotional state it’s important to avoid: apathy.
All of these emotions matter a great deal. However, I'd like to dive in a bit deeper into happiness, anger, and apathy to explain why I find them so critical.
If You’re Happy and You Know It
Clap your hands! Well, OK. Maybe give a high five or a thumbs up. Smile and cheer. Brag about the accomplishments of someone else on your team and build them up a little bit.
My daughters dance. And sing. And clap their hands and stomp their feet and otherwise raise a ruckus when they’re in a good mood. Watching them play when they’re happy is one of the greatest joys in my life. It’s celebratory in nature, so don’t hesitate to celebrate at work, too.
The programming field seems really contradictory. We’re very defensive of the work that we produce and are very willing to tell someone else why they’re wrong and we’re right. But then, when we have a small victory, all of a sudden we become shy and say, “Aw, shucks. It really wasn’t anything.” The difference, mainly, is that when we defend our decisions, it’s among our peer group.
When we get accolades, it's often not among our peer group. If something goes really well during a demo, it makes the product team look really good. Maybe it even makes the CEO look really good. But they’re not programmers. And interacting with those people is scary and terrifying and, please, just don’t make me talk to those people.
Honestly speaking, though, those people need to hear about it when someone on your team hits a home run, scores a touchdown, or makes a hat-trick. (I know, sports metaphors in a tech blog. I’m sorry. It won’t happen again.) If you don’t take the time to publicly congratulate your hard-working team members on a job well done, they’ll likely start finding a place that will. Even if they never speak of it out loud, one of the pure joys of this job is being told “job well done.”
Most programmers that I know don’t ask for a pat on the back. Most cannot thrive without one, either. So tell everyone the reasons to be happy with the programming you and your team are doing. It’s worth it.
You Won’t Like Me When I’m Angry
Back to that screaming toddler again. She never has any issue letting us know, in no uncertain terms, when she disagrees with a decision mommy and daddy have made on her behalf. Her tantrums even tend to include throwing herself on the floor and kicking her feet as hard as she can. I keep telling myself this is a phase… But I digress.
Human beings have instinctive tendencies to want to make babies stop crying. For some reason, we evolved to hate listening to little kids throw a fit. And boy, can they throw a good fit!
Here’s the fun thing. Instinct applies at work as well. When a kid throws a fit, the best parents immediately try to fix the problem. If you can throw the right kind of “tantrum” at the right time, you’ll get attention, too. But be very careful with this. With great power comes great responsibility.
For me, I wield it in the form of “colorful metaphors.” I guard my tongue very carefully and tend to only let the most nasty of the swear words come out when I really want to get people’s attention. It doesn’t happen often. Which is why it works.
The reason this takes practice, and caution, is that if you’re always blowing up, people are just going to call you a hot-head. Which doesn’t help.
It’s great to prove to people around you that you’re passionate enough about the work you’re doing that you’ll get mad about it if something is badly messed up. It’s good to show everyone that you are human.
Look Sir, Droids!
Watch out for apathy in your workplace. It’s a sneaky little demon, and it converts effective, well-oiled, and passionate teams into “9-5, earn a paycheck, and go home” types. They also tend to start sounding quite a bit like C-3PO. Tinny, annoying, and always showing up at the worst possible time.
I’d hardly call any of my daughters apathetic. Far from it in fact. They’re always letting me know how they feel about everything. From our choices of dinner time food, to what’s on TV, to how I need to go take a shower. Like, now. They’re never afraid to let their emotions come out and lead the way. Apathy kills that pretty fast.
Apathy is a really tricky thing to spot in the wild, because it starts out masked as sadness, anger, fear, and other negative emotions that we can easily write off as “having a bad day.”
If someone has too many bad days in a row, though, they’re liable to stop caring at all because apathy is easier than heartache. I realize this doesn’t sound very “programmery” (is that even a word?), but we have to realize how our emotions impact our ability to be part of a healthy team.
There’s plenty of good advice for getting the best intrinsic motivation out of yourself and your teammates, but I still have to say one of the best resources for this is Team Geek: A Software Developer's Guide to Working Well with Others.
As programmers, sharing our emotional state removes some of the robotic nature of our jobs. One of the most critical things we can all share is our humanness, and the best way we can do that is by getting appropriately emotional at the right time. Otherwise, we’ll likely become as inhuman as the machines we work with. Just ask Alan Turing how that’s going these days.
Use Your Imagination
Have you ever built a blanket fort? Or maybe one out of big twigs and other branches that fell out of trees? Did you ever build a snowfort in a shovel bank that showed up on one side or the other of your driveway? Or maybe you were just obsessed with Legos as a kid?
Hopefully, you know what I’m talking about. Most everyone I know that works as a software engineer can recall dozens of memories where the only thing that really mattered was the unfettered freedom of childhood.
Back to that Team Geek reference again. This is where autonomy really sings. We need the creativity, spark, and drive to go after the solutions that aren’t necessarily obvious.
Doing something the exact same way as it was done twenty times before, but with different parameters and for different database tables, turns us into assembly line coders. I don’t know about you, but that sounds dreadful to me.
Instead, look around. Find places that are uncharted, and start charting them. Make a proof of concept. Find a way to make an open source library fit in your world (as long as it’s well supported, or you’re willing to support it yourself if it’s not).
Most important of all, make sure not to forget that we thrive as researchers. We never solve the same problem twice. So why problem solve the same way twice?
While I think working for NASA (or SpaceX) sounds really freaking awesome, I feel like there’s a frontier right in front of our noses that doesn’t involve going into space. Software innovation is still in its infancy, having meaning as a profession for only a couple of decades at this point.
Compare that to, say, materials engineering. Back in the good ol’ days that might have been called alchemy. We have a long way to go in our world before we’re done innovating. So open the cover. Tear it apart just to build it again. Make a palace out of blankets and pillows. And, most importantly, have fun!
Color Outside the Lines
Some people call this sloppy. Sometimes I think it’s not sloppy at all, but just my oldest daughter’s way of expressing her creativity. In fact, she usually prefers drawing on a blank sheet of paper to one that has lines on it. That way, she gets to decide what the end result looks like from the start.
While we don’t really “color” as programmers, as John Sonmez put it: Sometimes It's OK to Break the Rules. Just remember to be aware of his follow-up to this, too: You Have to Master the Rules Before You Can Break the Rules.
A great post about the inspiration brought on by creativity just recently showed up on this blog: The Necessity of Creativity.
For me, I feel more connected to my ability to problem solve when I step away from the IDE and step into the world of being creative. My creativity comes in the form of writing, and also in the form of drawing. I don’t have any drawings good enough to hang on someone's mantelpiece, but when I draw I feel like it lets the problem solving logic side of my brain have a much needed respite. It recharges and re-energizes the bit-wise side of my brain.
I have yet to meet a good programmer that thinks any problem we solve has exactly one right answer. In fact—because there are so many right answers to the question “how do we solve this problem”—we find ourselves in a bit of a software engineering renaissance. There’s so much discovery to make about the right way or the best way of doing something; I don’t think we’ve even scratched the surface.
There’s a Nap for That!
I’m fairly certain I saw a baby onesie with that on it. If I didn’t, I call dibs. It’d sell like hotcakes!
All kidding aside, though, one thing kids get to do that we adults tend to shirk off is taking daily recharge breaks smack in the middle of the day. For kids, it’s called “naptime.” For adults, it’s called… wait, I don’t know what it’s called because we don’t really condone it in American society.
I guess “siesta” in Mexico comes close. But that’s not really what I’m driving at, either. Rather, in order to maintain your ability to really drive hard when you’re plugged in, it’s also just as important to unplug for at least a few minutes every day.
If you Protect Your Productive Time, you should be able to find at least one or two good, solid chunks where you can go refresh your brain. Most days, I go on a brisk walk outside with mine, and it helps me to clear out the clutter and reset for the next run of tasks I’m about to focus on.
So, while we can’t be literally like kids and take a nap every afternoon, there are ways to find restfulness that I strongly encourage you to look into.
I Don’t Wanna Grow Up!
I love hanging out with my kids because they serve as a daily reminder to me of the most important things in my life. I don’t live to work, I work to live.
Kids don’t know what stress is. They don’t know what bills are. Hopefully, they won’t even know what severe pain or chronic sickness is. They’re just happy and free. And I want to do my best to protect that happiness and freedom as long as I can, because it brings with it an amazing spark of life.
For those of us who embrace our inner child, I say, “Awesome Sauce!” For those a little hesitant to do so—have a look in the mirror. When you were a kid, looking in the mirror, did you see adult-you on the other side? When adult-you looks back and sees kid-you, did you say this? “Look! I’m exactly who you wanted me to be!”
If not, ask yourself why. And then find out if there’s a way to help that little kid inside of you do a happy dance again.
When we let ourselves connect with our more child-like instincts, we let go of some of the emotional baggage adulthood carries with it. And with that release, we can really start making some awesome progress on being the best coders possible. Even as good as our kids think we are.