Software Engineer | Product
This document describes the skills, competencies, and responsibilities expected of all software engineers regardless specific role. This role involves analyzing user requirements, writing and testing code, and ensuring the software meets both functional and technical specifications. Our Software Engineers work in a dynamic environment, often collaborating with cross-functional teams to deliver high-quality, innovative software solutions that accelerate our mission.
Our stack is:
- PHP / Laravel (application)
- PostgreSQL
- Python (back-end services)
- dbt
- fly.io
- Various cloud services
Responsibilities:
-
Development and Coding
- Design, code, and debug applications in various programming languages.
- Implement software solutions following best practices and coding standards.
- Develop front-end and/or back-end components for web and mobile applications.
- Integrate software with existing systems and third-party services.
-
Analysis and Design
- Analyze user requirements and translate them into technical specifications.
- Create architectural designs and software models.
- Evaluate and recommend new technologies and tools.
-
Testing and Quality Assurance
- Perform unit, integration, and system testing.
- Identify and fix software defects.
- Ensure compliance with industry standards and best practices.
-
Maintenance and Support
- Monitor software performance and optimize as needed.
- Perform maintenance and updates on existing software systems.
- Provide technical support and troubleshooting.
-
Project Management and Collaboration
- Participate in project planning and execution.
- Collaborate with project managers, designers, and other engineers.
- Contribute to Agile/Scrum ceremonies.
-
Innovation and Continuous Improvement
- Propose and implement improvements to existing systems and processes.
- Participate in code reviews and provide constructive feedback.
- Foster a culture of continuous learning and improvement.
-
Leadership and Strategy
- Take leadership roles in making meaningful directional decisions.
- Contribute to tech hiring strategy and help with onboarding.
- Advocate for technology tooling as needed.
Skills & Competencies
Technical Proficiency
- Deep understanding of programming languages, software development methodologies, and tools.
- Proficiency in at least two backend programming languages, JavaScript, and CSS.
- Database design and SQL expertise.
- Understanding of cloud environments, CI/CD, and distributed programming.
Open-minded Pragmatism
- Value picking the right tool for the job over ivory-tower purism.
- Sound judgment on balancing scalability, maintainability, and speed of deployment.
- Deep appreciation of complexity to identify simplified decarbonization approaches.
Problem-Solving and Systems Thinking
- Ability to identify, analyze, and solve complex technical problems.
- Understanding of interconnections between building infrastructure elements and marketplace participants.
- Appreciation for how system behavior follows from its design.
Collaboration and Communication
- Strong interpersonal skills to work effectively within a team and communicate with stakeholders.
- Ability to bridge the gap between software engineering lingo and human language.
- Comfortable leading others to solutions and asking for help.
Adaptability and Continuous Learning
- Willingness to learn new technologies and adapt to changing project requirements.
- Stay updated with the latest industry trends and technologies.
Attention to Detail and Quality Assurance
- Precision in coding, testing, and documentation to ensure high-quality software.
- Develop and execute test plans and cases.