Blog

Great development is about more than code

Most developers start out focusing solely on learning how to write code; usually a specific language and specific techniques. I started out with BASIC; spending many hours tinkering with games and graphics. I loved creating things just to see if I could create them not because there was any need to do so. 

Later I used the same approach to learn the syntax and capabilities of Java. It was easier this time, many of the skills I’d learned from BASIC were applicable despite the language differences. As my knowledge increased I created more sophisticated, and complicated solutions. I felt like I was becoming a better developer and I was, but I still wasn’t what you would call a good developer.

It took many years for me to really appreciate the importance of fully understanding a problem before even thinking about the solution. Spending time, often way more than you feel comfortable spending, thinking about the problem before writing a single line of code is hard. It feels counter-intuitive to see a problem and not immediately start trying to solve it. Experience taught me that good code design does not come from writing code.

Believing that complicated code is better code is a mistake, and one commonly made. Good code is the right code for the problem. It’s the right code for the team (language, tools, level of documentation), and it’s the right code for the problem (testability, maintainability, extendability). Often that means that the best code for the job is the most boring, simplest code. The kind of code that anyone in the team can pick up and work with.

Great developers are those that can see a business problem, collaborate with others, and design the simplest solution to get things done. They’re able to balance their time to support others, investigate ideas, as well as writing code. Being proficient in the language is a big part of their success, but it isn’t the only part. Anyone wanting to increase their development skills needs to look past simply writing code and start learning how to design great (simple) solutions.

How to stop being so busy

Busy people are not successful people.

We mistake being busy with being productive. We get hit after hit of dopamine, the so-called “Happy Hormone” as we check off items on the to-do list, or smash out emails, all the while boasting on Twitter that we are “Just so busy”. It feels good, and it can become addictive.

Many companies reinforce our behavior by creating a heavy meeting culture or constantly hitting employees with short-term deadlines that they have to scramble to meet. Of course there are times in life when we really do need to be busy; the day before a deadline, or when we’re planning a big event we might need us to push our sleeves and get things done.

The problem comes when we get stuck in the “busy mode” either through our own choice or because of someone else’s. Over time we lose the ability to even see that we’re permanently reactive with little ability to control our own workload or direction. For many of us, going home tired at the end of the day makes us feel satisfied. We equate tiredness to productivity, and come to think that we should always feel this tired as proof that we’re doing our job.

But being busy is a choice.

When we spend all our time being reactive and busy we lose sight of the long term. Even with the best intentions, you won’t find time to be strategic if you’re always fighting against the tide of being busy. Not being strategic means we’re not planning our choices and miss the chance to prevent reactive situations from occurring.

Maybe as managers we’re too busy to see or deal with someone who’s unhappy in their role. When they quit we’re forced into a reactive situation. As an engineer we can get stuck shoring up a crumbling architecture, desperately fixing bugs to keep things working. But at the same time we’re missing the chance to stop and design a system that scales, or is secure, and maintainable. Anyone seeking a promotion needs to find time to stop, look around, and work out what the strategic work really looks like. Otherwise you’ll be stuck where you are, all the time wondering why your manager isn’t rewarding you for fixing 5 million bugs or running 200 meetings.

When we get stuck in the permanent busy mode we need to work twice as hard just to stay where we are. All the while we miss the opportunity to make the right choices to help ourselves or our teams move forwards.

Strategic thinking is the only way to progress.

To create time for strategic thinking we need to do less stuff; either we need to delegate things or we need to reject things.

An Eisenhower Decision Matrix can be a great way to separate tasks into the Important, and the Urgent. Anything urgent but not important can be delegated, anything not urgent and not important can be rejected.

Everything else is either done now or scheduled in. Make sure you include self-care in this group. Self-care is often de-prioritised by busy people but neglecting yourself severely hinders your ability to stay healthy and sharp.

The Eisenhower Decision Matrix can be a great way to see when too firmly stuck in Tactical or Strategic mode. If all your tasks sit in one part of the matrix then you can clearly see that you place too much emphasis on tasks of this type.

EissenhowerMatrix

For anyone in a senior or leadership position having tasks in your Urgent, Not Important quadrant is a strong indicator that you’re not delegating enough. When you fail to delegate you fail to give other people opportunities. Correct this as soon as you can.

