Chennai, Tamil Nadu
Software Engineer (2) - Commodity Engineer 2 #1036992Job Description:
- Employees in this job function are responsible for designing, developing, testing and maintaining software applications and products to meet customer needs.
- They are involved in the entire software development lifecycle including designing software architecture, writing code, testing for quality and deploying the software to meet customer requirements.
- Full-stack software engineering roles, who can develop all components of software including user interface and server side also fall within this job function.
Key Responsibilities:
- Engage with customers to deeply understand their use-cases, pain points, and requirements, showcasing empathy and advocating for user-centric software solutions
- Solve complex problems by designing, developing, and delivering using various tools, languages, frameworks, methodologies (like agile) and technologies
- Assess the requirements of the software application or service and determine the most suitable technology stack, integration method, deployment strategy, etc.
- Create high-level software architecture designs that outline the overall structure, components, and interfaces of the application
- Collaborate with cross functional teams like product owners, designers, architects etc.
- Define and implement software test strategy, guidelines, policies and processes in line with organization vision, industry regulations and market best practices.
- Work on continuously improving performance and optimizing the application and implement new technologies to maximize development efficiency
- Familiar with programming practices, such as test-driven development, continuous integration, and continuous delivery
- Support security practices to safeguard user data including encryption and anonymization.
- Create user-friendly and interactive interfaces
- Develop and maintain back-end applications like APIs and microservices using server-side languages
- Evaluate and incorporate emerging technologies and capabilities to deliver their solutions, and are monitoring and participating in solutions for new stack layers, often involving industry collaboration
Skills Required:
- Application Development
Skills Preferred:
- C++, PostgreSQL, POSTGRES, Problem Solving, C
Experience Required:
- Engineer 2 Exp.: Practitioner: 1 coding language or framework. 4+ years in IT; 3+ years in development
Experience Preferred:
- System programming with high level device driver development using C/C++ on Linux or Unix
- Exposure on how IT application communicates with OT devices
- Experience with MQTT or other lightweight messaging protocols commonly used in IoT contexts.
- Experience with cloud platforms (AWS, Azure, GCP) and their respective IoT/data services.
- Familiarity with database systems (SQL Server, PostgreSQL, MongoDB, etc.).
- Knowledge of industrial cybersecurity principles and practices.
- Experience with containerization technologies (Docker, Kubernetes).
- Understanding of real-time operating systems or deterministic systems.
Education Required:
- Bachelor's Degree
Additional Information :
- Architect, design, code, test, and deploy software drivers and services that facilitate data exchange between various PLC brands (e.g., Allen-Bradley, Siemens) and server-side applications.
- Implement and work with a variety of industrial communication protocols, including but not limited to Ethernet/IP, PROFINET, CIP, MQTT, Modbus TCP/RTU, OPC UA and vendor-specific protocols.
- Develop interfaces to push/pull data from drivers into databases (SQL, NoSQL), message queues (Kafka, RabbitMQ, MQTT brokers), APIs, and potentially cloud services (AWS IoT, Azure IoT Hub, Google Cloud IoT Core).
- Ensure drivers are highly performant, fault-tolerant, and capable of handling large volumes of data with low latency, critical for real-time or near-real-time applications.
- Diagnose and resolve complex communication issues that span both the IT and OT layers, often requiring collaboration with automation technicians and network engineers.
- Implement and follow best practices for securing communication channels between OT and IT networks, considering potential cybersecurity risks in industrial environments.
- Develop and execute unit tests, integration tests, and system tests for communication drivers to ensure reliability and correctness.
- Create clear and concise technical documentation for drivers, APIs, configuration guides, and troubleshooting procedures.
- Work effectively in an agile environment, collaborating with cross-functional teams including automation engineers, IT operations, data engineers, and application developers.
- Contribute to discussions on overall system architecture, data models, and technology choices for industrial data connectivity.