Building cutting-edge digital products often involves wading into uncharted technical waters.
Examples from my career that come to mind include working with unfamiliar programming languages and frameworks, prototyping a camera for the Apple Watch, and interfacing with a Bluetooth-enabled grand piano.
Projects of this nature frequently involve substantial technical unknowns which, without careful management, can overwhelm a team. With the right leadership, however, it is possible to harness this uncertainty into a powerful catalyst for your team’s growth and development.
Learn, then communicate
As a technology leader dealing with, for example, a team working in an unfamiliar programming language, it’s your job to take the initiative to learn it. That means a great deal more than just learning syntax.
It’s your responsibility to research and enforce best practices, ensuring that the work your team is producing is idiomatic. Additionally, you should survey the community to identify emerging trends, popular libraries, and other helpful resources that may save your developers time, and produce a more professional product.
I was recently charged with managing a team of developers with (mostly) native iOS backgrounds working on a large-scale Xamarin application. None of us, myself included, had any meaningful C# experience entering this project. Microsoft’s approach to everything from code style to software architecture represented a departure from my team’s typical approach, so fostering a platform-agnostic mindset was essential. Additionally, it was my task to translate these differences into actionable insights that my team could understand, relate to their existing experience, and apply to their work. Through research and exploration, we were able to employ some very helpful libraries (like ReactiveUI and Autofac) that greatly improved our development efficiency, and made our code more understandable to seasoned .NET developers.
When faced with unknowns, and especially when tasked with time estimation of those unknowns, do your best to avoid knee-jerk reactions. In many instances, a wide chasm can exist between how much you think you know about the problem, and how much you actually know. In the long run, my experience is that it is far more prudent to say ‘I’m not sure. Let me do some research on that and get back to you’ than it is to guess, and wind up off-base. By adopting this measured approach, you’ll also benefit from the ability to consult peers and external resources.
To that end, if you’ve been asked for details about something entirely new to you, sometimes working on a quick proof-of-concept alone or with others can be immensely valuable. This exercise often exposes considerations that may not have been apparent at first glance. Be sure to timebox this work to avoid getting sucked in.
Set realistic expectations
You have probably heard the expression “underpromise and overdeliver” and, in this context, it has some merit. However, we should all set the bar higher rather than artificially lower expectations. The objective of an engineering leader should be to articulate potential obstacles that lie ahead as transparently and honestly as possible. This builds substantial goodwill with project stakeholders, and enables them to deeply appreciate the work you do and the challenges you surmount along the way. Not to suggest that you shouldn’t be ambitious, but it’s a manager’s responsibility to be mindful of these challenges, and ultimately avoid over-extending their team for protracted periods.
Motivate and engage your team
One of the things that attracted me to the technology field (and certainly to Work & Co) was the opportunity to work on diverse, complex digital products across industries. With this comes the need to adapt to a nearly constant evolution of technology stacks, design trends, and other client requirements. Embrace this!
An effective strategy for maintaining team morale, in the case of forthcoming technical uncertainty, is to reinforce the notion that every team member was specifically selected for their exceptional thinking and problem-solving ability. I try to underscore the fact that I trust them, and have absolute faith in our collective ability to grapple with whatever lies ahead.
Delegate authority, not accountability
As a leader, particularly one with extensive software engineering experience, I have identified a tendency to save the most difficult problems for myself. This is counterproductive. Members of your team will only grow when you afford them the privilege of working outside their comfort zones. I have consistently noticed that the more you trust members of your team to make decisions, the more they will step up to the plate and impress you.
Finally, it’s important to acknowledge upfront that problems will arise. Whether it’s an overly optimistic time estimate, a decision to use an architectural pattern decision that didn’t scale, or anything else, humility and graciousness are key. Allow yourself to be vulnerable, admit that a mistake was made, and work with your team to find a solution.
Interesting, meaningful work that pushes boundaries and enriches lives almost always involves a degree of uncertainty. The strategies outlined in this article will help you and your team confidently embrace the challenges that come with it. It is my hope that sharing them enables you to inspire and excite your team as you build the next generation of great digital experiences together.