What was the most important lesson you learned as you were building your career? originally appeared on Quora - the place to gain and share knowledge, empowering people to learn from others and better understand the world.
I told a senior manager at Microsoft that he was wrong.
And it taught me the most important lesson of my career.
Let's rewind. I was a lowly software engineering intern at Microsoft. I didn't have a ton of experience writing code, and I wasn't sure if I was ready for the role. But I jumped in. I couldn't pass up the opportunity to work for such an iconic company.
On day one, I matched up with my mentor - a dev named Ransom.
It was his job to turn me from an inexperienced developer into a competent member of the team responsible for building Microsoft's Groove product, a peer-to-peer sharing system for businesses. At the time, this seemed like an impossible task.
I still remember my first assignment. I had to improve some existing internal automated tests for our synchronization engine. This would have taken Ransom a day to complete, but it took me my entire first month. Here's how the process worked:
- I worked for 3 or so days, thinking that I was cleaning up the code and making it easier to write tests.
- Ransom asked to look at the code that I had written. I showed him the code.
- He went through it, line-by-line, explaining why every decision I had made was wrong.
- We decided that it was best for me to start over from scratch.
Ransom was my boss, so he knew better than me. So I followed his direction. And it felt like I was incapable of adding value to our team.
Around that time, I was introduced to a different developer, named Dana.
Dana was very senior and incredibly intelligent, too. I wanted to impress Ransom, so I didn't want to get too much help from him.
But I learned that working by myself was causing me to have to completely revert my work. So I decided to start asking Dana a ton of questions. I felt like these were stupid, but I asked them anyway.
After a few days of routinely bothering Dana, I checked back in with Ransom. He went through my latest code line-by-line and again found a ton of problems. But he said that my code was "workable"! I was far from perfect, but I felt like I was headed down an OK track.
Still, I knew that I was just following the direction of my superiors. I felt like anybody could do what I was doing, but that they just didn't have the time.
But then, one silly thing changed everything.
I still remember the memory leak popping up.
We used a tool that informed us if we introduced a memory leak, which is a specific (and pretty bad) problem in code. At the time, I was confused about why the tool triggered the notification window.
After a few days, I found the root of the problem. This was a bad problem and it needed to be fixed quickly. So I went into the code's history and discovered that it was written by a developer who happened to be incredibly senior, and he happened to work in an office nearby. I was so nervous, and I still remember knocking on his door asking:
"Hey, can I ask you a quick questions about some code you wrote? I'm really curious why you wrote it a certain way."
I showed him the issue and how I would approach his code, expecting a detailed answer about why my approach wouldn't work. Instead, he responded:
"Oh yeah. You're right, it should be the other way. Can you switch it, since you're working with it anyway?"
I'm right? This must have been a joke. But it wasn't, and in this brief moment everything changed for me. No longer did I feel like the inexperienced intern who needed to blindly follow the direction of my superiors because they always knew the best way to do things.
In fact, in this moment, I realized that I could. I could uncover a problem, figure out a solution, and make a product improvement that was missed by senior developers, code reviewers, and everyone else. This was an incredibly powerful feeling. And this was precisely how I could bring value to the company in a way that nobody else could.
If you're breaking into software or any other field, it can be easy to operate your job like you're using Google Maps. You blindly follow step-by-step directions without thinking critically about where you're going and why. If you're doing this, you tend to feel like an interchangeable cog in the machine.
But if you start asking "stupid" questions and challenging what's happening around you, everything starts to change:
- You learn that the people ahead of you aren't perfect.
- You realize that a lot of the things they oversee could be improved
- You figure out that you can leverage your unique perspective to make valuable improvements
Never doubt that you can do something better than your superiors. Getting to this point is the only way that you can truly add value to your company and build your career.
When I left Microsoft, I had changed thousands of lines of code in the core product. If you told me at the beginning that I would have done that, I would have laughed in your face.
But I did it.
And it all started with telling a senior developer that he was wrong.
This question originally appeared on Quora - the place to gain and share knowledge, empowering people to learn from others and better understand the world. You can follow Quora on Twitter, Facebook, and Google+. More questions: