What Dating Taught Me About Programming

by Frances Advincula

I feel like the geek version of Taylor Swift, rattling on about boys and such, and how “we’re never ever getting back together.” But before you judge, let me tell you how this downward spiral started. I have been toying with new JavaScript frameworks, and oh boy, am I learning by mistake. In fact, a friend and I made a list of things not to do when you are working with this framework that aren’t really obvious until you start trudging through the code. We’ve all been through this — the learning really comes when you’re neck deep in the code. Anyway, I got quite frustrated and posted on Google+ that “X framework is like dating — you know what not to do next time.”

However, before we proceed, let me first give a disclaimer: as a 21-year old, I haven’t had a vast pool of gentlemen callers, but well, I still want to write about the “lessons” I’ve learned. All names have been changed to preserve the identity of the unfortunate, I mean, the innocent.

1. The Greek, The Chef, The Med Student, and the Investment Banker. All very different guys from very different walks of life, but they all made me realize one thing: people tend to glamorize our jobs as software engineers. All these guys were great, but for the purpose of this post, all also assumed I waved a magic wand and fairy tale software appears. Reality is no such thing. In fact, the daily life of busy femgineers like us include a lot of grunt, un-sexy work like long hours of debugging, writing functional specs, pair programming sessions, meetings, etc. It’s hardly like what we see in TV with these rabid coding forays that result in a huge successes. We don’t do it because it’s glitzy; we do it because we love building products, we love challenges, and we love solving problems we thought we couldn’t do.

2. My fling with The Space Guy led me to really think about the often taken out of context quote by Donald Knuth, “Premature optimization is the root of all evil.” I mean, this guy was perfect, and half the time I’m convinced we would’ve made such a great team, and half the time, we are both like, yeah this is never going to work. Sometimes I sigh that the perfect guy — smart, kind, handsome, and handsome — got away, and sometimes I’m thankful, because OMG that guy could be a weirdo at times. And that led me to also think about the never ending question, especially for newbie engineers like me – where do we draw the fine line of making the product better than anyone else would, and still be able to ship on time? We all know that there is no such thing as “perfect software” — and especially in agile teams, there will always be room for improvement in the next sprint, but when do we know when a product is ready to ship? Does it really just come with experience?

3. The Hacker taught me all I ever needed to know about Band-Aid fixes. Our relationship was very patched up; warning flags were waving early on, but we both just kept trying to make it work, turning a blind eye to our fundamental differences. And just like relationships, band-aiding your code with hacks is dangerous territory. You know what I’m talking about — code cutoff is tomorrow, and the customer wants this bug fixed, like yesterday. Personally, when encountering situations like these, I think it’s best if we ask a more senior engineer to help us in deciding.

This was one of my more important lessons learned in my first big project. Managers were pushing for more, more, more, and deadlines were looming. I started slipping and started writing just good enough code so I can get more stuff done. Fortunately, code reviews and the right mentorship cut that in the bud. Don’t make my mistake! Remember that it’s your manager’s job to push for more, but it’s your job as a programmer to speak up about deadlines and expectations, especially in cases when you know that a solution can take a day, but the right solution can take twice as long. The bottom-line is of course you want to meet your deadlines as much as possible, and of course you always work 200%, but never ever write yourself a re-write because you hacked everything just to be able to meet your deadline. Clean code, always.

4. OkCupid taught me how to focus. I know, I know, I joined an online dating site, but really, when you move somewhere new and don’t know anybody, you really don’t have a lot of options. So I made a profile, and just like every other girl out there, I was bombarded. Flooded. Drowned. Too many prospects! And whew, going on all those dates, prepping for those dates, and heck, recovering from the bad ones took a lot of time! Thus, I realized I am kinda wasting a bunch of my precious time meeting guys that I don’t really click with (I seem to not know how to use OkCupid’s heavy statistical foundation), and it made me think about the art of picking your battles. Actually, it reminded me exactly what this HBR blog article, “Five Self-Defeating Behaviors that Ruin Companies and Careers“, says:

“Sometimes self-perpetuated decline occurs more slowly, through taking core strengths for granted while chasing the greener grass. I can’t say that this is happening to Google, a company I admire, but I do see potholes ahead — although driverless cars are an extension of mapping software close to Google’s core strength in search. But should Google expand its territory to be a device maker and communications network provider, building a fiber-optics and mobile network? This could be mission creep. Perhaps Google should focus on improving Googling.

Trying to become something you are not while there’s plenty of value in who you are can be self-defeating. For professionals, this can mean branching out into new fields while falling behind in the latest knowledge in the field that made their reputation. People can get caught in the middle — not yet good enough to compete in the new area, while losing strength in the old area.”

This is really hard for me sometimes. As a fresh grad, I know I don’t know so much, and I’m so hungry to learn everything. Sometimes I worry I am jumping around too much! I really have to remind myself to focus on the things that are most important to me so that I can actually be an expert in something.

5. The Management Consultant taught me perhaps the greatest lesson for corporate life — actually, arguably the most important lesson in life – how to manage expectations. As always, allow me to quote what I cannot say any better.

“Unspoken expectations often lead to disappointment and miscommunication in a relationship.”
“Clarifying these things up front can help you make conscious trade-offs and decisions, rather than running afoul of each other’s unspoken beliefs.”

I wish I knew this as an intern. In my first few weeks, perhaps due to my Filipino upbringing, my introvert self thought I was expected to “know my place,” and I thought it was “proper” to appear more quiet, and less aggressive in meetings and discussions because “What do I know?” So there I was, thinking I was doing just fine and dandy, until one of my bosses took me aside and advised me to speak up more. My preoccupation with “knowing my place” made me appear less passionate about the work! What if my boss never initiated that conversation? Oh, I shiver at the thought.

Remember, it might feel awkward at first, but I cannot stress the importance of talking out what the expectations are. Never assume anything. After all, how can you exceed expectations when you don’t even know what they really are?

The world of dating is not so different from the world of programming, you see, and if you’re like me, you very well know that you are already surrounded by smart and eligible peers! Well, I take that back. Coding is definitely way more awesome than dating, because unlike real life, it’s perfectly fine to do blames in Subversion, and that to me is pretty darn sweet.

Frances just graduated with a degree in Computer Science with specialization in Software Engineering. She works as a Software Developer for Accenture Software. She also contributes toThe Levo League, Women 2.0, and STEMinist. A proud geek girl, she’s sure she is the only one who can’t play video games. Follow her random musings at @FranAdvincula.