1.6 Software Engineering I, II, III - Milancho/CareerPathGuideline GitHub Wiki

Software Engineer

Responsibilities

  • Design, develop, test and support features, experiences and solutions primarily in C#, SQL, ASP.Net, HTML5, React, Typescript, PowerShell, and Azure ​
  • Collaborate closely with Product, Design, and Engineering teams to build new features ​
  • Support highly available services used by millions of users on a daily basis ​
  • Work with support to triage and debug technical support requests​
  • Analyze how your features are performing in production to learn and make the product better ​
  • Pair and participate in code reviews with other engineers in your team​
  • Strong customer passion, accountability and drive who can take initiative and accomplish big goals.   
  • An entrepreneurial spirit with a can-do attitude: Self-starter, project finisher and adaptable  
  • Great communicator, able to analyze and clearly articulate complex issues and technologies understandably and engagingly.   
  • Strong design and problem-solving skills, with a bias for designing at scale.
  • 3+ years of industry experience designing, developing and shipping high quality scalable software and services
  • Strong design, implementation and testing skills
  • Managed and native code development experience

Qualifications

  • Experience developing production software​
  • Experience with one or more OOP languages including but not limited to: Java, C/C++, C#,  JavaScript, Java, Python. ​
  • Good system design, algorithmic skills, good knowledge of data structures​
  • Strong problem solving and debugging skills​
  • Solid understanding of testing principles and high-quality software ​
  • Excellent collaboration skills and critical thinking​
  • Good communication skills both verbal and written​

Nice to have​

  • Degree in Computer Science, Mathematics, Engineering or related fields​
  • Experience designing, building and running large scale and highly available cloud services or distributed systems ​
  • General database knowledge and experience of working with data at high scale
  • Troubleshooting skills across network, application, caching, queuing, load-balancing storage and distributed services layers​
  • Knowledge of Azure Cloud, Power Platform, or Dynamics 365​
  • Passion for high-availability, automation, performance and building highly available distributed systems at scale​
  • Practice of modern software engineering, including coding standards, code reviews, source control management, build processes, testing, and releasing

Senior Software Engineer | Software Engineer 2

Responsibilities:

  • Work with the team and peers every day on solving complex design, coding, troubleshooting and operational challenges
  • Driving features, projects and open ended problems towards resolution
  • Increase the team's capacity and capability by sharing experience and knowledge
  • Continuously evaluate engineering processes and practices affecting the team with the goal of eliminating inefficiencies and increasing the overall team effectiveness Passionately drive these improvements both within the team and across the Identity organization if necessary
  • Build reliable, robust system with high availability while taking high traffic.
  • Closely work with Devs and PMs in different countries to achieve fast collaboration and agile development
  • Design and develop large scale distributed software services and solutions in collaboration with teammates.
  • Design services with a strong focus on high availability and scalability, robustness, and observability.
  • Build software prototypes and conduct experiments to evaluate alternative architectures.
  • Stay educated on existing and state of the art technologies, and do proof-of-concepts to evaluate technology fits for customer needs
  • Mentor junior engineers

Qualifications

  • Required Qualifications

    • 3+ years of software development experience with familiarity with at least one of OOP languages
    • 4+ years of software development and design experience
    • 5+ years of industry experience in large-scale software development (Frontend/Backend devs are all welcome)
    • Bachelor’s Degree in Computer Science, Computer Information Systems, Math, Engineering or related field, or equivalent field experience 
    • Solid coding skills and familiar with at least one OOP language: Python/C++/C#/Java/JS
    • Great design, problem-solving, and data analysis skills, with a demonstrated passion for quality, performance, and engineering excellence
    • Motivated and able to work independently as well in a collaborative team setting to research innovative solutions to challenging technical/business problems
    • Critical thinking, problem-solving, design, coding, and troubleshooting skills required.
    • Willingness to learn and cooperate with others and ability to work independently.
    • Experience with multi-threading, synchronous and asynchronous programming.
    • Solid experience of shipping high performance C#, Java, or equivalent language code software.
    • Understanding of distributed system and data parallel computing is preferred.
    • Data processing or analytics experience with Spark, Flink, Kafka, Azure Data Lake is a plus.
    • Domain knowleage.
    • Experience of designing mission critical data pipelines with SLA commitment is a plus.
    • Quick learning and solid problem solving and debugging skills.
    • Accountable and proactive
    • Good communication skill, fluent in English (both oral and written)
  • Preferred Qualifications

    • Demonstrated excellence in coding and technical communication
    • Demonstrated problem solving and debugging skills
    • Experience with one or more general purpose programming languages including, but not limited to: Java, C/C++, C#, Python, JavaScript, PowerShell
    • Experience in owning a responsibility of components or feature areas
    • BS in Computer Science or Engineering discipline, or 4 years of equivalent software engineering work experience
    • The ability to multi-task while balancing short-term and long-term tasks
    • Strong customer focus and data-driven approach
    • End-to-end Delivery and Innovation
    • Adaptability in a fast-paced environment
    • Great collaboration and team-player skills
    • Strong C# or any other OOP skills with a good knowledge of Data Structures/Algorithms.
    • Experience with large-scale distributed systems and multithreading
    • Knowledge and experience with messaging, eventing technologies, pub/sub services
    • Strong problem-solving skills and passion to solve hard problems as part of a team
    • Experience with Azure service infrastructure and web security protocols highly desired.
    • Experience with other cloud platforms and open-source projects is a plus.

Principal Software Engineer Lead

Responsibilities

  • Designs elegant solutions for systems that result in simple, extensible, and maintainable high-quality code.
  • Leads the design, implementation, and code reviews across the feature area. Mentors other team members on doing these at quality.
  • Strong communicator who can reach successful outcomes through collaboration.
  • Optimizes team processes to improve productivity and responsiveness to feedback and changing priorities.
  • Uses technical knowledge of the product design and code to identify risks and prevent classes of bugs.

Qualifications

  • Worked on and shipped native applications.
  • At least 5+ years of modern experience developing in C#.
  • 2+ years of full-stack web experience are strongly desired.
  • Experience building applications on a variety of platforms including desktop and mobile. Console development is desirable, but not required.
  • 2+ years experience managing the careers of full-time employees.
  • Strong design, programming, and debugging knowledge with domain expertise in two or more areas.
  • Ability to quickly prototype, iterate, and take initiative to drive progress.

Senior Developer

  • Scrum teams
  • Experience with Agile/Scrum
  • Cloud-native applications
  • Kubernetes and Docker
  • Domain-Driven Design (DDD)
  • Event-driven microservices
  • Command Query Responsibility Segregation (CQRS)
  • Event Sourcing (ES)
  • Single Page Applications (SPA)
  • WebComponents
  • Adaptive Cards