Know your Platform

Learning a new coding language or API is not easy – some you can naturally gravitate towards, especially if that API or framework has an interface for your favourite language du jour.

And it is always frustrating because despite all of our knowledge and experience we are starting at the same old examples to get up and running quickly.

“Hello World”

It can be deflating and demoralizing – you have built such wondrous inventions on C# now must go work on Ruby Rails, or the PHP machine must now do some defunct ASP programming on a legacy application.

It has happened to all of us.

What I am constantly shocked and surprised by, is the general lack of understanding of the platform people are building solutions on have in general.  If you are building a solution on AWS, it will help you to understand how AWS works, if you are building a phone connector to Asterisk, it will help you to understand how Asterisk makes calls, if you are integrating your conferencing with Skype For Business it will help to know how conferencing MCUs work in Skype For Business, etc, etc

If you want to become really good at something, learn the platform you are coding on, understand the why things happen when your code run as opposed to the  – “I don’t know how it works” – if you can, go and install it, fight that battle of getting it up and running.

It might not feel like it on Day 1, but in the long run, you’ll have learned a ton more that will make you that much more of a stronger Developer.

Nothing Takes 2 Minutes

Ask someone when they are going to have something done and their immediate answer is going to be “In a sec”, “In a few minutes”, etc, etc.

Translation – “I am so good I will have all my work done within 2 minutes and you will bow before my glory”.

Perhaps not quite, but you get the idea, we want to impress someone with how fast you can get something done while ignoring how long it will take for everyone on the team to get it done and get it done right.

If you can get your fix up to the dev server in 2 minutes congrats – good work.  But if it takes you another 10 compiles and pushes because you went too fast you’ve not only wasted your time but the time of your QA team to validate the fix and your customer to eventually accept it – all because you wanted to impress someone.

Here’s how you impress someone when they ask you how long is it going to take;

  • I need 15 minutes to code it and validate it.
  • QA will need another 10 to run their own tests.
  • So in 25 – 30 minutes we’ll have something solid to show the customer.

After all, no one calls the customer up immediately after your estimate to tell them it is actually going to be ready in 2 minutes.

What Dream are you Chasing?

It is very easy to become entranced in the magic and mysticism of a new venture – whether it be a new startup or project.  We tend to focus on the carrot – what can we get and be if we are successful – and the carrot is always something of the physical variety.

Listen to anyone speak on the topic when the offer is in front of them and 9/10 times (based on my own experience) it goes something like this…

If I put in x effort, I will yield y reward.  If that happens it will have been ssssssssooooooooooo worth it.

And yes, strong emphasis on the s and o in that quote.  

But if you really want to convince yourself that this is something for you, you should instead approach it from…

If I put in x effort, I could fail.  Despite my best efforts, this could fail and the reward will not be 0 but possibly less than 0.

And by reward, yes I am talking about the tangible – the money, the dineros, the moolah – and if that is your definition of the reward, than I guarantee you, you will not be satisfied because it will never be enough.

Now, if the reward is an intangible – the knowledge, the experience, the learning to stand up when you fall down, the learning to present in front of others, the wearing 30 different hats a week, the blood, the sweat, the tears – than that is something you will get succeed or fail and will always be worth it.

So – what are you chasing?  The tangible or the intangible.

How to Build a Great Team

I had this concept a number of years ago when I was starting out as a Software Manager and had to build a team from scratch of all new people and spent a lot of time thinking about what kind of people I wanted to have on my team.  There were some people I hired at the time that ran counter to some conventional wisdom and for the most part it all worked out in the end.

Instead of doing it as a blog post, I did another SlideShare presentation that let me lay out my thoughts a little more clearly.

So here it is… enjoy.

An Argument for Self-Training

If you really do not want to become a great developer or team lead, avoid doing anything and everything on this list;

  • Spend time learning and staying on top of new technologies.
  • Join a local user group focussed around a specific platform for technology that allows you to network with your peers.
  • Join groups on LinkedIn to stay abreast of industry trends.
  • Setup Google Alerts to receive emails to your inbox focussed around certain technologies and trends.
  • Watch videos upload to YouTube that walk you through the How-Tos many different ways.
  • Read some (not all) of the blog content out there to get ideas on how to solve problems.
  • Share your code and examples via CodePlex or GitHub.
  • Write the most complex Hello World example you can think of.
  • Start a blog and share your ideas – not just the good, but the bad, the ugly.

Pretty dumb right?  Who would wilfully choose to any of the above where the only requirements are some online accounts (free), an internet connection and a computer (the last two having at work, a library or your home).

Going to conferences and drinking from the Firehose is great (and yes it’s fun), you get to sit back as someone walks through their presentation and than (hopefully) discuss the pros and cons over beers with your colleagues later that evening.  I have always thought of conferences as more a perk and a “Thank you” vs an actual training session.  If anything they are the catalyst to move you into a certain direction.

If you are like many, only happens once a year for 1 week a year.

So the real question becomes – “Why limit yourself to what you might receive in a year for that one week?” – when you have so much around to help you out for free.