Once you’ve decided what you’re going to work on, and more importantly, what you’re not, you need to tell people. Make your priorities or calendar visible to the people around you and fiercely defend it so they know you’re serious. If they disagree with your priorities ask them to help you decide what gets de-prioritised to make space for their task. Be clear about the trade-offs.

If you have strategic work time scheduled in make sure you protect it at all costs. Lara Hogan has some brilliant advice on how to set up your calendar to be most effective for you. When you know the times of day that you’re most effective you can use them for the most important tasks. It seems obvious but many of us try to squeeze in important work when we have the time rather than carving out time for it. It should go without saying that important work is important. Give it the respect it deserves.

Finally, learn to say no. It doesn’t need to difficult, simply thank someone for thinking of you and politely decline.  You can’t do everything and you won’t be able to meet everyone’s expectations but that’s ok. Take control of your life and spend your time in a way that gets you to your goals.

2018 in Books

Books_of_2018_-_Google_DocsSometimes we read the book we need to solve the problem at hand. Other times we read a book and only afterwards see the situations that it has taught us to see.

2018 was a little lighter on reading than I would have liked but I did discover, and rediscover some gems.

First up was a reread of The Phoenix Project: A Novel about IT, Devops, and Helping Your Business Win. Five years on from its first publication and it’s starting to feel a little dated but still an excellent book with relevant lessons. Focusing on flow, and making work visible were key takeaways for me this time around.

Next up I read, and loved, Powerful by Patty McCord. Patty writes about recruiting, motivating, and creating great teams based on her experience developing the culture at Netflix.

What takes the place of rules, processes, approvals, bureaucracy, and permissions?” The answer: Clear, continuous communication about the context of the work to be done. Telling people, “Here’s exactly where we are, and here’s what we’re trying to accomplish.”

And

“You want to be a lifelong learner; you want to always be acquiring new skills and having new experiences, and that doesn’t have to be at the same company. The fact is that sometimes you’re hired by a company to do something, and then you do it and it’s done. If I hire people to rebuild my garage, when they’re done I don’t need them to rebuild the back of my house.”

The most practical book I read in 2018 was Accelerate: The Science of Lean Software and Devops: Building and Scaling High Performing Technology Organizations by Nicole Forsgren, Jez Humble and Gene Kim. This is a book crammed full of tips for helping teams achieve success, I particularly appreciated the focus on burnout that threaded its way throughout the book. Important reading.

Radical Candor by Kim Scott was my book of the year. “Radical candor is the sweet spot between managers who are obnoxiously aggressive on one side and ruinously empathetic on the other. It’s about providing guidance, which involves a mix of praise as well as criticism—delivered to produce better results and help employees achieve”. There are many, many great stories and transferable tips shared in this book. A joy to read, and a book that has changed the way I manage and want to be managed.

I ended up highlighting most of the book but this quote neatly sums up how it made me feel

“If you want to build a ship, don’t drum up people to collect wood and don’t assign them tasks and work, but rather teach them to long for the endless immensity of the sea.”

My final book of the year was Switch by Chip Heath and  Dan Heath. Years ago I struggled through Thinking Fast, Thinking Slow, enjoying the message but finding it hard to recall accurately. Switch does a great job of sharing the same message in a far more accessible format. I absolutely loved the Elephant and the Rider metaphor to describe our minds, and I found the stories in the book to be interesting and highly motivating. I can’t wait to put these ideas into practice in 2019.

How was your 2018? Did you discover any books worth shouting about?

The Reverse Pilot

Growing effective teams requires a lot of experimenting. As people join the team and grow they’ll change the team dynamic. New ideas will be suggested and new difficulties will appear. Adapting to proposals and challenges naturally leads to changes and it feels productive, and positive to introduce new ways of working.

When we look back on situations we tend to focus on what was missing. Missing requirements, understanding, or more practical things like missing alerts or monitoring. We add in extra technology, or meetings, or process to try to fix the problems we see.

It can be easy to forget that sometimes we need to be removing things to be more effective.

Measuring Change

When we introduce processes or tools we usually bring them in after considering the options. We agree on a trial period and consider who needs to be involved in the trial. Usually we’ll have something to measure, or assess to give a measurable assessment of the change.

If we don’t see the hoped benefits, or especially if we experience new discomfort from the introduction, we’re happy to abandon our experiment. Abandonment doesn’t necessarily mean we give up entirely, instead if the pain is bad enough, we might seek out a new change or tool to achieve our goals.

Critically assessing our current tools and process in the same way could bring similar benefits to team effectiveness.

