Home » Employee Resources » Job Descriptions » Senior Software Engineer/Developer/Programmer

Senior Software Engineer/Developer/Programmer

Job Description

As a Senior Software Engineer/Developer/Programmer, you like a small team where you can make a big impact. You’re an experienced engineer who has created or maintained large or complex systems. You have spent several years programming in a specific genre and have a strong understanding of design patterns, asynchronous programming, queuing, caching, logging, security, and large data sets. You’re experienced with build automation, documentation, installers, and automated testing. You create data structures and algorithms that encapsulate aspects of the problem that are subject to change. You can visualize and design complex systems with multiple product lines and integrations with external systems. Your code is reliable and readable—others would identify it as beautiful. You have vast and in-depth knowledge of API and can simplify frequently used tasks and gaps in the API. You can do basic database administration, performance optimization, index optimization, write advanced select queries, and replace cursor usage with relational SQL. You understand how data is stored internally, how indexes are stored internally, how databases can be mirrored, replicated, etc. You have implemented multiple big features in the codebase and can easily visualize the changes required for most features or bug fixes.

Duties and Responsibilities

  • Build and maintain microservices to meet business requirements
  • Research and design solutions to integrate with a variety of IoT platforms and devices
  • Design, provision, and manage cloud infrastructure for microservices, and data infrastructure
  • Work closely with other developers to deploy services across environments
  • Monitor stability and performance and troubleshoot issues
  • Scale infrastructure to meet increasing demand
  • Propose best practices for continuous integration and deployment, performance and health monitoring, and alerting
  • Be able to handle incidents outside of regular business hours on occasion

Qualifications

  • 8+ Years of Experience as Software Developer/Engineer
  • Experience designing and managing cloud infrastructures
  • Experience working with containerization technology such as Docker
  • Experience working with a microservices-based architecture
  • Comfortable working with Kubernetes and knowledgeable about how the platform operates (service discovery, deployment, monitoring, scheduling, load balancing)
  • Advanced knowledge of one or more of the following languages and platforms: JavaScript/TypeScript (Node.js), Python, Java, Go, C++
  • Experience building and working with REST APIs
  • Knowledge of asynchronous messaging such as MQTT, Google Pub/Sub, RabbitMQ, or Kafka
  • A passion for developing highly available systems that can handle massive amounts of data
  • Must be able to pass drug and background screens
  • Experience with configuration management and automation (i.e. Terraform)
  • Experience with GitOps tooling (i.e. ArgoCD or Flux) and workflows for continuous deployment
  • Have integrated with IoT devices at a software level (via APIs, MQTT, etc)