Archive

Lake Superior Provincial Park is one of my favourite places. The lake itself is brilliantly clear, the water clean enough to drink unfiltered (provided you’re drinking it well away from shore). The shoreline is dotted with uncountable warm coves to swim in (August), few bugs (again, August), and breathtaking views, but… I’m entirely biased. This landscape is home (I grew up in the area) and both Steph (the girlfriend, now wife) and I were employed by this park while going to school. Steph as a Natural Heritage Educator and myself as an Interior Ranger.

Working as an Interior Ranger at Lake Superior Provincial Park came with some great experiences; one day our crew flagged down the Agawa train, rode a boxcar with the doors wide open, got dropped off at the Agawa Falls with a chainsaw and cleaned the trail as we hiked out. Then there were the multiday treks where we’d travel (portage, by canoe) through the interior of the park, self sustained as we assessed trail conditions, and explored old decomposing fly-in / hunting camps, and houses from decades gone by. I hiked all but one trail my first summer there. Man, I wish I had a camera back then. Anyhow, back to the topic of this post. This past summer we retraced our footsteps as we hiked Lake Superior’s Coastal Trail.

The Coastal Trail is about 65km, but we chose our favourite stretch – the 25km stretch between Gargantua Harbour and Orphan Lake. This portion of the trail is affectionately referred to as the “rugged” part, but “rugged” is an understatement. Most of this stretch of trail is off camber as you follow the exposed Canadian Shield along the shoreline and when the trail’s not threatening to toss you in the lake, then it’s ankle wrenching boulder beaches with rocks ranging from fist size rocks to the size of a cube van. There are no man made structures to assist in the undulating climbs, and the blue trail markers are few and far between (cairns mark most of the trail). Many times our route (well… usually MY route) would lead to a dead end, I’d scratch my head, Steph would roll her eyes, and then we’d spot a trail marker up on a distant bluff. If a storm unexpectedly kicked up you’d basically be stranded. Walking on wet lichen covered rock or bushwhacking your own route through the dense trees in search of higher ground with a backpack for 25km is sure to get you hurt. Good news though; it’s really difficult getting lost with the world’s largest freshwater lake on your side. The going may be slow, but the views, geology, and orienteering keep things interesting. This is my favourite hike, I highly recommend it.

Hey, what happened to all the bloggers? Well… we grew up, grew out, and moved on. Perhaps we’ve become tired of community based online learning, we’ve discovered greater meaning in palpable communities, we’re pursuing new hobbies and responsibilities. We’re finding our internet memes and funny videos on social media. As developers we’re bored of whining about decrepit technologies, we’ve found contentment in friendlier frameworks and work environments. Our confidence and abilities have grown, we’ve discovered that tools don’t matter, we’re no longer here to present the tips and tricks of the latest technology. The blog once established our street cred, but online reputation has transitioned to open source contributions and sites like Stack Overflow and github. The effort of a blog is befittingly employed elsewhere.

So many people … will not take the initiative to change their situation because they are conditioned to a life of security, conformity, and conservatism, all of which may appear to give one peace of mind, but in reality nothing is more dangerous to the adventurous spirit within a man than a secure future. The very basic core of a man’s living spirit is his passion for adventure. The joy of life comes from our encounters with new experiences, and hence there is no greater joy than to have an endlessly changing horizon … – Chris McCandless

Robert C. Martin (affectionately known as “Uncle Bob” in the development community) has a number of great books demonstrating the benefits of OOD/OOP and good design principles. Those acquainted with his books will also be familiar with his generous use of conversation dialogs between developers.

A sample excerpt:

RCM: “Will you help me write a little application that calculated bowling scores?”
RSK: “… Sure, Bob, I’d be glad to help. … I used to be a pretty good bowler … “
RCM: “Let’s begin with scoring a single game …”
RSK: “OK, we’re going to need some test data. Let me sketch out a little picture of a scorecard …”
RSK: “Shall we start at the end of the dependency chain and work backward? …”
- A Programming Episode from Agile Principles, Patterns, and Practices

This dialog continues for some 40+ pages as we’re walked through a paired programming session demonstrating test driven development and refactoring techniques. Admittedly, while reading these dialogs, I initially thought they were a bit over-the-top (campy), but as I actively listen to the communication happening within my team I realize that these dialogs are happening all around me.

An excerpt from this past week:

Me: “Will you help me write a stored procedure to retrieve the customer’s cart items count and default lightbox items count?”
Dev: “Sure, Adam, I’d be glad to help.”
Me: “Cool! This will be more efficient than aggregating the data from multiple repositories …”

Pull yourself in, that’s right, a little closer to the campfire, now sing it with me, “We all live in a yellow submarine… errr… an Uncle Bob dialog, an Uncle Bob dialog.” :)

The business world is full of “professionals” who wear the uniform and try to seem perfect. In truth, they just come off as stiff and boring. No one can relate to people like that.
Don’t be afraid to show your flaws. Imperfections are real and people respond to real. … Don’t worry about how you’re supposed to act. Show the world what you’re really like, warts and all … talk like you really talk. Reveal things that others are unwilling to discuss. Be upfront about your shortcomings. … You might not seem as professional, but you will seem a lot more genuine. – Rework: Jason Fried, David Heinemeier Hansson

I’ve struggled with the personal vs professional tension for sometime. Back in 2002, I started this site with the intention of professional self promotion (image above is my site from 2003). The results were predictable: the tone boring, the topics dry and most visitors saw through the veil of self promotion. I’ve matured since then (well I hope I have). :) Over the years I’ve found that a personal, down-to-earth tone maintains a healthy level of transparency both on the web and in real life. As Gandhi once said:

