My Core Values

The idea behind core values is that it’s a set of principles that guide your actions, your decisions and how you interact with others.  It’s not a new concept, although I’m pretty sure that I  heard about it most recently on the Entreleadership podcast (one that was just recently added to my list).  I spent a fair bit of time over the last couple of weeks thinking about what things I value in life, both professionally and personally and came up with the following list of core values:

Accountability – If I make a mistake, I want to own that mistake and do what needs to be done to make it right.  Conversely, I also expect others do to the same with their interactions with me.   If they make a mistake they’ll own up to it and correct it, not pass the buck by blaming it on somebody else.

Integrity – For me, integrity means not compromising my values when it’s the more convenient or profitable option.  This means that I won’t tell a customer that we’ll ship something on March 16th in order to land a contract if I already know that it isn’t going to be possible.

Honesty – There’s a lot of value in getting a straight answer from somebody.  Being honest with somebody doesn’t require you to be mean, there are constructive ways to give people feedback that isn’t necessarily positive.  I want people to come away from their interactions with me knowing that they got the truth from me, not just my assumption of what they wanted to hear.

Quality  – I want the things that I produce to be good.  If it’s a piece of software, then I’m embarrassed when somebody discovers a bug.  If it’s something physical, then I want it to feel and look like it was made well, and stand the test of time as proof.

Balance – my non-working life is very important to me, especially my family and social activities.  I’m not willing to be constantly sacrificing these things in order to work.  At the same time, I fully understand that balance isn’t uniform, there will be times where the scale is going to have to tip further to one side than the other.  As long as in the end it gets back to even then I’m ok with that.

What values drive your day-to-day life?

My ToDos for 2013 (or resolutions, if you’re into that)

I like having a roadmap, it’s a great way to focus your mind towards a goal.  Personally I find that it’s also a great way to practice brainstorming, scope management, estimation and execution.  So, here’s my list of developer type things that I plan to achieve in 2013.

  • learn git
    • I’ve used both Subversion (SVN) and Mercurial (HG) for years, and I don’t regret my time spent with either of these systems.  However, it seems that at the moment git is the cat’s ass in terms of version control, especially for open-source projects.  I have very minimal experience with git, having only really used it to check out a copy of an open-source project for use in an application that I’m working on.
  • launch an app that generates money
    • Building an application is easy, and I truly believe that anybody with access to a computer can do it.  Building an application that other people use, and are willing to pay money for, is a whole different bag of rice and requires a different set of skills.   By building something that generates actual dollars, I’ll bet exercising skills that most developers that are working at a job don’t get a chance to do, which will make me a better overall developer.
  • publish some open source code
    • As DHH just recently said on the Giant Robots Smashing into other Giant Robots podcast, “If you limit your exposure enough, anybody can be the best at anything” (or something like that).  I now strongly feel that by putting my work out there for other smarter than me people to see, I’ll become a smarter and better developer.  Or, I’ll learn that I actually am the smartest developer out there… (incredibly unlikely)
  • write automated tests for most of my code
    • 2012 clearly indicated to me that automated tests add a ton of value to a codebase, both in terms of overall design and maintainability.  For code that I now have tests for, I’m so much faster at making changes with confidence, allowing me to get more done than I have ever done before.  In 2013 I want to keep this going,  so that in the end I can get more done.
  • find a mentor
    • At GrantStream Inc. I am one of the most senior developers on the team (7 years).  In order for me to continue to grow and learn, I feel that I need to learn from developers that have both more and different experience than I do.  As a start, I’ll be adding my name to the list over at phpmentoring.org.

Do you have any developer-focused goals for 2013?  Anything you think I should add to this list for myself?  Let me know in the comments.

“We lost a lot of good men out there”

Today we lost a member of our development team. It sucks. Really.

Vince Vaughn and Owen Wilson

The team member we lost was one of those guys that I thought would be here forever, so his sudden (and unexpected) departure was a bit of a wake up call for me. It reminded me that if you have smart people, you need to keep them engaged by giving them smart people problems to solve. The strongest devs on your team aren’t just going to sit at a keyboard all day working on whatever you say just because they’re a nice guy. That will work for a little while perhaps, but eventually even the nicest of guys will start to lose interest if they’re only doing uninteresting work.

