In this development role you will work on our remote agile team to design, implement, and debug industry leading solutions for IoT design and management. Develop software by completing coding tasks to create user interfaces, algorithms, applications, tools, and associated technologies in accordance with System Surveyor’s code quality guidelines. Apply fundamentals of software engineering to assist in the creation of new software technologies. Participate in relevant aspects of application design with other software engineers. This position typically works under general supervision and will report directly to the Director of Engineering. Incumbents of this position will exercise some discretionary decision making authority.


Essential Duties and Responsibilities

Core duties and responsibilities include the following:

·       Participate in configuration, build and release management, and testing of software with software engineers.

·       Participate in the analysis, design, development, test, modification and integration of software systems or subsystems for designated products and/or customer applications.

·       Participate in agile processes including sprint planning, revise and update documentation, including reviewing schedules and milestones.

·       Collaborate with product and design engineers to flesh out requirements, provide feedback on existing designs, and participate in planning discussions.

·       Sit in on technical design and architecture discussions. May contribute but not required.

·       Under supervision, implement, debug, and document sections of code and systems, develop software requirements, related design, and code.

·       Participate in and gain familiarity with code reviews, software development, and engineering processes.

·       Recommend value added changes to existing coding practices, standards and tools.

·       Define and executes software test methods and procedures.

·       Gain a firm understanding of software development and engineering processes.

·       Assess severity of problems, determine corrective action, resolve technical problems, perform fault isolation and implement solutions.


Minimum Job Requirements

Bachelors degree or higher in Computer Science, Engineering, or related field with at least one year professional computer programming experience OR two years professional computer programming experience.

Demonstrable ability with the React library, Redux and basic software engineering skills including: knowledge of requirements, analysis and design, user experience, implementation, debugging, testing and documentation.

Demonstrable ability with several of the following technologies: Git, GitHub, Relational Databases, NoSQL Databases, RESTful APIs, Front-End frameworks/libraries such as React, React Native, HTML5, Sass or LESS. CI such as GitHub Actions, CircleCI, Jenkins.  Automated Testing Tools such as Cypress, Mocha, Selenium, Jasmine and Protractor.  Infrastructure management including Docker, Kubernetes, Linux and AWS Services such as API Gateway, Lambda, RDS, ElastiCache (redis), SQS, SES, SNS, DocumentDB, Secrets Manager, DynamoDB.

Must have demonstrable ability in both verbal and written communication. Must have strong analytical and problem-solving skills. Must have good interpersonal and team-oriented skills. Must have demonstrable knowledge of software engineering processes. Experience as a team member on one or more full software life cycles is required. Must have demonstrable ability to understand and keep pace with external software engineering practice changes and industry advancements.

Experience with React Native, Flutter, Python, PHP, iOS or Android development is a plus