Overview

Summary
In this development role you will work with our local and remote agile team to design, implement, and debug industry leading solutions for IoT design and management. Develops software by completing coding tasks to create user interfaces, algorithms, applications, tools, and associated technologies in accordance with System Surveyor’s code quality guidelines.  You will actively contribute to relevant aspects of application design with other software engineers, while mentoring junior developers, reviewing code and contributing to system architecture. This position typically works under general supervision and will report to our technology leader.  Incumbents of this position will exercise some discretionary decision-making authority.

Location
Austin, TX or Remote

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.
• Contribute on technical design and architecture discussions.
• Implement, debug, and document sections of code and systems, develop software requirements, related designs, and code.
• Participate in 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.
• Assess severity of identified problems or bugs, perform fault isolation, determine corrective action, resolve technical problems, and implement solutions.
• Participate in hiring of other team members

Minimum Job Requirements
Bachelors degree or higher in Computer Science, Engineering, or related field plus four years professional computer programming experience OR six years professional computer programming experience.

Demonstrable ability in two or more basic software engineering skills including: knowledge of requirements, analysis and design, implementation, debugging, testing, documentation, and DevOps.

Demonstrable ability with several of the following technologies: Git, GitHub, Node.js, Python, Java, PHP, Relational Databases, NoSQL Databases, RESTful APIs, Front-End frameworks/libraries such as React, React Native, Flutter, Angular, Ember, HTML5, Sass or LESS. CI such as GitHub Actions, CircleCI, Jenkins.  Automated Testing Tools such as Mocha, Selenium, Jasmine and Protractor.  IT automation tools such as Terraform, Ansible, Salt, Chef, Puppet. Infrastructure management including Docker, Serverless, Kubernetes, Linux and AWS Services such as API Gateway, Lambda, Kinesis, ElastiCache (redis), RDS, SNS, SQS, DynamoDB, Cloudwatch, ECS, EKS.

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 best practice changes and industry advancements.

Experience with mobile development is a plus