# Karney Li's Manager Readme

**CTO at Wealthsimple**

I'm excited that you've joined our team and I want you to be super successful!

I wrote this document because getting to know me is hard and learning my expectations usually takes time. Over the course of our working relationship, we'll get to know each other better, either through 1:1s, meetings, or day-to-day interactions.&nbsp;

I'll try to support you, find ways to unblock you, provide you the mentorship and training that you need to excel in your role in delivering software.&nbsp; This is a good guide on what my expectations are and how to interact with me. It would be helpful to first understand a little bit about me and my background.

# Before Wealthsimple

I graduated from the University of Waterloo with a degree in Mathematics and Computer Science.

After graduation, I moved to Seattle and worked for Amazon. In those days, Amazon made little money and was a company only 1/50th of the size it is today. I did various roles there, from Software Developer to Development Manager. I really believe I was there during some of the most exciting times, I got to work on the design of some really important supply chain and fulfillment systems, Kindle and warehouse automation. I was a [bar-raiser](http://www.businessinsider.com/amazon-bar-raisers-2014-1) and eventually, I moved back to Toronto to bootstrap the Amazon Toronto Dev Centre. I look really fondly upon the time I had spent at Amazon, I learned so much there. Much about what I know about management and software development I learned from Amazon. In the last few years, I was managing several dev teams, but missed being an individual contributor and I didn't want to spend my entire career at Amazon so just before my 10-year anniversary, I left to bootstrap a food delivery startup.

I hated it. I realized that being the CEO of a bootstrap company wasn't for me, I missed software development. I found myself focused on business development, operations, talking to potential investors but spending very little time designing or developing software. This wasn't for me, so I decided I was going to find a job developing software and that search eventually landed me at Wealthsimple. At the time, I was the 4th developer, only Peter and I are still at Wealthsimple from those early days. I didn't really know ruby anymore when I joined, so I (re-)learned it.

I was happy to just develop software when I joined Wealthsimple. Over time I found myself leading the dev team and now I'm leading a team larger than any team I've ever led before. I'm super proud of the team I've built at Wealthsimple, I think we have some really great talent here. I've grown a lot at Wealthsimple.

# What's my job?

I'm the CTO at Wealthsimple.&nbsp; I'm also performing the role of VP of Engineering.&nbsp; My job is to ensure that the engineering organization delivers & maintains software that meets our business objectives on-time and with high-quality. I actually wrote up what this entails in Wealthismple Engineering Roles but by and large, I'm responsible for everything in Engineering from technology choices, what we will/won't build, how we're organized, how/who we hire, what our cultural/engineering values are, how we manage performance, how to deal with operations, etc. I need to keep abreast of new technology so I can make informed decisions, you might actually see me coding from time to time as I learn things. Nowadays, I can start, but I will need help to finish, I&nbsp;simply don't have enough time in my day. I am a fairly capable software developer and understand a wide breadth of software disciplines.

# What things I value

They say that your first job really sets the tone for how you will work the rest of your life. If that's true, then in my DNA I think like an Amazonian. I admire Amazon's [leadership principles](https://www.amazon.jobs/principles) a lot, read them and you'll start to understand me pretty well. It's important to note that **Wealthsimple is not Amazon.** I want to kick myself whenever I say, _“At Amazon we...”_, I personally dislike [namedropping](https://en.wikipedia.org/wiki/Name-dropping) and hate myself when I use it as justification for an argument. I'm a humble person at heart and don't like being flashy. Nevertheless, you'll notice that Wealthsimple has some very similar values to Amazon's, I didn't create these values at Wealthsimple:

- “Keep it simple” (Wealthsimple) == “Invent and Simplify” (Amazon)
- “Do what's right for each client” (Wealthsimple) == “Customer Obsession” (Amazon)
- “Dress to impress” == “Insist on the highest standards” (Amazon)
- “Shipit” == “Deliver Results” (Amazon)

## Trust

As a leader, I aspire to develop leaders that I can trust fully and I want them to trust me. Sometimes you might hear me talk about succession planning or “working myself out of a job”. I really believe this, the sooner I can find someone to do elements of my job, the more time I'll have to spend on things that I think would help us innovate as a company. Deep down, I want to spend my time thinking and developing technology. If you're not doing your job well or I think you're no longer right for the job, I will say so. Honesty and transparency is a good way to build trust.

I really love working with people that are smarter than me. I learned long ago that I'm not going to be the best at everything, nor would I have the bandwidth to do everything. I really love it when someone has a really clever way to solve a problem that I had never considered. It gets some real brownie points.

## Work Long, hard, smart

Jeff Bezos once said, _“You can work long, hard, or smart, but at [Amazon.com](http://Amazon.com) you can’t choose two out of three”._ That quote stuck with me. At certain times you will have to work long (long hours) and hard (with lots of intensity), but working smart is the most difficult to achieve. Personally, being inherently lazy has benefitted me well in my career, instead of brute-forcing things, I usually try to find clever ways to solve a problem or automate it so I don't need to work as long or hard. That being said, I still usually put in a 10-11-hr workday. I'm on the train at 7am, work on the train for an hour, catch a 6pm train and usually work on the train until 7pm. I don't expect you to work like this, I would hope you can find ways to be smarter than me! I don't believe in face-time but I do believe in benefits of pairing with colleagues. I could care less if you want to work remotely 25% of the time, but at the end of the day you need to be available when your team needs you and they definitely will. I believe that to manage people well remotely is psychologically hard, some people crave human interaction.

# My schedule

My calendar often can seem daunting. I have a lot of 1:1s and meetings, I try to front-load all my meetings to the beginning of the week. I have a very manager schedule (as opposed to a maker one). I actually hate wasting time in meetings and I try to keep them to 30 minutes, I try to arrive on time and leave on time. I don't like it when people show up late, you'll notice me looking at my watch frequently, it's because I'm trying to make sure I say what needs to be said and move on. I believe that making meetings shorter forces people to prioritize what's discussed, end them early so you can make it on-time to the next thing. My brother said to me once, “if you're not early, you're late”.

I'm always available for an interrupt, you don't need to ask if I'm free. Feel free to Slack me, I always read everything and respond if appropriate. You'll have more success with Slack vs email at Wealthsimple, we just don't use email much. If you have something urgent you need to talk to me about, just pull me aside and I'll make the time. If the house is on-fire I want to help the best I can to put out that fire. If I can't help personally, I will find someone who can. I often tell people, _“don't let me be the last to know”_. This is around expectation setting. If my expectations are set early and often, I won't be surprised. If I learn after the fact, I can only be surprised. Set my expectations early and we can work on a solution together.

I sometimes code, gasp! Yes, I do it because either a project is really in a crunch or because I find the need to stay sharp on technology. I believe that respect in engineering comes from being able to walk the talk. I want to make informed decisions on technology and what's new, get my hands a bit dirty and try to do the things myself so I'm not just all talk. For example, after reading and hearing all the advantages about GraphQL, I went and wrote some GraphQL endpoints in fort-knox so I could be better informed. But given that my schedule is so interrupt driven, if I start something I usually won't have the time to finish. I usually end up handing it off to others unless it is purely development done for research purposes.

# DRI model

Apple popularized the DRI model. Amazon has a value around ownership. In the earlier days, Wealthsimple had a value around being a maker-owner. I think we should have an explicit value around ownership. I want people to think like owners. The DRI model is about a person being directly responsible. Don't pass the buck, be the one who wants to own it, and communicate that you will be the owner, don't wait for someone to assign the responsibility or figure out the solution.

I believe that software developers can change the world, no other occupation can one person have so much impact on so many others with a few keystrokes and their imagination. I will sometimes have an opinion on something, but you can push back if you feel otherwise; you will still need to get peer consensus. If we disagree on something and are at an impasse, I might say it's time to “disagree and commit” and at that point I expect that we both commit to a solution and put in 100% of our effort and get the job done. There will always be someone who is responsible to get 'er done.

# Transparency

It is not in my nature to be secretive and I believe I'm not in practice. I believe if people need to know things, I should share it. That being said, I also dislike people being nosy, gossipy, rumor-mongering, etc. If there's something you want to know to do your job, ask, I'm happy to share what I know on a topic. If I think you're being needlessly nosy, I might ask you why it's important. Sometimes, I might actually not have the answer, in those cases, I'll find someone who might. Often times, I might not have a great answer, if that's the case, I've been known to explicitly say so.

# CommunIcation

Communication is extremely important. Setting expectations well depends on how you communicate. Choosing the right medium is important in an organization our size. If you want to hold an effective meeting with peers to get consensus into a plan, you should come prepared. Come with a Quip already written so we can read it and quickly get up to speed on the problem and possible solutions. 8 people in a room for an hour is almost a day's worth of productivity lost. I personally prefer written communication (prose) over presentations (slide decks).

For dev teams, I expect emailed weekly updates. Preferably on Friday. These are important to me. When Wealthsimple was small, we used to all do them, they were useful then and even more useful now that the team is so much larger. I do read them and I provide feedback. They help with transparency and allow us to react faster to problems whether they're operational or development related. Please don't make me chase the weekly updates, set a reminder in Slackbot or on your calendar to write and send them out.

## Process & Software Development

I've never prescribed to one form of software development methodology over others. I've tried many: waterfall, scrum, kanban, XP, just to name a few. I believe in agile development, writing tests, and automation. Note the [Agile Manifesto](http://agilemanifesto.org/) does not prescribe a development methodology. Each methodology has its pros and cons, each dev manager should choose what best works for them and their team. I don't believe you should force a square peg into a round hole.

That being said, I'm always obsessed with speed. The sooner we deploy something the sooner we will learn about what our next move needs to be. Reality should be our guide. I like seeing things in sequence diagrams and data models, it helps us move beyond hand waving to more concrete possible implementation solutions. So if you have something you want to get us to implement, draw a diagram in [draw.io](http://draw.io)&nbsp;or [lucidchart](https://lucidchart.com) and then use it to communicate in your Quip :)

# Operations

I expect you to own your operational excellence. It is your software, your team developed it. If it breaks, I expect you to be the first one jumping to find a fix for it. It's a bad smell if I'm chasing you about your team's unresolved tickets, pages that have escalated to me, Rollbar errors run amok, or metrics that have gone berserk. I know things can be overlooked once in a while when things get particularly hectic, but put monitors, alarms, and process in place or ask for help.

# I make mistakes

I try to make decisions based off all the data I can get my hands on but I make mistakes. I made the mistake of pushing us towards Angular vs React because it was the only web-framework most of us knew at the time. I made the mistake of implementing the first version of leapfrog in ruby which was woefully unstable because of Oracle driver issues. We all make mistakes, I expect you to make mistakes. I don't like group-think too much; a camel is a horse designed by committee. Sometimes we need to go with our gut. I believe if you have the conviction that a solution is the right one and you've done your homework, you'll be able to make it succeed, no matter how deep a hole you dig yourself into you'll dig out of it, but only if you have conviction. That being said, I'm really driven to succeed. I hate to see failure. You should be too.

# Some of my other personality traits

People often say they don't hear me giving praise much. This is true, I don't do it often enough. Generally, if something isn't working out, I'll let you know immediately. If you're curious about what I think about something, you can ask. There are rare occasions where I've given praise and when I do, I do it effusively. If I'm nagging you about something, please do it. My patience is not unlimited, sometimes we just have to [disagree and commit](https://en.wikipedia.org/wiki/Disagree_and_commit) and get it done. In fact, you can often see my patience wane during long meetings, so if you have me in a meeting, get the important stuff out of the way in the beginning! If I'm overbearing or say something that lacks empathy, just let me know. I have very thick skin and can take criticism in stride, but you can rest assured I will find a way to fix it.

That's it, that's working with Karney in a nutshell.

