Position: Middle .NET Software Engineer
Company: AltexSoft
Experience required: 2y
English level: intermediate

Project:
Distributed cloud system that allows managing access to the Internet by intercepting traffic from end-users’ devices both mobile and desktop and redirecting it to proxy servers where it is filtered and a decision on allowing or blocking the access is made. The system consists of separate isolated modules that operate as a single integrated system.

Responsibilities:
- Design, develop, document, test, and debug new and existing software systems and/or applications
- Support the development of business requirements and program specifications
- Contribute to requirements gathering and analysis activities
- Participate in full development life cycle including requirements analysis and design
- Identify and evaluate new technologies for implementation
- Analyze code to find causes of errors and revise programs as needed
- Participate in software design meetings and analyze user needs to determine technical requirements
- Understand complex business processes/applications with intent to re-write/enhance using current tools/technology
- Provide supporting documentation for all phases of development/implementation
- Deal with the integration of 3-rd party components/libraries
- Attend regular ceremonies (e.g. backlog refinement, daily, sprint planning)

Requirements:
- 3+ years of relevant .NET development experience
- Strong background in Object-Oriented development techniques
- Deep understanding of Design Patterns and Microservices Architecture pattern
- Strong Microsoft-centric web development skills: .Net or .Net Core, C#,  Entity Framework or Entity Framework Core, MS SQL
- Strong knowledge of Windows Services
- Proven records of Windows Desktop Apps development and Windows Presentation Foundation usage specifically
- Basic understanding of TCP/UDP traffic redirectors
- Experience with Windows API usage and interop
- Database design and development
- Experience with the Software Development Life Cycle Methodology (SDLC) and Agile development methodologies
- Relevant experience in multi-platform, multi-threaded, distributed applications development
- Strong programming ability, with great attention to detail and design as well as a passion for producing efficient and elegant code
- Must be self-motivated and able to work both independently and in conjunction with team members and business units
- Ability to meet deadlines, identify issues and resolve with minimal direction
- Ability to analyze, document, and validate software requirements
- Ability to work in a fast-paced environment, recognize and react to changing business needs and effectively prioritize tasks
- Good interpersonal and problems solving skills
- Take part in technical and business discussions directly with project stakeholders
- Intermediate level of English both written and verbal

Would be a plus:
- Knowledge of Azure services
- Experience with Unit Testing
- Internet Filtering Domain knowledge
- Understanding of Windows Kernel Drivers
- Understanding of CI/CD principles and processes