Technical Debt

Technical debt shares many similar characteristics to financial debt.  Financial debt can be responsible; borrowing money responsibily can enable individuals and companies to achieve their goals (e.g. home ownership, transportation mobility, education, mergers, equipment purchase, etc). Typically, financial debt is often slowly paid off, amortized, consolidated, rolled over, or paid down in lump sums.  As long as the financial debt can be serviced without undue hardship to cash flow and provides a positive cost-benefit utility, the debt is deemed being used responsibly.  Financial debt can be debilitating, unpaid balances with high interest rates can quickly pile on more debt.  For many people, financial literacy is low and understanding the nature of debt and managing it effectively is often confounded with emotion and stigma.

Technical debt provides utility.  Let’s remember that software is a means to an end to help achieve a business need or accomplish a task at hand.  As a technical leader, it is important to frame technical debt and understand how you will service it and how it is serving you.  You can pay down the technical debt slowly, each time you’re in that area of code, make it a little better than before.  You can choose to consolidate it and pay it off in a lump sum either by writing a new service or bypassing it strategically.  No matter what the strategy is, you need to be crisp on the plan and the communication around it.  

It’s important to remind ourselves, there’s no perfect piece of software.  We’re always making tradeoffs and these tradeoffs are okay.  What’s great software today is tomorrow’s legacy software.  Learning how to frame, manage and accept technical debt as a means to an end will give you leverage and productivity as you grow.

Amazon HQ2

The Toronto tech scene is hot.  Last year, more tech jobs were created in Toronto than San Francisco, Seattle, and NYC combined.  By making Amazon’s HQ2 shortlist, Amazon essentially vetted Toronto as a great tech hub.  Amazon saved all these companies thousands of hours of research, cities put pitch decks together for all to see, and now tech companies are moving in fast.

In the past few months, Bay Area startup heavyweights and big tech-behemoths have announced they’ll be recruiting large engineering teams in Toronto. Uber announced they’re investing $200M to build an engineering hub in Toronto.  Microsoft announced they’re moving their Canadian HQ to Toronto. If Toronto becomes the site for HQ2, we should rename Toronto to Seattle2.  Amazon already has over 700 tech employees in Toronto working on Alexa, Supply Chain, and Fulfillment systems.  Their footprint here is already sizeable.  The Bay Area heavyweights are all talking about building 200+ person engineering teams in Toronto.  

This will have both positive and negative effects for sure.  It’s going to drive up the cost of talent, poaching talent away from promising startups to join more established companies.  I honestly believe that life as a software developer is vastly different at Amazon vs a startup.  But companies like Amazon and the more established startups serve an important part of this ecosystem, they are finishing schools for new grad talent.  I’m convinced after they’ve worked a few years in a big-tech company, they’ll itch to join a startup and have more impact.  

In the short term, the biggest losers will be early-stage startups that are trying to find product-market fit and have limited funding because the loss of talent will be felt most acutely. Time will tell, but I believe these developments are good for Toronto, but there will be growing pains.