Journey of An Engineer From X To 3X — What, Why And When
One day, when I was in BITS Hyderabad college campus talking about WalmartLabs, I got a random question from one of the students outside of the content being discussed — she asked, what does it take to be a 3x engineer? In that spur of a moment, several past instances came into my head and inspired me to put this together.
Below are 10 tips I have learned over the course of my career that has helped me become more efficient and improved my overall productivity allowing me to achieve more in less time. Let’s take a look at each one…
1. Deeply Understand The Business Domain You’re Working In. Have a very clear and detailed picture in your head why you are doing, what are you doing i.e., how will this help the end user, the work that I am doing. One efficient and proven way of getting deep insights is by talking to your users — customers, clients, business units, sales teams, or internal teams — to gain a deeper understanding of what people want. Once you understand the problem and the impact behind it, chalking out “how” to do it becomes easier. Will these have any benefits? Yes, this is proven to have lot of indirect benefits — imagine the number of back and forths you can avoid with your product manager or end user, if you have a solid functional knowledge of the domain you are in and can think of all the edge case scenarios yourself — just imagine how much time have you saved of both the parties? Having a strong functional understanding of the technical work you’re doing is going to bring in an effective solution.
2. Seek New Approaches To Solve Problems. Constantly seeking new approaches will make you work quickly and efficiently. Wondering why is this important? This helps you find a new approach or find more reasons to explain others & self that the current approach is good. What could you do if you’re finding it difficult to think of a new approach? Try turning the problem upside-down! This is where your social connections to seek fresh perspective will come handy — develop a circle of people whom you can share anything and seek critic feedback.
3. Increase Productivity of People Around You. Sharing. Sharing. Sharing. Never let you or your coworkers get blocked — wondering why? This could decrease the productivity of two parties — of you and your fellow team members. Remember, the methodology that has worked for you to do more in less could work for others too. Teaching other team members, and indeed passing on your knowledge will not only make you a valuable member of the team but also improves the overall culture and helps in making your team, a high-performance team. How many times have you reached out to someone asking for e.g., how does this functionality work, what does this class file do? Think back and analyze how you could minimize this back and forth and make it available for self-reading either as code comments or flow diagrams or any form of documentation. One such example that worked for one of our teams is Knowledge Transfer Videos — starting from the high level architecture going all the way into granular modules — this has reduced onboarding time of new Engineers by almost one-third. It is very important for all of us to remember that for today’s knowledge-based work, much of what we need to know we learn from others’ experiences, through what’s called vicarious learning.
4. Never Settle — Keep Asking These Three Questions — Why, Why and Why. “Start with Why: How Great Leaders Inspire Everyone to Take Action Why am I building this? — By Simon Sinek. Why am I using xyz tech stack? Why am I not able to make this code generic enough so others can use (where applicable)? These three questions will cover your firstly the functional knowledge, second, technical knowhow and third, lets you find out any better ways of recognizing patterns, replacing procedural code with simple, beautiful methods (layering/modularizing) your code. These practices that we follow at WalmartLabs helps in taking more informed, situational and ecosystem fitment decisions. At Walmart Labs, constant improvement is part of who we are. We love associates who ask questions and want to learn.
5. Improve Communication Skills. Remember, excellent products and great companies are not built by one person. TEAMS build excellent products and collectively make up great companies. In order to be efficient and work with different people around you or across the ocean, communication, be it is verbal or email writing, is the key. It is very important for you to adapt to the situation, understand the audience being in their shoes and accordingly prepare to make your communication efficient — be it is a quick raw hand drawn flow diagram or a lucidchart flow or follow a Situation, Behavior, Impact & Solutions framework.
6. Know As Many Tools As Possible. Ever wondered how much time would it take for you to convert a word document into pdf if Microsoft Word hasn’t had that option? The time it takes for you to find the right online software thinking about privacy etc? Right tools make an engineer efficient with their time and execution. So, having a constant prowl on the latest tools, technologies will help reduce the time of execution of a given task.
7. Release Simple, Release Fast & Repeat. How many systems/programs have you seen not taking off? Ever wondered why? Reasons could be varying — change of priorities, spent too much time to lock down the scope and many more. I have seen many projects/programs trying to beat the requirements to death or in constant fight to achieve the perfect architecture or solution. Looking for perfection is undoubtedly good quality but always remember, the context, the type of problem you are solving is very important. If it is a problem that neither your product management nor operations is unsure of, looking for perfection might not be a right thing. In these scenarios, narrowing down the scope of product requirements quickly, implementing it, putting it in production and seeking feedback from the customers, users, operations will always help you to evolve to the right way of solving it — be it is architecture, longevity of solution etc.
8. Build And Break Stuff — Encourage A Culture of Productive Failure. How many times have you learnt something while NOT achieving what is expected? So many times right. Yes, sometimes the best way to learn is build. While you’re at it, break it too!!! It is very important for all of us to understand that breaking is not bad and we should all encourage people to try doing things differently — because, this will not only make the understanding solid but could also pave to new learnings. Please always seek low risk opportunities that you can use as a testing bed to try something new. Successful organizations are willing to embrace risking failure by doing something to keep our dream moving forward rather than avoiding risk and doing nothing — it is very important for organizations to create an atmosphere where failure is accepted and viewed as a positive step toward ultimate success.
9. Sometimes Quick Is Better Than The Best. How many of us thought about our surrounding environment to be so dynamic five years back? Everyone must have the flexibility to adjust and deliver solutions that can be quickly implemented even though they may not be the best. Sometimes it is just better to use a third-party library then to write a highly optimized version of the same yourself. Ultimately what matters in terms of success and impact is not whether you can write the best code or solve the hardest technical problems but whether you’re creating value for people — when in need.
10. Team Player. Last but not least, being a team player and promoting the company culture in your day to day work and interaction with your peers will turn a good engineer into a Rockstar.
The above are some of the tips that each one of us can try putting it to practice in our environment, learn and evolve in our daily ways of doing things. Productivity of an engineer MUST be measured by the value one can bring to the team. 3x engineers don’t actually call themselves as 3x — they just go out and crush it. They build great products, solve hard problems, and make everyone around them better. Balancing between ambiguity, delivery and perfection is the future of retail, tech and people and Walmart Labs is at the heart of it. “Never settle for anything less than your best” — Brian Tracy.
— Written by Naga (Nagaraja Rao Daivam) — Sr Engineering Manager, WalmartLabs. Practical Leadership Guy.