Proactively collaborate within and contribute to design, architecture, and feature-selection for solutions across distributed teams
Write high-quality, API-first Python code with unit tests
Debug issues and produce high-quality fixes
Review code produced by other engineers
Work from home with global travel 2 to 4 times a year for internal and external events
Who You Are
You love technology, working with brilliant people, and solving interesting problems
You are a strategic thinker
You are curious, flexible, articulate, and accountable
You value soft skills and are passionate, enterprising, thoughtful, and self-motivated
You have a Bachelor's or equivalent in Computer Science, STEM or similar degree
You have proficiency delivering robust code to production, preferably written in Python
You have experience and enjoy maintaining and improving large and mature web applications
You have experience with databases, ORMs (PostgreSQL a plus), data management, and data modelling
You have an interest in, or experience with, integration, infrastructure, and operations
You believe that robust security requires conscious efforts at every stage of delivery
You have familiarity with Ubuntu as a development and deployment platform
You have a solid understanding of the structure of various software packaging systems, including Debian/Ubuntu packages
Software Development
Coding and Implementation: Write clean, maintainable code for new features or bug fixes under the guidance of more senior engineers, using programming languages like Java, Python, JavaScript, C++, or others
Collaborating on Design: Contribute to the design of new features or solutions, ensuring alignment with system architecture and technical specifications
Code Reviews: Participate in code reviews, offering constructive feedback to peers and learning from feedback received
Bug Fixing: Debug and resolve issues, following best practices for testing and troubleshooting
Testing and Quality Assurance
Unit Testing: Write unit tests to ensure the correctness and functionality of the software
Automated Testing: Contribute to the creation or maintenance of automated tests
Testing Documentation: Document test cases and test results, reporting any bugs or issues to senior engineers
Collaboration and Communication
Team Collaboration: Work with other software engineers, product managers, and designers to implement features or fix issues
Cross-functional Communication: Communicate with team members to clarify requirements, resolve issues, and provide updates on work progress
Learning and Skill Development
Continuous Learning: Participate in training, mentorship, and learning opportunities to improve technical skills
Following Best Practices: Learn and apply industry best practices in coding, testing, version control, and other aspects of software engineering
Documentation
Code Documentation: Write and maintain clear documentation for code
Technical Documentation: Contribute to or create user guides, release notes, or system documentation as needed
Desired Candidate Profile
Programming Languages: Proficiency in one or more programming languages, such as Java, Python, C++, JavaScript
Frameworks and Libraries: Familiarity with frameworks and libraries relevant to the role, such as React, Angular, Django, Spring, or Node.js
Software Development Practices: Experience with version control systems, particularly Git, and basic understanding of Agile development practices
Problem-Solving: Knowledge of common algorithms and data structures, and the ability to apply them in real-world scenarios
Software Testing: Familiarity with testing practices such as writing unit tests and understanding testing frameworks
Database and Storage: Basic knowledge of working with databases (e.g., MySQL, PostgreSQL, MongoDB)
Soft Skills: Strong verbal and written communication skills, ability to work effectively in a team environment, and manage time effectively