Senior Software Engineer - Python
Summary
In this development role you will work with our local and remote agile team to design, implement, and debug industry leading solutions for Smart Building 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. Applies fundamentals of software engineering to assist in the creation of new software technologies. Participates in relevant aspects of application design with other software engineers. This position typically works under general supervision and will report directly to the CTO. Incumbents of this position will exercise some discretionary decision making authority.
Compensation
Market, based on experience
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.
- 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.
- Participate in interviews.
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: Python, Serverless, Git, GitHub, Node.js, Relational Databases, NoSQL Databases, RESTful APIs, SqlAlchemy. CI tools such as CircleCI, Jenkins. Automated Testing Tools such as PyTest, PyUnit, Mocha, Selenium, Jasmine and Protractor. Infrastructure management including terraform, Docker, Linux and AWS Services such as API Gateway, Lambda, Cognito, Kinesis, ECS, ElastiCache (redis), SQS, SNS, SES, RDS, DynamoDB.
Must have strong verbal and written communication skills. 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 iOS and Android development is a plus