Principal Software Engineer - Distributed Systems

Microsoft Microsoft · Big Tech · Vancouver, BC +1 · Software Engineering

This role is for a Principal Software Engineer on the Azure Data engineering team, specifically focusing on the Fabric Mirroring team. The team designs, builds, and operates a service that transfers large volumes of data from various source systems to Fabric with minimal latency, focusing on advanced data movement and replication scenarios. The role involves leading by example in producing extensible and maintainable code, optimizing, debugging, and reviewing code, leading architectural discussions, and creating plans for testing and quality assurance. It requires experience in enterprise-level distributed systems and coding in languages like C++, C#, Java, JavaScript, or Python.

What you'd actually do

  1. Leads by example within the team by producing extensible and maintainable. Optimizes, debugs, refactors, and reuses code to improve performance and maintainability, effectiveness, and return on investment (ROI). Applies metrics to drive the quality and stability of code, as well as appropriate coding patterns and best practices.
  2. Applies debugging tools and examines logs, telemetry, and other methods to verify assumptions through writing and developing code proactively before issues occur and reactively as issues occur for products. Conducts retrospective debugging of solutions to identify root causes of problems.
  3. Reviews the code of a product to assure it meets the team's and Microsoft’s quality standards, is reliable and accurate, and is appropriate for the scale of the product/solution area. Applies feedback to current and future iterations. Participates in code reviews to ensure coding standards are followed. Considers diagnosability, reliability, and maintainability when reviewing code, and understands when code is ready to be shared or delivered. Applies and screens for coding patterns and best practices in reviews, and provides feedback on code to drive adherence to best practices.
  4. Leads discussions for the architecture of products/solutions and creates proposals for architecture by testing design hypotheses and helping to refine code plans. Provides reactions, proposed solutions, and inputs to architects. Partially owns solutions for architecting of solutions, with minimal technical oversight. Develops design documents for designs or User Stories, and determines the technology that will be leveraged and how it will interact. Shares learnings and identified solutions from investigations with the team and owns for some design decisions. Assures system architecture meets security and compliance requirements and expectations.
  5. Independently creates a clear and articulated plan for testing and assuring quality of solutions, and defines success for outcomes of tests (e.g., unit tests). Identifies needs for a broad versus selected approach in testing mechanisms and makes informed decisions to implement the most effective tests. Drives efforts to add new tests, remove antiquated tests, and aggregate tests to improve the test suite. Improves recommendations to the team and augments test cases to ensure that solutions have good test coverage. Drives efforts to continually integrate automation features when planning for testing.

Skills

Required

  • Bachelor's Degree in Computer Science or related technical field AND 6+ years technical engineering experience with coding in languages including, but not limited to, C, C++, C#, Java, JavaScript, or Python
  • 5+ years professional experience in enterprise level distributed systems

Nice to have

  • C
  • C++
  • C#
  • Java
  • JavaScript
  • Python