There’s a lot I don’t know about being a kick-ass boss, or being a great manager. I’m pretty much still a work-in-progress in that area. Thankfully, Kim Scott’s “Radical Candor” points me to the questions I need to ask myself about it, and suggests steps I should consider taking in order to do better.
Some memorable lines from the book:
- Relationships don’t scale. But the relationships you have with the handful of people who report directly to you will have an enormous impact on the results your team achieves.
- You strengthen your relationships by learning the best ways to get, give, and encourage guidance; by putting the right people in the right roles on your team; and by achieving results collectively that you couldn’t dream of individually. When you fail to give people the guidance they need to succeed in their work, or put people into roles they don’t want or aren’t well-suited for, or push people to achieve results that are unrealistic, you erode trust.
- It turns out that when people trust you and believe you care about them, they are much more likely to 1) accept and act on your praise and criticism; 2) tell you what they really think about what you are doing well and, more importantly, not doing so well; 3) engage in this same behavior with one another, meaning less pushing the rock up the hill again and again; 4) embrace their role on the team; and 5) focus on getting results.
- We are all human beings, with human feelings, and, even at work, we need to be seen as such. When that doesn’t happen, when we feel we must repress who we really are to earn a living, we become alienated. That makes us hate going to work. To most bosses, being professional means: show up at work on time, do your job, don’t show feelings unless engaged in motivation or some such end-driven effort. The results is that nobody feels comfortable being who they really are at work.
- It’s about finding time for real conversations; about getting to know each other at a human level; about learning what’s important to people, about sharing with one another what makes us want to get out of bed in the morning and go to work – and what has the opposite effect.
- Challenging others and encouraging them to challenge you helps build trusting relationships because it shows 1) you care enough to point out both the things that aren’t going well and those that are and that 2) you are willing to admit when you’re wrong and that you are committed to fixing mistakes that you or otherwise have made. But challenging people directly takes real energy – not only from the people you’re challenging but from you as well – so do it only for things that really matter.
- If nobody is ever mad at you, you probably aren’t challenging your team enough. The key, as in any relationship, is how you handle the anger. When what you say hurts, acknowledge the other person’s pain. Don’t pretend it doesn’t hurt or say it shouldn’t hurt – just show that you care. Eliminate the phrase “don’t take it personally” from your vocabulary – it’s insulting. Instead, offer to help fix the problem. But don’t pretend it isn’t a problem just to try to make somebody feel better.
- If we have the data about what works, let’s look at the data, but if all we have are opinions, let’s use yours.
- What growth trajectory does each person on my team want to be on right now? or Have I given everybody opportunities that re in line with what they really want? or What growth trajectory do my direct reports believe they are on? Do I agree? And if I don’t, why don’t I? Sometimes people really want to grow and are capable of contributing more than they have allowed to; at other times, they simply want more money or recognition but don’t really want to change the way they work or contribute any more than they do already. As the boss, you’re the one who’s going to have to know your direct reports well enough to make these distinctions and then have some radically candid conversations when you see things differently.
- There’s nothing wrong with working hard to earn a pay check that supports the life you want to lead. That has plenty of meaning. Only about 5% of people have a real vocation in life, and they confuse the hell out of the rest of us. Your job is not to provide purpose but instead to get to know each of your direct reports well enough to understand how each one derives meaning from their work.
- You don’t want to be the absentee manager any more than you want to be a micro-manager. Instead, you want to be a partner – that is, you must take the time to help the people doing the best work overcome obstacles and make their good work even better. This is time-consuming because it requires that you know enough about the details of the person’s work to understand the nuances. It often requires you to help do the work, rather than just advising. It requires that you ask a lot of questions and challenge people – that you roll up your own sleeves.
- It won’t get better all by itself. So stop and ask yourself, how exactly, will it get better? What are you going to do differently? What will the person in question do differently? How might circumstances change? Even if things have gotten a little better, have they improved enough? If you don’t have a pretty precise answer to those questions, it probably won’t get better.
- If you never ask a single question about a person’s life, it’s hard to move up on the “care personally” axis. probably the most important thing you can do to build trust is to spend a little time alone with each of your direct reports on a regular basis. Holding regular 1:1s in which your direct report sets the agenda and you ask questions is a good way to begin building trust.
- The platinum rule says, figure out what makes the other person comfortable, and do that.
Wait, what, it’s already been a month? 😮
It apparently took me an exciting month to build a moderately intricate multi-page mobile app, powered by Flutter, with custom calendar and credit card views. The designs for the pages already existed, which was good because I did not want to worry about designing an app for my first try with Google’s SDK and the Dart language. I only wanted to test-drive writing the code for the user interface and find out what tools and structure I could use for managing state and data, given a relatively short span of time. A month isn’t enough to understand everything about the framework but I did learn a lot from the experience. A realization: I can totally write mobile apps now if I want to.
Some notes I’d like to remember from the exercise:
Today, here’s a new batch of compelling videos I’d like to share, for the curious:
- What is Shift Left Testing? (by Alan Richardson, about shifting left and its meaning, consultancy speak, testing at all points of the software development process, and finding ways to improve our testing without resorting to consultancy speak)
- How We Work #4: Known and Unknowns (by Basecamp, on creative work, known and unknown tasks and why it’s more important to track them rather than estimates, and using the hill chart)
- A Better Technical Interview: 2018 (by Josh Greenwood, representing Test Double, about the binary hiring process existing in most industries, setting job and interview expectations, thinking about making the life of candidates better including the ones we don’t end up hiring, saying ‘Not Yet’ and providing constructive feedback, and the Bridge Agent)
- How Open Source has Made Me and the Stuff I Make Better (by Kent Dodds, on open source software, remote work, improving technical and interpersonal skills, documentation, and asking better questions and learning from other people)
- Office Politics for the Thin-Skinned Developer (by Justin Searls, about politics in the workplace, crazy organizational growth, building awareness, targeted empathy, being in the same page, how to make a difference, and allowing others to fail)
I’ve been messing around with Flutter, Google’s SDK for building native apps for both Android and iOS, recently. It’s been two weeks actually, and I’ve found myself captivated by how they’ve made it quite easy to build native and reactive UIs fast, which includes the usual validation and interactivity. That’s really awesome, especially for someone like me who’s never written any native mobile app before.
There’s still many things to learn though before I can confidently call myself a mobile app programmer – state management, databases, animation, APIs, to name a few. After feeling productive with the user interface, I’ll most probably try to tackle all of those in the coming months. For now I’ll keep practicing with our current project at work, will eventually share it with the team, then let them decide what they want to do with it.
In the immediate future I’ll likely write some tools on the mobile platform, for my own use or for others to try.
I’m not inherently a person who likes to travel a lot, although I have been to a few places within the country in recent years because there were specific experiences I’ve never done before and wanted to try, like going on an airplane ride, visiting an interesting museum, or learning how to surf. I enjoyed those experiences, even though those were mostly brief getaways with friends. Rolf Potts, however, in his book titled “Vagabonding: An Uncommon Guide to the Art of Long-Term World Travel“, wants us to consider travelling in the long-term rather than living for hurried weekend trips and why.
Some favorite lines from the book:
- Travel isn’t just for changing what’s outside, it’s for reinventing what’s inside.
- For some reason, we see long-term travel to faraway lands as a recurring dream or an exotic temptation, but not something that applies to the here and now. Instead – out of our insane duty to fear, fashion, and monthly payments on things we don’t really need – we quarantine our travels to short, frenzied bursts. In this way, as we throw our wealth at an abstract notion called lifestyle, travel becomes just another accessory – a smooth-edged, encapsulated experience that we purchase the same way we buy clothing and furniture.
- The more we associate experience with cash value, the more we think that money is what we need to live. And the more we associate money with life, the more we convince ourselves that we’re too poor to buy our freedom.
- No combination of one-week or ten-day vacations will truly take you away from the life you lead at home. Vagabonding involves taking an extended time-out from your normal life – six weeks, four months, two years – travel the world on your own terms.
- Wanting to travel reflects a positive attitude. You want to see, to grow in experience, and presumably to become more whole as a human being. Vagabonding takes this a step further: it promotes the chances of sustaining and strengthening this positive attitude. As a vagabond, you begin to face your fears now and then instead of continuously sidestepping them in the name of convenience. You build an attitude that makes life more rewarding, which in turn makes it easier to keep doing it.
- Vagabonding is not like bulk shopping: the value of your travels does not hinge on how many stamps you have in your passport when you get home – and the slow, nuanced experience of a single country is always better than the hurried, superficial experience of forty countries.
- If there’s one key concept to remember amid the excitement of your first days on the road, it’s this: slow down. You must keep in mind that the whole point of long-term travel is having the time to move deliberately through the world. Vagabonding is about not merely re-allotting a portion of your life for travel but rediscovering the entire concept of time. At home, you’re conditioned to get to the point and get things done, to favor goals and efficiency over moment-by-moment distinction. On the road, you learn to improvise your days, take a second look at everything you see, and not obsess over your schedule.
- When you want to hurry something, that means you no longer care about it and want to get on to other things.
- Shortly after arriving at your initial destination, find a beachhead (be it an actual beach, an urban travelers’ ghetto, or an out-of-the-way town) and spend a few days relaxing ad acclimating yourself. Don’t strike off to hit all the sights or actualize all your travel fantasies from the get-go. Stay organized and interested, but don’t keep a things to do list. Watch and listen to your environment. Take pleasure in small details and differences. Look more and analyze less; take things as they come. Practice your flexibility and patience – and don’t decide in advance how long you’ll stay in one place or another.
- Don’t set limits on what you can or can’t do. Don’t set limits on what is or isn’t worthy of your time. Dare yourself to play games with your day: watch, wait, listen; allow things to happen. Wherever you are, be it the Vatican gift shop, a jungle village in Panama, or downtown Ouagadougou – keep aware of the tiniest tics and details that surround you. Anything that is remarked, even little flowers or leaves picked up off the ground and shown to a child, even a shoeshine or gravel pit, anything is potentially an attraction.
- The greater value is not in what you’ve seen and checked off the list, but in what you’ve learned deeply, the hard way.
- Once you have learned the basics, it becomes clear that having less work is easy. It’s filling the void with more life that is hard. Finding excitement, as it turns out, takes more thought than simple workaholism. But don’t fret. That’s where all the rewards are.
- What I find is that you can do almost anything or go almost anywhere, if you’re not in a hurry.
Looking at the screenshot above, it’s ironic that there’s a mismatch between the commit message and the actual pipeline result from the tests after pushing the said commit. 😛 What happened was that after making the unit tests pass on my local machine, I fetched the latest changes from the remote repository, made a commit of my changes, and then pushed the commit. Standard procedure, right? After receiving the failure email I realized that I forgot to re-run the tests locally to double-check, which I should have done since there were changes from remote. Those pulled changes broke some of the tests. Honest mistake, lesson learned.
I frequently make errors like this on all sorts of things, not just code, and I welcome them. They bewilder me in a good way, and remind me of how fallible I can be. They show me that it’s alright to make mistakes, and tell me that it’s all part of the journey to becoming better.
And yes, testers can also test on the unit level! 🙂
Knowing how to automate things and building scheduled tests to monitor known application behavior does not guarantee bug free apps.
They do help boost confidence in what we’ve built, and that makes us more comfortable releasing changes into the wild, because it means we’ve explored a fair amount of feature breadth. It’s not the only strategy I’m sure to use given some software to test, but it’s something I’ll practice every after thoughtful exploration.
But, even with that tool to augment my testing, I have to keep my guard up. Every time, I should keep asking myself about the more valuable matter of the unknowns. What sort of things have I not considered yet? What scenarios might I still be missing? Have I really tested enough or am I merely being overconfident, just because I can automate?