If you want your best developers to stick around for the long haul, you really need to make a conscious effort to engage them on a regular basis. This means finding interesting, challenging problems for them to work on. Sure, there’s going to be times where uninteresting work just needs to get done, but as soon as those times are over you need to unleash your people again. If you’re always busy with this boring kind of work, then your going to have serious problems someday, because its going to be almost impossible for you to keep good people onboard anyway, especially once they figure out what they’ve signed up for.

What sorts of things do you do to make sure your teams are engaged?

Just shared my list of podcasts for developers

Take a look over to the right, I’ve just shared a new page with my favourite podcasts aimed primarily at developers.  I’ve had this list sitting in a draft form for nearly two years now and I’m not really sure why it’s taken this long to publish it.  Given the amount of time since I first put it together, I ended up having to do a number of edits to the list, both to remove things that are either not being published anymore, or, thankfully, to add some of the awesome things I’ve been listening to lately.

I’d love to get some feedback on this list, or even better, any suggestions you have for other podcasts that I might find interesting but don’t have listed.

Get your earphones ready!

What I’m looking for when interviewing software developers

As a team leader, I have had multiple opportunities to interview candidates for new developer positions as they come up.  I’d like to think I’m a pretty fair interviewer, I don’t pose weird puzzle questions, I don’t relentlessly dig in on questions you couldn’t possibly answer, and I try to make it an enjoyable experience for both of us.  That being said, there’s a couple of things that I consistently experience being the interviewer that I think the developers on the other side of the table need to be aware of.

Be interested
You need to at least appear to be interested in our discussion.  If all you’re going to do is answer my questions, I’m not going to be interested because it’s obvious that you’re not.  Your best chance to make an impression with me would be by treating the interview more like a conversation.

Know what we do
It doesn’t take long,  a couple of minutes on our website or a quick Google search should give you enough to put together a quick sentence on what we do.  “Make software for companies” is not exactly what I’m looking for however.  You should at least have an idea of what industry we’re in, it’s in the first paragraph of the “About Us” page.  For bonus points, knowing a couple of the clients from our listing or having found our products being used would be a huge thing (and one that I haven’t seen yet, not once), even though it’s incredibly easy to find.

Have some questions
Nothing shows a general lack of interest or preparation worse than not having a single response when we as “Do you have any questions for us?”  Heck, you don’t even need to wait for me to ask, if I say something that catches your attention or that you want more information about, just ask.  It’s many times easier to get into a more flowing conversation when both of us are working at it.  I’d even be ok with it if in the end we discover that I was wrong about something, then we’ve both gotten something out of it.

Get excited about SOMETHING
I intentionally ask some questions intended to get you excited about work you’ve done in the past.  I don’t even care if it’s positive or negative excitement (I ask both sides of the question) the purpose for this is to see if you actually care enough about what you do it make sure I know all about it.  I typically start this with the question “What is the most interesting or exciting project that you have worked on?”  (I’ll also typically ask for the most difficult or frustrating project as a follow-up)  You’d be amazed at how many people will sit there and say “I don’t know…” don’t be this person.   If you can’t get excited about the most interesting or terrible projects you’ve ever worked on, it gives me the impression that you just don’t care that much about what you do.  I don’t want people that don’t care on my team.  Plain and simple.

Geek out, at least a little
All of the good software developers I’ve met have a geeky thread in them somewhere.  For many it’s related to software, robots, sci-fi or something else typical, but for others, it’s cooking, coffee, gardening or fishing.  I don’t care what it is, but to see that you have something that you are able to focus on so deeply that you know practically everything there is to know about it (or a strong motivation to know everything) makes me feel comfortable that we’ll have something in common.  Even if it’s not the same specific thing, but instead more of a mindset.

Don’t be a robot
Screw professionalism, have a personality, have some fun, crack a joke dammit!  Nobody’s wants to work with a lifeless trout…