Learning By Doing

I once worked on a team that was having difficulty releasing our code. Building and testing each release was painful, the actual release itself took much longer than expected, and we often had unexpected problems once we got the code into production. Each time we hit a problem we discussed what had gone wrong and usually added another safeguard to the process.

Over time we Introduced sign offs from the design team, the product team, and the test team. We become more cautious about who could release and when. Releases became less frequent to reduce the impact on customers. Eventually we ended up with a slow and inflexible process that made releasing anything at all painful and stressful.

It would have been easy to keep tinkering with the existing process and most likely adding more safe-guards and checks to try to improve the quality of releases. Experience tells us that when things are going badly we’re missing something and we keep on adding steps and tools to our process until things work.

Luckily a new team member came in with fresh eyes and forced us to step back and re-evaluate. Instead of trying to improve our current process we went right back to the beginning and evaluated what we wanted to achieve. We defined the values that mattered to us, and we worked out what success would really look like. Afterwards we designed a new, totally different, process that met our values. Surprisingly it removed almost all of the safe-guards that we previously thought were needed to make releasing safer. The result – a process that actually did what we wanted it to do, and ended up being more effective than our original one too.

Take An Intentional Step Back

Taking the time to step back and consider exactly what you hope to achieve with your process is a great way to start cutting it back. A daily practice like standup can become a habit without necessarily achieving the goal of improving team communication. Realising this is the first step towards experimenting with alternative communication styles. Take the time to define your values and then assess your current approach against these values. Are you meeting them? If not, why not?

Focus On The Small As Well As The Large

Not all change needs to be large to have a significant impact. Sometimes a number of small changes can have a far bigger result and will almost certainly face less resistance than a single big-bang change. Skimming off small but unnecessary tasks will save you time and lead to a streamlined, effective culture.

I once produced a weekly, company-wide, email newsletter to summarise all the changes that were going on in the Technology department. I described the experiments we were running, translated the technical release notes into English, and explained why these changes were important for our users. The newsletter took a lot of time and effort to produce. Often the technical description of releases was meaningless, and missing the critical ‘why’ explanation. for each one I had to track down the original author to find the answers I was trying to give to others. Once I had the details I had to write the email, create and attach screenshots, and email it out.

People were reading the email but there was no real feedback. Even more significantly I couldn’t see any change in behaviour as a result of the email. I still had to hunt for the information I wanted, and the recipients still asked questions about things that I had covered. The email didn’t appear to have the impact I had hoped so I decided to run a reverse pilot and simply stopped sending it.

A week later and nothing. No one asked about it. The questions about technologies changes were the same. I took that as a positive result to my own experiment. If the email wasn’t missed then it clearly wasn’t adding enough value to justify the time I was putting in.

Several years later someone asked me why I didn’t send the emails anymore. They remembered the email and had found it useful. Not useful enough to follow-up when I stopped writing it, but useful enough to remember it having existed. Together we found an easier way to produce a shorter email that provided ‘enough’ value without taking so much time to create.

In Summary

Finding the ideal tool or process takes time and will likely require us to add or remove a number of steps to get to the ideal place. The “reverse pilot” provides an easy way to test out whether you can remove things from your process. Approach it in the same way you would an introduction of a new tool or process and be prepared to reinstate the change if results show that you should.

Manage the energy for successful meetings

Successful meetings, workshops, and even smaller group discussions rely on creating and managing the right energy. A meeting where everyone has low energy will feel long and boring, whereas a small group discussion with too much high-energy can feel like an argument waiting to happen. 

Experienced workshop designers will know that scheduling breaks at the right time is important, as is the essential “after lunch energiser” to get people engaged again. Meetings and work discussions are no different. 

Finding ways to generate energy is an important part of a successful meeting. A couple of minutes of light-hearted chit-chat as people get settled can help set the tone (if appropriate for the meeting content). If the meeting is mostly about relaying content then it can be easy to rely on powerpoint presentations but finding a way to incorporate physical items such as paper cut outs, or port-it notes can be very effective at engaging the audience. Simple tasks such as grouping statements on bits of paper instead of reading them a list, or asking for agenda items to be written on post-its rather than typed into a document can make the meeting feel collaborative and energising. 