Happiness is when what you think, what you say, and what you do are in harmony.

Many people who looked at Warren Harding saw how extraordinarily handsome and distinguished-looking he was and jumped to the immediate – and entirely unwarranted – conclusion that he was a man of courage and intelligence and integrity. They didn’t dig below the surface. The way he looked carried so many powerful connotations that it stopped the normal process of thinking dead in its tracks. The Warren Harding error is the dark side of rapid cognition. It is at the root of a good deal of prejudice and discrimination. It’s why picking the right candidate for a job is so difficult and why, on more occasions than we may care to admit, utter mediocrities sometimes end up in positions of enormous responsibility. – Blink: The Power of Thinking Without Thinking

As Developers (and Generation X / Yers) we tend to buy into the ideal that “on the internet no one knows your a dog”, an ideal that’s been seared into our minds by Sesame Street and the like. An ideal where sunny days, chase the clouds away, where knowledge, technical skill, and communication should outweigh appearance – a place where being a dog, human, or giant harry elephant should be irrelevant. Unfortunately that’s not reality. Clean up for your interviews, put away those circa Cobain sneakers, and pack in the facial jewelery. Warren Harding (considered one of the worst US presidents) may have been elected based on his appearance. First impressions matter.

Beware of the Interview Anti-Loop

The Interview Anti-Loop as described by Steve Yegge:

when I was at Amazon … We eventually concluded that every single employee E at Amazon has at least one “Interview Anti-Loop”: a set of other employees S who would not hire E. The root cause is important for you to understand when you’re going into interviews, so I’ll tell you a little about what I’ve found over the years.

First, you can’t tell interviewers what’s important … they believe they are a “good interviewer” and they don’t need to change their questions, their question styles, their interviewing style, or their feedback style, ever again. …

Second problem: every “experienced” interviewer has a set of pet subjects and possibly specific questions that he or she feels is an accurate gauge of a candidate’s abilities. The question sets for any two interviewers can be widely different and even entirely non-overlapping. …

The bottom line is, if you go to an interview at any software company, you should plan for the contingency that you might get genuinely unlucky, and wind up with one or more people from your Interview Anti-Loop on your interview loop. If this happens, you will struggle, then be told that you were not a fit at this time, and then you will feel bad. …

And then you should wait 6-12 months and re-apply. That’s pretty much the best solution we (or anyone else I know of) could come up with for the false-negative problem. – Get that job at Google

Don’t Trash Former Employers and Employees

One final bit of advice that’s often overlooked. Avoid talking badly about past employers and coworkers. If you had an unfortunate string of bad career experiences, consider hiring a therapist, or telling your Mom about it. The job interview is not the place to retrace or reflect on past personal struggles, and it’s not the place for trashing former coworkers and employers.

This March marked my fifth year of working in the software realm and five years since graduating University, and this year (according to industry standards) I’m now considered a Senior Developer.

Funny enough. Today, I don’t consider myself a Senior Developer, but a couple years ago I would have told you to “Call me Senior”. Back in those days I may have been a Senior Developer within the monocultured context of the domain, language, and environment I was working with, but certainly not within the larger context of the software realm. I had surrounded myself with homogeneous tools, like minded colleagues, and had fallen into the trap of thinking I was an expert when I wasn’t – we all thought we were Senior Developers.

“When you are not very skilled in some area, you are more likely to think you’re actually pretty expert at it … The converse seems to be true as well; once you truly become an expert, you become painfully aware of just how little you know.” – Pragmatic Thinking and Learning: Refactor Your Wetware

Over the years I’ve observed that Experts and true Senior Developers are collectively regarded as such by their peers, not by corporate credentials, not by job titles, or duration of employment. Experts and Senior Developers are more preoccupied with getting things done, improving themselves, improving their environments, and helping others – not worrying about job titles and status.

“The people who are best at programming are the people who realize how small their brains are. They are humble. The people who are the worst at programming are the people who refuse to accept the fact that their brains aren’t equal to the task. Their egos keep them from being great programmers. The more you learn to compensate for your small brain, the better a programmer you’ll be. The more humble you are, the faster you’ll improve.” – Code Complete: A Practical Handbook of Software Construction

remember from school other students preventing you from seeing their answers by placing their arm around their exercise book or exam paper.

It is the same [in the working world] …

The problem with hoarding is you end up living off your reserves. Eventually you’ll become stale.
If you give away everything you have, you are left with nothing. This forces you to look, to be aware, to replenish.

I identify with Arden’s philosophy. The creative process is enjoyable. If I’ve had fun producing it, then why not share it? I think our tendencies to hoard, get hung up on copyright, and get picky about attribution stem from our fear of being taken advantage of and the fallacy of thinking we’re special (we’re not special). I think we should throw our code into the public, share our content, give away everything, and watch what comes back.

The painting above was created by Ron Krajewski, based on my photo (licensed under Creative Commons). Ron mailed me a copy of the painting – it’s also available for purchase at Pet Art.

About a year ago I purchased my first ever cellphone (an iPhone) – before the smart phones I’d grab any old freebie phone that came with a multi-year phone contract.

Getting an iPhone was simple enough, but the reactions to owning one have been surprising. Responses have swung from: “Right on! Welcome to the fold!” to “Oh, an iPhone, it’s just a status symbol.”

I will be the first to admit that I’m more likely to whip out my new phone, but did you see my old phone? It was a the size of an Oh Henry! bar, the buttons faded, the screen cracked, and the antenna was a lightning rod – yes that is a picture of my old phone. Sure, I could have been a hero, milked another 5 years out of the old phone, but… I could also give up my washing machine for a washboard, my bike for a horse, and start burning candles. :)