Senior Software Application Engineer

Oceaneering International Services Limited

  • Chandigarh, India
Senior Software Application Engineer
Job Posted : Jun 30th, 2021

Job Description

The Application Software Engineer will primarily perform the role of software developer that involves design and development of  Application Software, APIs, Plugin Modules, Micro Services and User Interfaces for Guided Vehicles (AGVs), Remotely Operated Vehicles/Vessels (ROVs), Autonomous Mobile Robots (AMRs), System Simulators and Data Processing Systems. He/she will be additionally responsible for backend application software development for integrating machine learning platforms such as PyTorch, TensorFlow, etc and Robotic Operating System (ROS) for Oceaneering’s next generation systems.

Duties & Responsibilities:-


  • Preform Software Requirements Analysis and prepare Software Requirements Specifications (SRS).
  • Coordinate with internal team members to validate the SRS and prioritize feature requirements.
  • Design and develop clean software code for producing efficient executables, reusable libraries, and standalone plugins, primarily using Python, that include internal deliverables and customer project deliverables.
  • Develop unit tests, preform troubleshooting, and prepare design documents on software products.
  • Design and develop device emulators through software that mimic real device protocols.
  • Work with the Software Managers and Testers for the quality assurance of software products.
  • Iteratively develop proof-of-concepts, and demos to fine-tune technologies to practical, state of the art systems.
  • Perform multiple tasks in cross-functional teams under agile methodology with a strong sense of self-direction.
  • Review work carried out by other developers including documentation.
  • Contribute and assist in creation of functional processes, and work towards an efficient system integration as well as continuous improvement.
  • Share regular updates about work.


  • Develop an awareness of modern software development technologies, protocols, frameworks and tools.
  • Cultivate and disseminate knowledge of fault tolerant software design standards and best practices.
  • Prepare reports and presentations on the status of the design and development process for discussion with management and/or team members.
  • Direct research on emerging products and standards in support of planning and development efforts.
  • Train, manage and provide guidance to junior staff.
  • Perform all other duties as requested, directed or assigned.

Supervisory Responsibilities:-

  • This position has NO direct supervisory responsibilities.

Reporting Relationship:-

  • This person will be reporting to a Software Manager in the New Product Development group.



  • Bachelor’s degree in Computer Science/Artificial Intelligence (or related field).
  • Six or more years of past experience in developing effective and scalable Python codes.
  • Hands-on experience in fine tuning Python code to ensure low-latency, high availability and reusability.
  • Sound knowledge in working with inter process communication and protocols such as TCP/IP and UDP.
  • Must be able to incorporate various data storage solutions and UI components.
  • Strong understanding of data structures, multi-threading and computer science fundamentals.
  • In-depth knowledge of relational databases (e.g. PostgreSQL, MySQL).
  • Hands on experience in software engineering best practices such as design patterns, code reviews, unit/ integration testing and familiarity with various software test tools and source control tools (e.g. GitLab, SVN).
  • Competent and proficient understanding of Operating Systems such as Linux and Windows.
  • Must have good problem-solving skills and attention to detail.
  • Must be able to learn, understand, and apply new technologies.
  • Strong background in mathematics and statistics.


  • Master’s degree in Computer Science/Artificial Intelligence (or related field).
  • Knowledge of Python based Machine Learning platforms is highly desirable.
  • Experience in Object Oriented Programming in C++ is highly desirable.
  • Knowledge of Robotic Operating System (ROS 2) is highly desirable.
  • Hands on NoSQL database experience (e.g. MongoDB) is highly desirable.
  • Hands on Time Series database experience (e.g. Influx DB) would be an advantage.
  • Exposure to MATLAB/SIMULINK and/or any other simulation tool would be an advantage.
  • Good knowledge of Django or similar Python frameworks would be an advantage.
  • Familiarity with front-end technologies, such as Angular would be an advantage.
  • Hands on experience with Virtual Machines and Dockers would be an advantage.


  • Chandigarh, India.

Knowledge, Skills, Abilities, and Other Characteristics:-

  • Ability to analyse situations accurately, utilizing a variety of analytical techniques in order to make well informed decisions.
  • Ability to effectively prioritize and execute tasks in a high-pressure environment.
  • Skill to gather, analyse and interpret data.
  • Ability to determine and meet customer needs.
  • Ensures that others involved in a project/effort are kept informed about developments and plans.
  • Knowledge of communication styles and techniques.
  • Ability to establish and maintain cooperative working relationships.
  • Skill to prioritize workflow in a changing work environment.
  • Knowledge of applicable data privacy practices and laws.
  • Strong analytical and problem solving skills.

Company Overview:-

Oceaneering is a global provider of engineered services and products, primarily to the offshore energy industry. We develop products and services for use throughout the lifecycle of an offshore oilfield, from drilling to decommissioning. We operate the world’s premier fleet of work class ROVs. Additionally, we are a leader in offshore oilfield maintenance services, umbilical’s, subsea hardware, and tooling. We also use applied technology expertise to serve the Défense, entertainment, material handling, aerospace, science, and renewable energy industries.