This job posting has expired
Sr. Software Developer (IOT)
Location : Pune, Maharashtra
Headquarters : India
Hiring Mode : Full Time
Hiring Role : Developer
Experience : Senior Level
- As a Senior Software Engineer in the IoT domain you will be responsible for developing critical systems keeping in mind.
- Concurrency: You must handle multiple activities concurrently like fetching and sending multiple messages from/to multiple devices at the same time.
- Distributed Operations: You must run on a distributed network of multiple servers in different geographies, coordinating through APIs on a microservices architecture.
- Design and write programs to improve the availability, scalability, latency, and efficiency of Company’s IoT systems.
- Work with the engineering team to explore and create new design/architectures geared towards scale and performance.
- Work with multiple data ingestion sources and protocols like HTTP, MQTT, CoAP,OPC UA and databases to drive efficient ETL processes for streaming data from IoT sensor devices
- Participate in code and design reviews to maintain our high development standards.
- Engage in service capacity and demand planning, software performance analysis, tuning and optimization.
- Collaborate with product and experience teams to define and prototype feature specifications.
- Work closely with the infrastructure team in building and scaling back-end services as well as performing root cause analysis investigations.
- Design, build, analyze and fix large-scale distributed systems.
- Required Software Aptitude and Qualifications
- 5+ years of overall software engineering experience.
- Programming experience with modern languages such as Ruby/Python/Elixir etc.
- You should have good experience working with relational and non-relational databases. We use Postgres and Cassandra.
- Good to have but not mandatory working experience with caching tools such as Redis, Queue mechanism setup with RabbitMQ.
- Good knowledge of version management with Git.
- Awareness of TDD.
- CI/CD knowledge would be a huge advantage.
- Will to design and maintain large scale distributed systems.
- Past experience in building complex applications, either by yourself, or as part of a larger team
- Desire (obsessive?) for maintainability.
- Experience of working with cross-functional remote teams in an Agile software development framework.
- Experience in designing APIs with proper documentation.
- Ability to write useful and maintainable tests.
- Good understanding of the common architectural patterns and design principles.
- Solid understanding of how modern web applications work.
- Strong written and verbal communications skills in English to engage a variety of large audiences, internally and externally.
- Strong analytical and reasoning skills.
- Bachelor’s Degree or equivalent in any relevant discipline.
- Good to have experience with Elixir
- It would be amazing if you have some experience working with Elixir Lang.
- You should be aware of idiomatic programming in Elixir, and should have good awareness of concepts such as pattern matching, recursion, and behaviours.
- You should be well versed with concurrency and processes in Elixir.
- You should be hands on with Genservers, Tasks, Agents, Supervisors, and other OTP concepts in Elixir.
- Plus points if you have worked with data processing libraries such as Genstage, Flow and Broadway.