![]() ![]() C++ is a low-level programming language that requires you to deal with complex concepts, like memory allocation, deallocation, pointer arithmetic, etc. You don’t need to worry about these concepts in most other programming languages.Ī group picture from my time at Microsoft back in 2008. Highlighted is Ray Ozzie (the former CTO of Microsoft), and me (a far less important employee). I spent my first few hours building some toy projects. ![]() ![]() in a programming language that I was relatively unfamiliar with. Shortly after, I was introduced to Ransom, the senior developer who would be supervising me during my time at the company. Ransom helped get me access to the project’s source code, which had about 10 million lines of code and around 70 or 80 developers working on the same application at the same time. I was used to working on much simpler projects. On these projects, if I changed the code, it would take 3-4 seconds to test it out. But at Microsoft, any small changes to the code would take 8-10 minutes for testing. #MAZAIKA SERIAL FULL#Īdditionally, a full rebuild of the entire project would take 4-5 hours, and people would generally only start this right before heading home for the day. Very quickly, this XKCD job transitioned from being ridiculous to 100% accurate. I was so far outside my comfort zone, and I started to question if I’d ever be able to genuinely bring value to the company during my 6-month internship. Additionally, I was a college senior, which meant that I lived with the constant fear of not landing a job after graduation. I was absolutely certain that there wasn’t a chance that the other devs would actually want me to stick around.Īfter what seemed like forever, I was able to compile, run and launch an actual application and set up my dev environment. Ransom gave me a quick rundown of the source-code. He focused mainly on the code that I would be working on next. I was responsible for working on was Microsoft’s “Groove” product. It was a peer-to-peer sharing system for businesses. At the time, we were adding a tight integration to SharePoint, providing both peer-to-peer syncing on top of SharePoint and a rich client that would make it easier for people to sync their work. My group was called the “Storage and Synchronization” team. One member of my team built the database and file storage system of the project. Another member architected the integration with the SharePoint API. Overall, we were responsible for the peer-to-peer syncing technology. Person 1 makes additional changes to the file.Person 2 syncs the first file, disconnects and makes changes offline.An example of this could be something like: Peer-to-peer syncing can get fairly complex pretty easily. When each of the three people connects to the central, SharePoint site, the synchronization engine needs to sort out the state of the system. My team was responsible for building this functionality. ![]() Ransom (my mentor) was an expert at each of these three aspects of the product (and much more too). It was his job to take turn me from an inexperienced developer into a competent, impactful member of the team…all within a 6-month window. I still remember the first task that Ransom assigned to me. We had some internal automated tests for the synchronization engine. “I want you to improve the internal tests we have for the synchronization engine. Also, ultimately it would be good to be able to perform this specific type of test, which is currently impossible.” Here are some edge cases that should be tested, but aren’t. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |