Job Summary Python developer with a strong passion for music? That's what BMAT Music Innovators is looking for. Even more so if you're based in Barcelona and enjoy the flexibility of remote work while having the option to meet your colleagues in person. However, being based anywhere in Spain or Italy is also perfectly fine.
Experience with Python is required. We’re not looking for someone just starting out.
As a Senior Software Engineer, you will play a crucial role in supporting a software team in achieving its objectives. Your contributions will directly influence BMAT’s top-of-mind goals, making you an integral part of the team.
Our Stack
Backend: Python3 and FastAPI
Data Layer: PostgreSQL (via SQLAlchemy), MongoDB (via PyMongo), and Elasticsearch
DevOps & CI/CD: Bitbucket Pipelines
Deployment: Containerised applications using Docker
Cloud: Infrastructure hosted on AWS
Key Responsibilities
Take ownership of the technical design, implementation, and deployment of complex features and system components.
Collaborate with cross-functional teams to define, design, and ship new features.
Troubleshoot and debug applications to optimise performance and ensure reliability.
Lead code reviews to maintain code quality and share knowledge.
Stay up-to-date with emerging technologies and industry trends.
Contribute to the continuous improvement of the development process and methodologies.
Contribute to breaking down high-level architectural visions into actionable implementation plans.
Identify tasks while balancing system and infrastructure maintenance, migration costs, and their operational impact.
Align software and systems to overall technical strategy, making tradeoffs where appropriate in consultation with other engineers.
Expectations of the Role (ONLY FOR NEW POSITIONS) Within 30 Days:
During the first month, your primary focus will be on familiarizing yourself with essential aspects of the role, our core codebases, and systems context.
Onboarding and Training:
Complete the company’s onboarding program.
Familiarize yourself with the company’s mission, values, and development process.
Understand the tools, technologies, and frameworks used by the development team.
Team Integration:
Meet team members and key stakeholders.
Participate in team meetings and Agile ceremonies (daily stand-ups, sprint planning).
Start building relationships with your colleagues.
Initial Contributions:
Review existing codebases and documentation.
Pair with the Tech Lead and other team members to understand our domain complexities and push your first production feature.
Within 60 Days:
By the second month, you’ll be expected to take on more complex responsibilities and actively contribute to team/project/strategic initiatives.
Active Participation:
Take independent ownership of complex tasks and feature implementations within the sprint. Lead internal technical design discussions for upcoming features, collaborating with the Tech Lead on system trade-offs.
Lead code reviews for the team, providing constructive and high-quality feedback to elevate overall code quality.
Contribute to team discussions and planning sessions.
Skill Development:
Continue to learn and adapt to the development environment and tools.
Explore and identify opportunities for improvement within the codebase and offer expertise.
Collaboration:
Work closely with other team members to understand project requirements and deliverables.
Collaborate with cross-functional teams (QA, Product Management) to ensure seamless project execution.
Within 90 Days:
At the end of the probationary period, you’ll be expected to autonomously manage tasks, contribute to technical planning, and take the lead of a complex delivery.
Independent Contribution:
Demonstrate the ability to independently handle and complete assigned projects and tasks.
Show proficiency in the primary technologies and frameworks used by the team.
Deliver high-quality, well-documented, and tested code.
Process Improvement:
Identify and suggest improvements to existing processes and workflows.
Participate in retrospectives and provide constructive feedback to help the team improve.
Establishing a Role:
Establish yourself as a reliable and integral part of the development team.
Take ownership of specific components or features of the project.
Proactively mentor and support junior/mid level team members, sharing expertise, knowledge and best practices.
Qualifications
5+ years of proven experience as a Python Engineer delivering production ready features autonomously.
Proven experience working with large datasets and handling large files at scale.
Experience with asynchronous systems, batch processing, or event-triggered workflows is a plus.
Experience in Python.
Experience with web development frameworks (Django, Flask, FastAPI) is a plus.
Strong problem-solving skills and attention to detail.
Ability to effectively communicate with team members, stakeholders, and external partners.
Ability to prioritize tasks and manage multiple responsibilities effectively.
Proactive attitude with a willingness to learn and take initiative.
Demonstrate adaptability and openness to feedback and learning opportunities.
Collaborative team player with the ability to work effectively in a fast-paced environment.
Interview Process
Screening call with the People team
Live coding challenges
Interview with the team manager and part of the team to discuss the project
Benefits
Flexible working hours and location
Flat hierarchy
You can make the role your own and run your own development
Online language classes to improve your Spanish or English
Online and onsite courses and music industry workshops run by in-house experts
We’ll provide you with all equipment needed for you to be comfortable
Unlimited time off because we believe you know best when you need to rest.
Barcelona HQ office available to you, kitted out with a rehearsal room