Movement is another great way to generate energy. Having people stand up and move around completely changes the energy in the room and can serve as an excellent switch between stages of a meeting or workshop. Workstations where attendees move around to focus on smaller topics or tasks are fun and help keep people engaged, but even something simple like standing up to stick a post-it note on a wall can be enough to get people focused. Movement can be an effective way to break people away from laptop distractions too, something which can be a big culprit in sucking energy from the room. 

Spending time sitting and writing will reduce the energy and also give people time to think and reflect. I’m a big fan of having people sit in silence for a set amount of time, for example silently writing topic suggestions for 5 minutes at the beginning of the meeting to encourage deeper thinking. In “Time to Think” Nancy Kline writes about the importance of giving people space to think, but also the power of them knowing they won’t be interrupted for a set amount of time, freeing them up to really think. 

Not everyone can think on the spot, and not everyone will be comfortable speaking up in front of a crowd so mixing up the meeting formats can help different people engage in a way that suits them. Having time to prepare and then choose what I’m comfortable sharing is a much kinder way to encourage engagement than putting someone on the spot in a meeting. Sharing the meeting format in advance can give even more time for participants to plan their contribution. 

Bringing groups of people together can have unpredictable results and learning to redirect energy is essential facilitation tool. It can be hard to know in advance that energy will need to be managed but signs such as an unresolved discussion, or lack of actionable outcomes can be good indicators. When discussions becomes heated they can get stuck in a head-to-head energy battle that is difficult to resolve. Re-directing this energy into a different form can really help move things along. Whiteboards, or post it notes for example, can be a new focus for the energy, even a simple request such as “can you sketch that out for me on the board” can help to move the discussion along in a low-conflict way. 

Creating meetings that include both movement and deep thinking can lead to thoughtful discussions with energised attendees. Keeping people engaged and knowing how to resolve deadlocks will lead to more enjoyable, and effective meetings. Try introducing one change with the intention of shifting the energy in your meeting and see whether you see an impact.

Teach people to ask “Why?”

Why

Schools kill creativity. From a young age students are taught to listen to the “expert” and believe everything they’re told. Very few lessons focus on teaching young people to form an opinion, or question the facts being presented.

As adults we join workplaces that have strong hierarchies. Information and policies flow down from the top and everyone underneath is expected to follow along without causing a fuss.

We attend conferences, read books, and hear people tell us the right way to do things all day, every day.

But really good teams are formed of people who can work together and push each other to be better. They’re formed of people who respect each other, listen to each other, and then question the ideas. Pooling our collective experiences allows us to be greater than the sum of our parts and working together allows us all to learn and improve.

For most people having to justify themselves, and explain the thought-process they went through to drive at their argument helps them be better. So often we decide things instinctively, without examining our own biases or influences. It can be easy to design something, or build something for the wrong reasons, and it is easy to do because we generally don’t have to explain ourselves to anyone.

To change things we need to start teaching everyone to question decisions regardless of where they come from. When someone proposes a new way of doing something I expect them to present their argument with the pros and cons of adopting the change. When we reflect back on things, that have either gone well or not so well, we should take the time to think back over the pros and cons we identified. Were we right? What did we miss? How can we better next time?

Successfully changing people’s decision-making requires time and consistent expectations. As leaders we should encourage everyone in the team to question others on their thinking. Changing the format of meetings to encourage upfront prep, and discussion time before we get to the decision making can help. Making sure we have a safe space to allow everyone to actually have a voice is critical.

When we present decisions or direction we should set an example and present the options we saw and the advantages and disadvantages we can see from the route we chose. Invite others to question your ideas and tell them if they successfully help you change your mind. We should celebrate having input from others.

It can be hard to change the way people work, and we can seemingly be making our own work harder by inviting everyone to have an opinion on it, but questioning and justifying decisions is essential for team health.

Default to Good

Our behaviour is shaped by many things; our experiences, our values, the environment around us. At work we have to make decisions about things we may not fully understand. We have to explain our decisions, and convince others to join us even when we’re not sure of the way.

Sometimes things are easier, maybe you work for an ethical company that’s clearly doing things to make the world a better place. Working somewhere like this, I imagine, would easily lead to good choices.

For the rest of us things are more blurry. You might work for a fantastic company for the wrong reason. You might work for a friendly company that don’t make the world a better place. You might work for a downright bad company for very good reasons.

