Vampires, we’re. Bright screens are our sun. In broad daylight, we love to stare at the geeky characters under shiny roofs. Caffeine is our rescue in times of exhaustion.
Before I begin with my journey at Microsoft, let me tell you that the views and opinions expressed are completely mine. Please bear with me as I speak, for my style is pretty inconsistent. Drowned in the pool of experiences, I am reinventing myself while writing all this. This post is bit long even for me. After all, squeezing 5 years of experience is difficult to fit in one blog. Go and grab a cup of coffee. I will wait.
Where do I start? Sticking to one place is no joke and I don’t expect anyone to stay this long, unless they are really happy. My chase for money faded away long ago and work contentment, for me, has been the driving force ever since holding the utmost importance in this agile Tech world.
When you reach the stage where you can afford all the food you want, all the travel, the cars and the entertainment, you want, what else is remaining? It becomes a never ending battle to reach to the top. A rat race, I would say. A wise man once said, “Save nothing but experiences”. If not, you would end up having all the materialistic pleasures, but your life would be wrapped up in emptiness. It would lack the sense of fulfilment you seek. While slogging away in the name of money, a day will come when you’re gonna ask yourself, “Was this all worth it?”
It doesn’t seem long back when I set foot in the Microsoft campus. But when I look back over the years I spent here, I oftentimes, get overwhelmed. Microsoft, as a company, what has always seemed to me is a great place to work at, while leaving my imprints across the globe as billions of users get to use its products.
My fascination for Microsoft products goes back to as early as 2002. In those Windows 98 days, we used to have sixty minutes of computer class once a week with one PC being shared between a class of ten students. I used to wait passionately for just 5 minutes of my hands on the PC.
May 2009 – When it all started
Memories of the tough time and the difficult decision while joining Graduation college are as fresh as morning dew. 2008 recession had plagued the software industry and associated opportunities adversely. The sheer fear of decreasing market demand of software engineers had panicked young blood to not pursue engineering in Computer Science. Despite the risk involved in those times and an admission in not so famous university, my passion & optimistic mind entwined their wings and somehow worked together, and here I am, penning half decade of my experience at Microsoft, in astonishment and all flabbergasted.
July 15, 2013
Fresh blood joins. All the vampires rejoice.
5 years it’s been and it feels like it were only yesterday when I wandered the corridors of the humongous campus for the first time. Days bled off into years. I have seen people come. I have seen people leave. Life moves on. Everyone is replaceable. The higher, one is at the management hierarchy, lesser is the tolerance for mistakes.
The time I joined Microsoft, peers around me were celebrating 5 years of completion and I had one naive question. How come they never thought of a switch? Spending long time at one place is quite a thing and more than the place, it tells a lot about the person – Happiness, Patience and sometimes they just let life go with the flow. Well, for me, it never really occurred to me that there is a world outside Microsoft that also builds awesome products and has huge user base. Having worked on world class products like Microsoft Excel and its underlying complex architecture, I feel my existence in this universe is making a mark upon people changing their lives through technology.
In this short span of time, I got to work on 6 version-1 projects each having different complexity and its own problem space. The journey has culminated in a great experience, adding a check to my learning curve at every stage.
The world of flow-charts and diagrams – Office Visio
My career started as SDET in Visio team, a part of Microsoft Office division. It was embarrassing that I was going to work on something I never heard of. Visio is an enterprise software not so famous among students. It captures a huge market for clients looking forward to create flow charts and diagrams. In a nutshell, it is something that simplifies tens of millions of human life. As a test engineer, I designed test suites and wrote automation for various features to make sure the regressions are caught early and help stabilise the product.
K2 phase: It’s Android baby
When I had a feeling that I have learnt enough that would help fasten my deliverable, a reorg happened and devalued most of the things that I worked upon. As they say, only skills acquired through the process matters in the long run, skills to understand and solve a problem. New team and new manager, it was a tabula rasa. Satya’s vision to focus on mobile and services landed me in Android team. Familiar environment and some prior experience, starting was as smooth as butter. Nightmares begun when I was assigned a problem to apply effects on an image. The office codebase is huge, medieval and it’s an ocean if you don’t know where to start. I still remember those hard moments when I was just looking through the code to pick hints, searching keywords like pImage, IImage in the hope that at least the naming convention would lead me somewhere. It was one of the fastest paced project and I was (un)lucky to be a part of it. Learning was great and sleeps were compromised. My team owned low level Graphics rendering stuffs, everything that you see on screen.
It was an exhilarating roller coaster ride as I had never worked on a project of that urgency before. K2 is the second most dangerous mountain to climb and so was this project. Satya’s leadership and his vision for the company was as clear as a bell. We didn’t want to box ourselves in the Windows world. This was a big leap from our past rusted thinking and it was the beginning of reinventing the company. In Satya’s words, we needed to Hit Refresh. Even if we lost the war in Mobile Operating System, Microsoft could make a mark by releasing products on other platforms. SaaS (Software as a Service) was on the top of mind and Microsoft wasn’t behind. But to truly unlock its potential, we needed to annihilate the platform barrier. The world was transitioning at steep pace and the way users used the computing devices was reshaping. Desktop PCs and laptops were no more in trend and to succeed as a company, users needed to feel connected wherever they go. What is the benefit of all those technologies when users can’t edit a document on mobile while going to office and resume on laptop? Delaying this project could have been catastrophic. Decisions are good as long as they are taken at right time.
The idea of Shared code had always fascinated me and I got a chance to see how it works. The biggest challenge of developing apps on Android was device fragmentation. Apps you build might work like a charm on one device, while it might be completely screwed up on others. This project literally boosted my confidence as I was really quick when it came to building something on Android. It was an honor to be recognized as Subject Matter Expert. When I got empty hours, I contributed to Android community on StackOverflow and earned many medals. As of now, I hold 12 gold, 48 silver and 89 bronze medals.
Apple, A costly affair
Satya’s vision for efficient engineering annihilated the concept of tester & developer and rendered everyone a Software Engineer. I moved to Graphics team for iOS where I made core design changes and wrote code to be shared across various apps cross platform. The biggest challenge was to think of design that could sail well across multiple platforms and apps. Making changes at such a lower level was risky, heart throbbing and required solid understanding. Tolerance for mistakes was minuscule and the impact was so huge that making even a small mistake had big ripple effects breaking many features across the apps. Some of the nasty bugs gave me nightmares. It becomes worse when you have to fix the bug overnight and when you do it, you get response on the top of your fix mentioning that your change would be impacting twenty millions customers. Even 1 millisecond of performance regression raised eyebrows asking critical questions related to the design and the solution. I have learnt that this is part of life and as long as the learning curve is steep, things would just work fine. It has taught me the skill to never give up. Perseverance and grit are great virtues to survive in this industry.
Before the release of K2, shared code was a myth. As much fantastic as it may sound when discussed, it was practically not possible given the platform differences, language barrier at different end points and the engineering cost involved to bring the complex humongous codebase together. With the release of WXP on Android, we proved it to be doable and sealed it after moving iOS codebase to the same shared codebase.
Having got familiarized with both Android and iOS, I must say that I would choose Android over iOS any time of the day both as a developer and a user. Apple’s developer tool XCode hangs and crashes every now and then and sucks. Things that can be achieved in a straight forward way in Android can be pain when it comes to iOS.
Recalc or Die – Excel
About 30 years ago in a place far, far away, when C++ was still in diapers, Microsoft Excel was born. We even shipped Excel on floppy. We didn’t have much of C++ that time. So we wrote our own wrappers.
Shared rendering was over and I moved to Excel iOS team where I worked on Excel rendering component. Excel is one of the most complex projects and there are dozens of layers of architecture. Few of the bugs literally drove me crazy. I remember frying neurons of my brain for days without a clue on where in the code the problem might be. Some bugs were in the Apple library itself.
Excel on Mac
Another year, another project. Some familiarity with how Excel works, at least a part of it, landed me into another Excel endpoint. This time, it was Mac. It was way more complex than iOS. The quality was super important, for most of the people with big names use Mac, all of them being paid customers. A simple screw up could motivate one of the journalists to write and given how powerful social media are these days, it could have gone viral in no time. We did get good detailed feedback from a NASA scientist which reemphasized the impact we had been making.
While working on Excel and rendering technologies was fascinating because of the huge mass reach, lack of opportunities to add much design and code in Excel troubled me. The Data Structures and design used were fascinating. But they were written in 90s. Another good thing was that I never had to explain Excel to anyone. I remember meeting a college friend in Seattle who was widely surprised when I mentioned that we are fixing bugs in Excel. She always thought Excel to be super stable.
My restless mind, always looking forward to swim out of comfort zone to try and learn new things, found its medicine when a new SharePoint team in IDC was formed. I never realised the sheer potential of SharePoint until I started working on it. New technologies & tools, two decades old product, unknown territory, ownership of core components and never ending challenges, I couldn’t have asked for more.
Normal days at Microsoft
If you wonder how normal days as a Software Engineer at Microsoft look like, well it can be summarized something like:
- You get a feature and are asked to come up with a design and various approaches to develop this.
- You discuss various pros and cons and why one approach should be preferred over others.
- You write code to develop the functionality. If the code is not shared, Bingo! your life just got easier. If it is shared across apps and platforms , you have to make sure it doesn’t regress anything. There are tons of test cases your code must pass.
- If you get a bug due to your code and it is hi-pri, a hot mail thread starts overnight stating it impacted ‘X’ millions of customers.
- If you get a bug not related to your code, well happy debugging. There are tens of millions of lines of code and you don’t have slightest of clue in what layer of architecture, the issue might be. I remember debugging a bug for 8 continuous days and at the end, I found that it was a race condition issue. The bug reproduced every once in 30-40 attempts.
- Your code performance is super critical. I remember being part of a burning mail thread once because my code regressed the performance by 1 millisecond. I couldn’t see the difference manually as 1 millisecond is something your eyes can’t perceive.
- You think you’re smart. Well think again. There are smarter people talking to whom is so much fun. You are stuck debugging an issue for 2 days. You don’t see anything working. You are pissed off. You send a mail to the people asking for help. They read your issue on phone, respond with a fix and it works.
In a nutshell, the emphasis is more on reading and understanding code than writing a new one. If you can’t understand well what is written, how are you going to modify it? This varies from team to team. Since office was released in medieval time when C++ was still in diapers, making changes in the code becomes a bit difficult, especially when you are making changes to an existing feature.
Microsoft is full of smart people. You can learn something from almost everyone.
Why I chose to stay at Microsoft?
There were many times I thought of a switch. The thing that always seemed to hold me was the thought that I would be doing the same kind of work that I am doing here. Besides, I am happy here, living life as I always wanted, trying out different things, exploring the world around me and pursuing my hobbies one after the other.
While we’re busy in earning money, life is busy in deducting time
If you ask me if I’m happy with the salary I get here. I would probably say, Yes. And I will shortly explain why. Pay is decent, but it is lesser than what competitive companies offer. Many of my friends have switched to other companies for higher pay. There was hardly a day in my 60 months of career at Microsoft that forced me to think of a switch, because of following reasons:
The best thing I like about Microsoft is the work-life balance. The timings are flexible. If you get a good manager who knows how to handle pressure well, you won’t have to work overnight unless it’s absolutely necessary.
Company culture and vision
At Microsoft, we strive to build products that amaze customers within thirty seconds of usage. If we fail to wow them, we lose them for life. That’s the underlying principle behind every Office product. Productivity and efficiency are taken very seriously. Effort is important, but knowing where to make an effort makes all the difference.
I chose to stay at Microsoft because while working here, I can pursue my hobbies. You get plenty of time for things you want to do. I travel, do fashion and landscape photoshoot, play piano and write blogs, all while writing code in week days.
Money is a good servant but a bad master
The money I earn here is enough to survive and buy things of interest. If I would earn more money, I would buy bigger car or dine in more luxurious restaurants. The standard of living will improve. But the question is, how far are you willing to go for the sake of money. Run for money never ends. Having lived my fair share of life, I realized that life should be made up of moments. As long as you are happy with what you have, you are living a good life. With more money, comes more responsibility. Yes, there are times when I regret not being able to afford a Grand Piano, but I can settle with a smaller version of it.
Although Microsoft pays lesser than few startups, I love it. My granddad proudly says that his grandson works at Microsoft. Microsoft is one of few companies that has survived four decades while staying relevant. People are still crazy about it.
Products that I work on are used by billions of people. I can say that the part of picture manipulation code in Word/Excel/PowerPoint has been written by me. This kind of huge impact can only be felt by working at some of the biggies like Google and Facebook.
When Satya Nadella took over, the change was visible sooner than we had anticipated. The company was at the cusp of transformation and is going through a significant transition phase as we speak. It’s not just a Windows company anymore. The focus has gradually shifted to its mobile first, cloud first business. The reason is simple. With so many technological advancements and automated home & car systems generating a lot of data, the humongous data has to be stored somewhere. 90% of the world’s data has been generated over last two years. Microsoft is pushing hard to make a dent through providing cloud services and thereby, stay relevant.
Microsoft is in right hands. Its stocks are soaring all time high. Investors have confidence and they’re betting in its bright future. It’s far from pinnacle of success and there is a long way to go. But I believe in the company’s vision. And as an employee, it’s a great feeling and amazing place to be at, while being part of the major transformation. I can either watch it happen or be a part of it. Well, the former doesn’t excite me enough.
You might like my other posts along the same line: