Staff Software Engineer Algorithms
Posted Updated
Description
You will design and develop real-time, highly available, scalable distributed software for automation systems. You will research and productize optimization algorithms, analyze performance and failures, build microservice applications, and work in an Agile/Scrum environment.
Responsibilities
- Design and develop real-time distributed software for automation systems
- Design highly available and scalable software systems
- Research, develop, and productize solutions for NP-hard optimization problems
- Analyze distributed software using performance, profiling, and debugging tools
- Work in an Agile/Scrum environment
- Develop microservice applications using .NET Core, RabbitMQ, OpenAPI, and Kubernetes
- Travel to customer sites as needed
Requirements
- Bachelor's or Master's degree in Computer Science, Software Engineering, or a related field
- At least 8 years of professional C# and .NET software development experience
- Expertise in object-oriented programming, SOLID principles, and design patterns
- Understanding of algorithms, data structures, and computational complexity analysis
- Experience designing scalable, fault-tolerant, distributed systems
- Debugging, troubleshooting, and performance-tuning skills
- Experience with relational databases and SQL optimization
- Experience with Git
- Experience with SQL Server and PL/SQL
- Experience with Windows and Linux development
- Experience developing unit tests and test automation frameworks
- Comfort with asynchronous or multithreaded programming
- Experience with cross-platform .NET Core development
- Valid driver's license and ability to travel
Benefits
- Medical insurance
- Dental insurance
- Vision insurance
- Disability insurance
- 401K
- PTO
