You Are A Leader, Not A Messenger. Act Like It!

We live in a global, incredibly complex and fast paced world. In most organizations of bigger than small size you can see the complexity of interaction increasing with every new employee, every new product and every new customer. If you are a manager in such environment you may sooner or later find yourself in a position that your decisions are actually not yours to make. Or at least, you feel that way.

You can’t just add a new benefit for your team, you need to talk to HR and finance teams. You cannot just add a feature to your product, you need to talk to product management, marketing, sales, and customers. You cannot just set your own working hours as they depend on when the rest of your team or your customers are around. There are so many constrains that you feel you are no longer a manager but just a proxy for decisions made by someone else. Guess what, you and only you are responsible for this! You are responsible for your own actions and more importantly you are responsible for your own feelings.

To make things worse, your feelings, words and actions have a direct impact on your team. If you get to the habit of blaming others for your inability to make things happen it will reflect on the team spirit. “He doesn’t have the power to make decisions.” “Everything needs to be decided in HQ.” “We told them this won’t work and they don’t listen.” “Customers have no clue what they want.” Before you know it you have a culture of “us against them”, with “them” being another team, another department, location, or even customers.

So what can you do to change things and to make sure you and your team don’t end up with senseless negative self-talk that will prevent you from enjoying your work and deliver great results?

Not your decision? Then do your best to influence it

Very few decisions are yours only. Most of the time you need to cooperate with others to get their buy-in, acceptance and to ensure there are as few negative consequences as possible. If you want to feel like a king and make unilateral decisions impacting lives of all the peasants in your kingdom than bad news. You were born couple of hundred years too late.

Today, it is all about influence. You don’t need formal power to make things happen. Yes, it takes a bit more time and way more communication with way more people but ultimately you can “make decisions” through other people. I would suggest you check out these articles to get some tips and tricks on how to influence the environment around you: The Art Of Influencing Others – Lesson 1, Lesson 2, Lesson 3. So it is just for you to get comfortable with this mode of working.

Don’t be just a messenger but own the message

You should never communicate a message to your team unless you understand what is behind it and can present it as “our decision”. If you constantly talk to your team about “someone decided something and we have to live with it” then you are the one who is spoiling the mood in the team.

If you need to communicate to the team a decision that you don’t understand then talk to the actual decision maker to learn “why”. What is behind the decision and why it was done? Even if you disagree with the decision, the time to influence it was before it was made. Once decision is done, it is done. Now your job is to implement it.

When you learned “why” it is your job to present it to your team in a way that will make sense to them. Yes, it can be sometimes tricky since the context in which the original decision maker lives is very different from the context in which your team lives (eg. CEO versus engineers). But that is exactly why you are here. You are the translator, you are the sense maker, and you are the one who needs to lead your team to implement the decision and feel good about it.

“As a leader, the biggest value you bring to your team is helping them make sense of the world around them @GeekyLeader [Tweet this]

Spend your effort and focus on things you can change

And if you really want to make some decisions solely on your own, or you want to give your team this ability to simply decide something without the need to ask half of the planet for permission then consider what are the aspects of your job that are fully under your control. If you think about it you will most likely discover that there are tons of things that you can decide and in fact that you are deciding every day without even realizing it. Then focus your attention and the attention of your team on these. After a while you will see that the mood in the team improved even though the external circumstances are the same.

Human brain is a great help in this since we get more of those things that we focus on. I’m sure you heard the example with the yellow car. If I ask you right now how many yellow cars you saw over the last week when commuting to the office you might be hard pressed to remember more than a few (assuming the cabs in your city are not yellow). But since I just focused your attention on yellow cars you will tell me tomorrow that you counted ten yellow cars on your way home. More than you saw in the previous month. Must be some sort of yellow cars outbreak, right?

When you really think about it all these things boil down to two basic themes: communication and attitude. Communication will form how you are perceived externally by your team (so they trust you and follow you) and the rest of the stakeholders in whatever decision needs to be done (so you can properly influence things). Attitude or mindset is how you perceive your role internally (how you feel about your role, your impact and your successes and failures) and what you focus your attention on.

So next time when you start feeling hopeless and feeling that all the decisions are done for you, just think about how much it is “them” and how much it is “you”. Maybe this introspection will help you find a way how to have a good feeling, greater success and bigger impact on the world.

 

Originally posted at LinkedIn.

Follow me on Twitter: @GeekyLeader

How To Hire A Strong Software Development Team

Building a strong team is a prerequisite to shipping successful, innovative and good quality products that customers love. But how do you build a software development team capable of doing it? You build it lean and mean. In How To Build A Team And Not A Random Group Of People I outlined the basics of building any team and today I will focus on building a small, agile, engineering team that will be resistant and able to execute. To recap the basics from the previous post. I would urge you to:

  • Hire for strengths
  • Hire for gaps
  • Hire for cultural fit
  • Hire the right, not the best, person
  • Hire by committee

