Known Unknowns?

Recently I tweeted this:

Afterwards I continued to wonder whether coming away from a tech talk with more questions than I started with was a good thing or not. It can certainly shake your confidence and make you feel like you might not know as much as you thought you did about the topic being discussed. 

On the other hand, perhaps the fact that you have questions reflects the simple fact that the speaker simply has a different perspective from your own. Perhaps if you were to talk about what you were working on they’d have as many questions come up as you did. 

There’s so much available to be known these days in the tech world, especially when it comes to the web I feel. As a result, it’s incredibly easy to get discouraged, or to constantly feel the weight of all the things that you know you don’t know. I know I certainly struggle with this. 

I’m not sure what the answer is, but my strategy is going to be to try to be ok with not knowing everything. Maybe it comes with age and maturity, but it’s obvious to me now that aiming to know everything, no matter the topic, is a fool’s errand.

I’ve always been a great consumer of information. Recently though I’ve been trying to shift my focus towards only needing to know enough to take the next few steps I need on my journey. Once I’ve taken those steps I’ll be able to look from that new position of knowledge and experience and know what needs to be known next to keep going. I feel like this will help with overloading myself with information without really figuring out how to apply any of it.  

After all, who cares what you know if you can’t do anything productive with that knowledge?

What? It’s only been two years…

Scroll down to see this blog’s shame.

It’s been over 2 years since the last time that I’ve posted anything here. Now, that doesn’t mean that I haven’t been writing during that time. In fact, I’ve probably written more in the past 2 years than at most other times in my professional life. I just haven’t been writing as many things that I thought would be a good fit for this site.

That starts to change today.

There’s this odd thing that happens when you write frequently, your brain gets used to thinking of things for you to write about. I’ve been doing quite a bit of writing over the past few months for my stories over at Wattpad (where I work). I’ve also been writing in more of a professional journalling sense, who knows? maybe that’s part of getting older and not trusting my memory as much as I used to.

As a result, I have a lot of drafts sitting on my hard drive for things that it turns out would be a good fit for this space so that’s exactly what I’m going to do with them.

Things will likely be a bit scattered at first, but as I keep going I know the focus will dial in and some sort of theme will emerge.

I do know however that a majority of what I will be talking about pertains to being a modern JavaScript developer. There will probably be the odd piece about being a father (of two awesome boys), being a bit older (35 last I checked) and having been in the web industry for almost 20 years at this point (I published my first web pages in the late 90’s). I’m also open to suggestions for topics from my readers, something that I’ve found immensely valuable with my stories over on Wattpad.

Stay tuned, more coming soon…

Looking forward to 2014 (late post)

Oops! I wrote this back in December but somehow forgot to post it. It’s a bit late, but I think it still has value.

Early this year I put up my list of developer goals for 2013. Here’s a quick summary:

  1. Learn Git
    • I’ve been using Git exclusively for source control for 10 months at Wattpad. I wouldn’t classify myself as an expert just yet, but I’m very comfortable using it and most commands I use are built into my muscle memory now.
  2. Launch an app that generates money
    • While I haven’t created and launched an app of my own that charges money, earlier this year I was heavily involved in a new project at work that required integration with Stripe for processing transactions with customer cards. I’m going to consider this a 50% success.
  3. Publish some open source code
    • I haven’t actually published any code yet, but lots of time has been spent learning the tools that I would need to do so (Git, GitHub, BitBucket, Markdown).
  4. Write automated tests for most of my code
    • I write more tests for my code than I did a year ago, but I don’t think I’m at the point where I’m more likely to have tests for my code than not. At work we’re pushing very hard towards TDD, and I’d say we’re getting close. I’m confident it will get there.
  5. Find a mentor
    • 100% complete! Very early in the year through the magic of Twitter I was connected with Jeff Carouth, a PHP dev. out in Texas. We’ve had a number of online chats and even a few Skype calls to talk about various development topics. Our discussions often turned to Domain Driven Design (DDD), a concept that I was familiar with in name only, but now understand much better. I’m currently working on applying DDD to some Javascript projects that I’m working on.

Looking back at the list I’m a bit surprised to see that overall I have done decently well. Far better than in previous years where I didn’t end up touching any of my goals throughout the year.

It’s not your employer’s job to keep you at the top of your game

This past weekend I attended the TrueNorth PHP conference, hosted by the GTA PHP user group. It’s the second year that the event has been held and I attended last year as well. Based on my experience it’s a great event, and the only PHP focused conference that takes place in the Toronto area.

As with most conferences, sometimes the most insightful things come from the hallway conversations that happen outside of the scheduled talks. This conference was no different. There was one specific conversation that got my attention. I was talking to a couple of guys that were lightly complaining about how their employer doesn’t send them to any conferences, and that the were only able to come to this one because it happened to be in the neighbourhood.

My opinion on this is that as a developer, you need to take responsibility for your own professional development. Your employer hired you to perform a specific job, so as long as they are providing the tools required to get the job done and paying you your agreed salary, they’re holding up their end of the bargain. If you want to learn new skills, experiment with new technology, sharpen your saw or whatever, that’s up to you (although don’t be surprised if you later get canned if you never attempt to get better at what you do). Your company being willing to foot the bill for these things is a perk, not a term of employment. It’s a little different if there’s a course or conference that your employer asks you to attend, in this situation they have decided that there is some business benefit to be had by you attending, so I do feel they should cover your costs.

For me, my employer probably would have paid for my conference ticket to True North but I didn’t ask them to. I wanted to go because I have a strong connection to the PHP community and I knew that there was going to be the possibility for some great conversations. It’s the same reason that I watch lots of online tutorials, listen to podcasts and reach out to others on sites like Stackoverflow. I need to constantly be in a state of growth, otherwise I quickly start to feel like I’m stagnating or falling behind and that’s just not acceptable to me, and it shouldn’t be acceptable to you either.

So take ownership of you skill development, you’ll be happy that you did.

Update (Nov. 15th, 2013): So it turns out that through absolute serendipity a friend of mine that I met through the PHP mentoring community just happened to post a similar post on his blog a bit over a week before I wrote this.  I think he’s managed to distill the idea better than I have, so you should check out his post over at http://carouth.com/blog/2013/11/03/its-your-career/

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?