As you go about your job, and life, you have to make decisions. If you’re a manger some of those decisions will be about how other people should live and work. You oversee goals, objectives, promotions, and pay rises. You might make decisions about hiring or letting people go, re-locating teams or ending projects, These things can be hard. The right decision might not always feel good, maybe people are being made redundant, or you’re forced to u-turn on a hiring decision. Generally decisions like this come after a long, well-considered period of evaluating the options. There are laws and guidelines to make sure we do the right things in these circumstances even if they still feel nasty.

But not all decisions are so big.

As we go through our day-to-day life we make decisions about all kinds of things. Many of these decisions are made with little data, or even very little consideration but they can have big implications. You might need someone on your team to do some additional work, or work late in the office. Maybe they need to stop what they’re currently working on, or join a different team.

Sometimes it can feel even more minor, maybe someone wants to leave early for an appointment, or work from home. Even if we don’t have a full picture when we make these decisions we can make the right decisions by simply doing what’s right as a human. We can make sure they understand what we’re asking, and why. We can give them space and time to articulate their concerns or questions, in the format that best suits them.  We can trust them.

When asking people to do something different or new we can remove a large workplace stress by simply making the priorities clear. Adding more work to a busy workload is a common and unfair practice. We should clearly state out expectations of where this fits into someone’s work, and if we don’t know what else they’re working on we should make sure to find out before deciding to allocate more work.

As managers we will often have more context on situations and are well placed to drive direction through a team but we should treat that context as a privilege. People choose to work with us, and by taking just a bit of time to work with them we can remove so much of the work-place frustration and stress.

Three easy ways to maintain momentum

A lot of work involves other people, and more specifically depends on other people doing something. Decision-making with a group of people can be frustrating, it takes time and you can end up feeling like everything would be much easier if you were doing this alone. However teams don’t work that way and successful changes generally only come about when everyone involved feels like they contributed to the decision.

Maintaining momentum is one of the easiest ways to keep people engaged in the process. Context switching is hard; it takes time, and it takes energy. You can help people to stay engaged in your project by avoiding the long delays between context switching. It is much easier to compete a task with a small amount of work, often, rather than a large chunk of work, followed by a slump, and then another large chunk of work. Even without the challenges of scheduling in large chunks of work the later approach is painful because of the energy needed to re-start on the task after the gap.

That doesn’t mean hassling them (too much!), but instead focus your efforts on keeping things moving at a steady pace so that the rest of the group doesn’t need to expend a huge amount of energy to re-engage with the project.

Here are three easy ways to keep things moving:

1) Share documents with the correct sharing settings
How many times have you turned to a task only to discover that the document you’re meant to be editing or commenting on has been shared with ‘view only’ settings? Now think about how long it took you to get the correct settings, if you ever did, and the impact the delay had on your responsiveness. I’d bet that not having the correct settings on the document meant you left it until later to complete, maybe you never got around to completing it.

2) Respond to questions quickly
When you’re working with others on a task it’s normal to expect some clarifying questions. They might be wondering if they have the right document, or double-checking they understand what you need them to do. Delaying your response is a sure way to kill their engagement.

Recently I was working on a group presentation and asked a quick clarifying question to the organiser. It took two days to get a response. Two days. In those two days I’d become involved in another, better defined task. I eventually returned to the presentation but not until another day later. The delay in getting my clarifying answer ended up being the time to get an answer plus some additional time due to a perceived lack of interest from the organiser. Respond quickly. Show that you care about the task.

3) Be clear about what you’re expecting people to do
Ever had a document shared with you without comment? Did you do anything with it? Even the most dedicated team player will struggle with uncertainty. If you need someone to do something then ask them. If you’ve asked them face to face and are sharing the document at a later date drop in a note to clarify that this is the document you were asking them to complete. Don’t assume that the other person understands or remembers everything you’ve said.

What tips do you have for maintaining momentum in your teams?

It starts with a change

The person you are at 35 is not the person you were at 25. No one really explains that as you grow up you change. You start to like different things, and maybe even dislike things you really liked when you were younger. Life experiences can open new doors, or scar you beyond all hope of recovery. Maybe most surprisingly you just get bored.

After many years of enthusiastically testing, re-testing, and hopefully overseeing smooth releases it’s time for a change. I’m still an avid fan of great testing, and will always love the incredible testing community that now contains a number of very good friends but my interests have changed. Right now I’m excited about working with, and supporting the teams who build the great products.

My original blog will remain up, and may even see a new post from time to time, but this is my new home. Follow along for thoughts on managing people, hiring, building great teams, and spreading happiness at work.