It starts with technology

And now to our engineering team. It all starts with technology. Or does it? What technology stack will you be using? If you are hundred percent sure on programing language and technology stack it is an advantage to hire for these, but I would argue that ultimately it doesn’t matter. Unless you work on some legacy product where the technology is given by its environment or business constrains I believe that it is better to hire great, smart and talented engineers who will be able to flexibly shift between technologies as needed, than bunch of experts in one particular programming language.

Hire for smarts not knowledge

We are living in fast moving world and especially in technologies the world is moving even faster. Yes, you may be building your products in C++, Java, or .NET which could be considered stable and even old languages but if you are (un)lucky you may need to build applications (like SaaS) using whole bunch of relatively new technologies and what is worse there are constantly evolving, changing, and new are emerging. For a team that builds brand new product it may be required to learn new things as they go and as the particular needs demand.

With this in mind, hiring a great Java or .NET developer might be a good call but that is not a requirement. The most important is to hire a brilliant and talented engineer who is able to solve complex problems and pick a technology as needed to get the job done. You recruitment process needs to be aligned with this requirement. And yes, if your technology is set, then by no means, hire also for skill in a given language since it will save you time to get that person up to speed. I would suggest you check this article first Effort And Attitude Beats Talent And Knowledge.

Hire for flexibility not experience

You need some experts on your team but when developing modern software flexibility will be more desirable. When it comes to expertise you need someone with a domain knowledge. Bring a true expert who can mentor the rest of the team, but make sure the team can pushback otherwise you run into danger of the “old thinking” and any competitive advantage in the form of innovation will get out of the window.

When it comes to technology there are some circumstances when you need someone with a deep expertise in a given technology. For example, if your product needs to handle huge amount of data you may need someone who is really good at database performance, data optimization and similar topics that are difficult to study from a book and come only with experience with a particular database engine.

When hiring an expert who is focused on one technology make sure you balance the team with bunch of other people who will bring the smarts and flexibility in case the technology shifts.

You hire for cultural fit

Mindset is everything. For all this to work you need to build a sense of ownership and accountability. These things don’t come easily to everyone so your main concern should be to finding people who will identify with your goals, who will share the passion for building a great software, who will share the need to make a difference and to help solve problems for your customers. If you have these on board you keep the team together in good and bad times, you give them autonomy and they will build together something great.

So how could your perfect team look like?

As usually, it depends. It is always a question of what you are building, whether the team sits together in one time zone, what is the management structure in your company, what budget restrictions apply, what processes will be used and many other aspects. But assuming you want to build a solid product development team that will have the right skills, will be given the needed autonomy, will work within some agile processes like SCRUM, you will need these:

  • Product owner who owns a vision and requirements for the product and works closely with external stakeholders
  • Product designer who ensures the overall design of the product and that it solves the problem you set to solve
  • Architect who leads the technical direction of the product and have the final word on technologies used and any technical arguments and will be responsible for performance and scalability
  • UX designer who is responsible for designing workflows and usability
  • UX researcher who is able to gather data from customers or potential customers to ensure that feedback is gathered well in advance of the final shipping date
  • Graphics designer who is responsible for all the visual aspects
  • Writer who ensures all the textual descriptions are easy to understand for the target customers, and the right amount of text is presented
  • Backend developer, or two to build the core technology that does all the magic, deals with gathering, storing and manipulating data
  • Frontend developer, or two to build what the designers came up with and provide a great simple to use, scalable, and responsive interface to the user
  • QA dude to ensure end to end quality of the release, ensure that quality is built in through code reviews, unit tests, automation, and other means and is the last line of defense against shipping broken product
  • SCRUM master to have a servant leader who keeps the machine running and removes obstacles for the team

Lots of people, huh? The good news is that not all of them need to be actual full-time employees but many of the roles can be combined. You probably don’t need a full time UX researcher and can combine it with the Product designer or other role. You don’t need full time Writer and can combine him with another role. And you definitely don’t need full time SCRUM master. That is a virtual role that can be even regularly rotated across the team.

The bad news is that for this to work really well you need to build in redundancy. You may get one strong UX designer but you need someone else on the team who will have at least decent UX design skills. Why? To be able to deliver even if your main UX guy goes on vacations and to actually constantly challenge the main UX guy and to be able to challenge the expert and keep him at his best. And the same applies to any other role. What does it mean for the software developers? Well, it leads to the need of hiring a full-stack developers rather than experts focusing on niche. You get one strong frontend guy, but anyone on the team needs to be familiar with frontend technologies and step in. You may have one strong backend guy (most likely the architect) but even the frontend guys should be able to write backend and deal with databases.

So again, when you are building your next team think about expertise, smarts, flexibility, culture, and redundancy.

 

What is your recipe for building a great engineering team? What sort of people would you require to build a new successful product? Do you have a completely different approach to building software development teams?

Originally posted at LinkedIn.