cfchris.com

Loading

cloud software engineer

What Does a Cloud Software Engineer Do?

What Does a Cloud Software Engineer Do?

A cloud software engineer designs, builds, and maintains software that runs on cloud computing platforms. Instead of relying only on servers located in an office or data center, cloud-based applications use internet-connected infrastructure that can scale to meet changing needs.

Cloud software engineers combine software development with an understanding of cloud services, architecture, security, and operations. They help organizations build applications that are reliable, efficient, and easier to update.

What Is Cloud Software Engineering?

Cloud software engineering is the practice of creating and operating software using cloud platforms. These platforms provide services such as computing power, databases, storage, networking, and tools for deploying applications.

Applications may be built specifically for the cloud or adapted from systems that previously ran on local servers. In either case, engineers consider how the software will be deployed, scaled, monitored, and protected.

Typical Responsibilities

The day-to-day work of a cloud software engineer can vary by company and project. Common responsibilities include:

  • Designing and developing cloud-based applications and services
  • Building application programming interfaces (APIs) and connecting software components
  • Working with cloud infrastructure, databases, storage, and networking
  • Automating software builds, testing, and deployments
  • Monitoring applications and troubleshooting performance or reliability issues
  • Applying security practices to software, data, and cloud environments
  • Collaborating with software developers, operations teams, security specialists, and product managers
  • Reviewing cloud usage and looking for opportunities to improve efficiency and manage costs

Skills and Technologies

Cloud software engineers need a strong foundation in programming and software development. Common programming languages include Python, Java, JavaScript, C#, and Go. The best language to learn depends on the role, the organization, and the applications being developed.

Other useful skills and areas of knowledge include:

  • Cloud platforms: Amazon Web Services (AWS), Microsoft Azure, and Google Cloud
  • Containers: Docker and container orchestration tools such as Kubernetes
  • Infrastructure as code: Tools such as Terraform and cloud-specific deployment frameworks
  • Continuous integration and delivery: Automated processes for testing and releasing software
  • Databases: Relational and nonrelational database systems
  • Networking and security: Identity and access management, encryption, firewalls, and network fundamentals
  • Observability: Logging, metrics, tracing, and alerting

No single engineer needs to master every tool. Employers often look for solid fundamentals, practical experience, and the ability to learn technologies as project needs change.

Cloud Software Engineer vs. Cloud Engineer

The titles can overlap, but they often emphasize different responsibilities. A cloud software engineer typically focuses on designing and writing application code that runs in the cloud. A cloud engineer may focus more on infrastructure, networking, platform configuration, and cloud operations.

In many organizations, the responsibilities are shared across a team. Some roles combine application development and infrastructure work, especially in smaller companies.

How to Become a Cloud Software Engineer

There are several ways to prepare for this career. A degree in computer science or a related field can provide a useful foundation, but it is not the only route. Coursework, independent study, work experience, and project portfolios can also help build relevant skills.

  1. Learn programming fundamentals. Practice writing, testing, and maintaining code in one or more widely used languages.
  2. Build software projects. Create an application, connect it to a database, and document how it works.
  3. Learn cloud fundamentals. Explore how cloud computing, networking, storage, identity, and security fit together.
  4. Deploy an application. Practice publishing a project to a cloud platform and monitoring it after deployment.
  5. Study automation and containers. Learn how teams package applications and automate testing and releases.
  6. Develop a portfolio. Share project descriptions, source code where appropriate, and clear explanations of your decisions.

Cloud certifications can help demonstrate familiarity with a platform, particularly for people early in their careers. They are most valuable when paired with hands-on experience and a clear understanding of the concepts behind the tools.

Why the Role Matters

Cloud platforms give organizations access to computing resources without requiring them to manage every physical server themselves. This can help teams launch products, respond to changing demand, and support users in different locations. However, cloud services still require thoughtful engineering.

Cloud software engineers help make applications dependable, secure, and maintainable. Their work can affect how quickly a business delivers new features, how well its systems handle traffic, and how effectively it uses its technology budget.

Is Cloud Software Engineering a Good Career Fit?

This career may suit people who enjoy solving technical problems, building software, and learning new tools. It also involves collaboration and ongoing maintenance—not just writing code. Engineers may need to investigate failures, improve older systems, document their work, and balance competing priorities.

For anyone interested in software development and modern infrastructure, cloud software engineering offers a way to work across both areas. Strong programming skills, practical projects, and a willingness to keep learning can provide a solid starting point.

 

7 Advantages of Being a Cloud Software Engineer

  1. Builds scalable applications.
  2. Works with modern cloud technology.
  3. Solves challenging technical problems.
  4. Supports remote collaboration.
  5. Can work across diverse industries.
  6. Helps improve software reliability.
  7. Offers opportunities for continuous learning.

 

7 Cons of Being a Cloud Software Engineer

  1. Requires constant learning as cloud technologies change.
  2. Can involve on-call work and urgent troubleshooting.
  3. Cloud outages can disrupt applications and services.
  4. Security mistakes may expose sensitive data.
  5. Cloud costs can be difficult to control.
  6. Work often involves complex systems and configurations.
  7. Deadlines and production issues can be stressful.

Builds scalable applications.

Cloud software engineers build applications that can scale as demand changes. By using cloud services and thoughtful system design, they can help software handle more users, data, or requests without requiring a complete redesign. This flexibility allows organizations to support growth, manage traffic spikes, and make better use of computing resources.

Works with modern cloud technology.

Cloud software engineers work with modern cloud technology to build and improve applications using services for computing, storage, databases, and networking. This gives them hands-on experience with tools and practices that help software scale, deploy more efficiently, and adapt to changing needs. Because cloud platforms continue to evolve, the role also offers ongoing opportunities to learn and work with new technologies.

Solves challenging technical problems.

Cloud software engineers solve challenging technical problems by designing applications that can handle changing demands, work reliably across distributed systems, and protect sensitive data. They investigate issues such as slow performance, service outages, and complex integrations, then develop practical solutions using cloud platforms and modern tools. The work calls for curiosity, careful problem-solving, and a willingness to keep learning as technology evolves.

Supports remote collaboration.

Cloud software engineering supports remote collaboration by giving teams access to shared development environments, code repositories, and cloud-based tools from almost anywhere. Engineers can work together on the same applications, review changes, track issues, and deploy updates without needing to be in the same office. This flexibility helps distributed teams coordinate their work and keep projects moving across different locations and time zones.

Can work across diverse industries.

Cloud software engineers can work across a wide range of industries, including healthcare, finance, education, retail, and entertainment. Because organizations in nearly every field rely on cloud technology, engineers can apply their skills to different challenges—from protecting sensitive patient records to building online shopping platforms. This variety offers opportunities to explore new areas, learn how different businesses operate, and choose projects that match personal interests.

Helps improve software reliability.

Cloud software engineers help improve software reliability by designing systems that can handle failures and changing demand. They use practices such as automated testing, monitoring, backups, and scalable infrastructure to identify issues early and keep applications available. Their work helps businesses deliver a more consistent experience for users, even when traffic increases or individual services encounter problems.

Offers opportunities for continuous learning.

Cloud software engineering offers plenty of opportunities for continuous learning because cloud platforms, tools, and best practices are constantly evolving. Engineers can deepen their skills in areas such as security, automation, artificial intelligence, and distributed systems while exploring new services and technologies. This ongoing learning helps them stay current, solve new challenges, and grow their careers.

Requires constant learning as cloud technologies change.

One challenge of being a cloud software engineer is the need for constant learning. Cloud platforms regularly introduce new services, tools, and best practices, so engineers must keep updating their skills to stay effective. This ongoing learning can take time outside of day-to-day project work, but it also helps them build better, more secure, and more efficient solutions.

Can involve on-call work and urgent troubleshooting.

Cloud software engineering can involve on-call shifts, during which engineers must be available to respond to outages or other urgent issues outside regular business hours. Troubleshooting under time pressure can be stressful, especially when a problem affects customers or critical services. The frequency and impact of on-call work vary by employer, so it’s worth asking about shift schedules, incident response expectations, and team support when considering a role.

Cloud outages can disrupt applications and services.

One drawback of cloud software engineering is that cloud outages can disrupt applications and services. Even well-designed systems may become unavailable when a cloud provider experiences technical problems, affecting users and business operations. Engineers can reduce the impact with monitoring, backups, and recovery plans, but preventing every outage is not always possible.

Security mistakes may expose sensitive data.

A key challenge for cloud software engineers is preventing security mistakes that could expose sensitive data. Misconfigured storage, weak access controls, or coding errors can leave personal or business information vulnerable to unauthorized access. Engineers must follow security best practices, regularly review cloud settings, and test systems for weaknesses to help protect data and maintain user trust.

Cloud costs can be difficult to control.

Cloud costs can be difficult to control because usage may change quickly, and charges can come from many services, including computing, storage, data transfers, and managed tools. A cloud software engineer must understand how design choices affect spending, monitor usage, and help prevent waste from idle or oversized resources. Without clear budgets and regular reviews, costs can rise unexpectedly as an application grows.

Work often involves complex systems and configurations.

One challenge of working as a cloud software engineer is dealing with complex systems and configurations. Applications may rely on interconnected services, networks, databases, and security settings, so a small change can have unexpected effects elsewhere. Troubleshooting these issues takes patience, careful testing, and a strong understanding of how the different parts work together.

Deadlines and production issues can be stressful.

Cloud software engineers often work under tight deadlines, especially when launching new features or resolving problems that affect users. Production issues can arise unexpectedly, requiring quick investigation and careful decisions to restore service while minimizing disruption. This pressure can make the role stressful, particularly when systems are business-critical or teams are responding outside regular work hours.

tech stack

Mastering Your Tech Stack: Building Efficient Software Solutions

In the world of software development, a tech stack plays a crucial role in determining the success and efficiency of a project. A tech stack, short for technology stack, refers to the combination of programming languages, frameworks, tools, and software used by developers to build and deploy applications.

Choosing the right tech stack is essential as it directly impacts factors such as performance, scalability, security, and maintainability of the software. A well-thought-out tech stack can streamline development processes and ensure that the final product meets both functional and non-functional requirements.

Typically, a tech stack consists of three main components:

  1. Frontend: The frontend of an application is what users interact with. It includes technologies like HTML, CSS, and JavaScript along with popular frameworks such as Angular, React, or Vue.js.
  2. Backend: The backend is responsible for handling data processing, business logic, and server-side operations. Common backend technologies include programming languages like Python, Java, Ruby on Rails, or Node.js along with frameworks like Django or Spring.
  3. Database: The database component stores and manages the application’s data. Developers can choose from various types of databases such as relational (e.g., MySQL), NoSQL (e.g., MongoDB), or in-memory databases (e.g., Redis) based on the project requirements.

Additionally, a tech stack may include other elements like version control systems (e.g., Git), cloud services (e.g., AWS or Azure), containerization tools (e.g., Docker), and continuous integration/continuous deployment (CI/CD) pipelines to automate testing and deployment processes.

The choice of a tech stack depends on factors like project complexity, scalability needs, time-to-market requirements, developer expertise, budget constraints, and future growth considerations. It’s crucial for development teams to evaluate these factors carefully before finalizing a tech stack for their projects.

In conclusion, a well-designed tech stack is fundamental to the success of any software development project. By selecting the right combination of technologies and tools tailored to specific project needs, developers can create robust applications that meet user expectations while ensuring efficient development processes and long-term sustainability.

 

7 Key Advantages of a Well-Defined Tech Stack for Modern Application Development

  1. 1. Enables efficient development by providing a structured framework for building applications.
  2. 2. Facilitates scalability, allowing applications to handle increased user loads and data volumes.
  3. 3. Enhances performance through optimized use of technologies that meet project requirements.
  4. 4. Improves collaboration among team members with a shared understanding of the tech stack components.
  5. 5. Streamlines maintenance and updates by standardizing tools and processes within the development environment.
  6. 6. Boosts innovation by leveraging cutting-edge technologies and frameworks to create advanced solutions.
  7. 7. Supports seamless integration with third-party services and APIs, enhancing functionality and expanding capabilities.

 

6 Common Drawbacks of Tech Stacks: Navigating Complexity, Compatibility, and More

  1. Complexity
  2. Compatibility Issues
  3. Learning Curve
  4. Maintenance Challenges
  5. Vendor Lock-in
  6. Performance Overhead

1. Enables efficient development by providing a structured framework for building applications.

A significant advantage of utilizing a tech stack is its ability to enable efficient development by offering a structured framework for building applications. By incorporating predefined technologies, programming languages, and tools into a cohesive stack, developers can streamline the development process, reduce redundancy, and focus on implementing core functionalities. This structured approach not only enhances productivity but also promotes consistency across the project, making it easier to maintain and scale the application as needed. Ultimately, a well-defined tech stack serves as a solid foundation that empowers developers to work more efficiently and effectively towards delivering high-quality software solutions.

2. Facilitates scalability, allowing applications to handle increased user loads and data volumes.

Facilitates scalability, allowing applications to handle increased user loads and data volumes. A well-chosen tech stack enables applications to scale seamlessly as user traffic and data volumes grow. By incorporating scalable technologies and architectures, developers can ensure that the application remains responsive and performs optimally even under heavy loads. This pro of a tech stack is crucial for businesses looking to expand their user base or handle growing amounts of data without compromising on performance or user experience.

3. Enhances performance through optimized use of technologies that meet project requirements.

By optimizing the use of technologies that align with project requirements, a well-chosen tech stack enhances performance significantly. By carefully selecting programming languages, frameworks, and tools that are best suited for the project’s needs, developers can ensure efficient code execution, faster response times, and overall improved system performance. This optimization not only boosts the application’s speed and responsiveness but also contributes to better scalability and resource utilization, ultimately leading to a more robust and high-performing software solution.

4. Improves collaboration among team members with a shared understanding of the tech stack components.

Enhancing collaboration among team members is a significant advantage of utilizing a tech stack in software development. By establishing a shared understanding of the tech stack components, team members can effectively communicate, troubleshoot issues, and work together seamlessly. With everyone on the same page regarding the technologies, frameworks, and tools being used, collaboration becomes more efficient and productive. This shared knowledge fosters a cohesive team environment where developers can leverage each other’s expertise and contribute collectively to the success of the project.

5. Streamlines maintenance and updates by standardizing tools and processes within the development environment.

Streamlining maintenance and updates is a significant advantage of utilizing a tech stack in software development. By standardizing tools and processes within the development environment, teams can ensure consistency and efficiency when managing and updating their applications. This approach simplifies the maintenance tasks, as developers are familiar with the standardized tools and procedures, making it easier to troubleshoot issues, implement updates, and ensure the overall stability of the software. Additionally, having a uniform tech stack across projects enables smoother collaboration among team members and facilitates knowledge sharing, ultimately enhancing productivity and reducing the time required for maintenance activities.

6. Boosts innovation by leveraging cutting-edge technologies and frameworks to create advanced solutions.

By leveraging cutting-edge technologies and frameworks within a tech stack, developers can boost innovation and create advanced solutions that push the boundaries of what is possible in the digital landscape. Incorporating the latest tools and techniques allows for the exploration of new ideas, implementation of novel features, and development of groundbreaking applications that meet evolving user demands. This proactive approach to technology adoption not only enhances product offerings but also positions businesses at the forefront of innovation in their respective industries.

7. Supports seamless integration with third-party services and APIs, enhancing functionality and expanding capabilities.

By leveraging a well-structured tech stack, developers can harness the power of seamless integration with third-party services and APIs, thereby enhancing the functionality and expanding the capabilities of their applications. This pro allows for the incorporation of a wide range of external tools and services, enabling developers to tap into additional features and resources without having to reinvent the wheel. By integrating with third-party services and APIs, development teams can boost efficiency, improve user experience, and unlock new possibilities for innovation within their software projects.

Complexity

Managing multiple technologies in a tech stack can indeed introduce a significant challenge in the form of increased complexity. Each technology within the stack may have its own set of requirements, dependencies, and best practices, making it essential for developers to possess specialized skills and expertise in each area. Juggling multiple technologies can lead to compatibility issues, integration challenges, and troubleshooting complexities, ultimately demanding a higher level of coordination and effort to ensure seamless functionality across the entire tech stack. This complexity can also impact project timelines and resource allocation as teams may need to invest additional time and resources in managing and maintaining the diverse components of the tech stack.

Compatibility Issues

Compatibility issues can pose a significant challenge when dealing with a tech stack. Due to the diverse nature of components within a tech stack, such as programming languages, frameworks, and tools, ensuring seamless integration can be complex. Incompatibilities between different components can result in unexpected errors, performance issues, or even system failures. Resolving compatibility issues requires careful testing, troubleshooting, and sometimes reevaluating the choice of technologies to ensure that all parts of the tech stack work harmoniously together. Addressing compatibility challenges effectively is crucial to maintaining the stability and functionality of software applications built on that tech stack.

Learning Curve

Adapting to a new tech stack can present a significant challenge for developers due to the learning curve associated with mastering unfamiliar technologies. This adjustment period may lead to a temporary decrease in productivity as developers invest time and effort in understanding and becoming proficient with the new tools and frameworks. The need for training and skill development can slow down project progress in the short term, impacting deadlines and deliverables. However, once developers overcome the initial learning curve, they can leverage their newfound expertise to enhance efficiency and effectiveness in future project work within the tech stack.

Maintenance Challenges

Maintenance challenges pose a significant con when it comes to tech stacks. Updating or replacing components of a tech stack can be a daunting task, particularly in complex projects. The process can be time-consuming and challenging, requiring careful planning and execution to ensure that the changes do not disrupt the functionality of the system. Additionally, compatibility issues between different components can arise during updates, leading to unexpected errors and downtime. Managing maintenance challenges effectively is crucial to maintaining the stability and performance of a tech stack over time.

Vendor Lock-in

Depending heavily on specific technologies within a tech stack can lead to a significant drawback known as vendor lock-in. This con arises when a development team becomes overly reliant on proprietary tools or platforms provided by a particular vendor. Vendor lock-in can restrict flexibility and hinder the ability to adapt or switch to alternative solutions in the future. It poses a risk of being tied to a single vendor’s ecosystem, potentially limiting innovation and increasing dependency on external providers, which may result in higher costs or compatibility issues down the line. Developers need to carefully consider the implications of vendor lock-in when selecting technologies for their tech stack to ensure long-term adaptability and mitigate risks associated with being locked into a specific vendor’s offerings.

Performance Overhead

Introducing multiple layers of technology in a tech stack can lead to performance overhead, potentially affecting the speed and responsiveness of an application. Each additional layer, whether it be a framework, library, or tool, introduces complexity and may require additional processing resources. This can result in increased latency, slower response times, and overall decreased performance efficiency. Developers need to carefully consider the trade-offs between functionality and performance when selecting components for a tech stack to mitigate the risk of performance overhead impacting the user experience negatively.

spotify software engineer

Exploring the Role of a Spotify Software Engineer in Music Technology

Article: Spotify Software Engineer

The Role of a Spotify Software Engineer

Software engineers play a crucial role in the success of companies like Spotify, one of the leading music streaming platforms in the world. A Spotify software engineer is responsible for developing and maintaining the software systems that power the platform, ensuring a seamless and enjoyable user experience for millions of music lovers.

Responsibilities of a Spotify Software Engineer

As a software engineer at Spotify, one must possess strong technical skills and a deep understanding of software development principles. Some key responsibilities include:

  • Designing and implementing scalable and reliable software solutions.
  • Collaborating with cross-functional teams to deliver new features and enhancements.
  • Optimizing performance and efficiency of existing systems.
  • Ensuring code quality through testing and code reviews.
  • Staying updated on industry trends and best practices in software engineering.

Skills Required

To excel as a Spotify software engineer, individuals need to have a strong foundation in computer science and programming. Some essential skills include:

  • Proficiency in programming languages like Java, Python, or JavaScript.
  • Experience with web development frameworks such as React or Angular.
  • Knowledge of cloud computing platforms like AWS or Google Cloud.
  • Problem-solving abilities and attention to detail.
  • Excellent communication and teamwork skills.

Career Growth Opportunities

A career as a Spotify software engineer offers numerous opportunities for growth and advancement. Engineers have the chance to work on cutting-edge technologies, collaborate with talented colleagues from diverse backgrounds, and make a real impact on the music streaming industry.

If you are passionate about music, technology, and innovation, pursuing a career as a Spotify software engineer could be an exciting and rewarding path to follow.

 

9 Essential Tips to Succeed as a Spotify Software Engineer

  1. Develop strong programming skills in languages like Java, Python, or C++.
  2. Gain experience with software development tools and technologies commonly used at Spotify.
  3. Understand algorithms and data structures to solve complex problems efficiently.
  4. Collaborate effectively with team members on projects and code reviews.
  5. Stay updated on industry trends and best practices in software engineering.
  6. Practice good software design principles for scalable and maintainable code.
  7. Learn about backend systems, databases, and cloud computing for a well-rounded skill set.
  8. Communicate clearly and professionally with stakeholders to gather requirements and provide updates.
  9. Continuously improve your skills through learning opportunities like online courses or workshops.

Develop strong programming skills in languages like Java, Python, or C++.

To excel as a Spotify software engineer, it is essential to develop strong programming skills in languages like Java, Python, or C++. These languages are widely used in software development and are fundamental for building robust and efficient systems. By mastering these programming languages, engineers can effectively design and implement scalable solutions, collaborate with cross-functional teams, and stay at the forefront of innovation in the music streaming industry.

Gain experience with software development tools and technologies commonly used at Spotify.

To excel as a Spotify software engineer, it is essential to gain experience with software development tools and technologies commonly used at the company. Familiarity with tools such as Java, Python, React, and cloud computing platforms like AWS or Google Cloud can greatly enhance your capabilities as a software engineer at Spotify. By mastering these tools and technologies, you can effectively contribute to the development of innovative features and solutions that drive the success of the music streaming platform.

Understand algorithms and data structures to solve complex problems efficiently.

To excel as a Spotify software engineer, it is crucial to understand algorithms and data structures to solve complex problems efficiently. By having a strong grasp of these fundamental concepts, engineers can design optimized solutions that enhance the performance and scalability of Spotify’s software systems. Proficiency in algorithms and data structures enables engineers to tackle challenges effectively, streamline processes, and deliver innovative features that elevate the user experience on the platform.

Collaborate effectively with team members on projects and code reviews.

Collaborating effectively with team members on projects and code reviews is essential for a Spotify software engineer to ensure the development of high-quality software solutions. By working closely with colleagues, sharing ideas, providing constructive feedback, and reviewing each other’s code, engineers can improve the overall quality of the codebase and enhance the efficiency of the development process. Effective collaboration fosters creativity, encourages knowledge sharing, and promotes a culture of continuous learning and improvement within the team.

Staying updated on industry trends and best practices in software engineering is crucial for Spotify software engineers to remain competitive and deliver top-notch solutions. By keeping abreast of the latest developments, such as emerging technologies and innovative methodologies, engineers can enhance their skills, stay relevant in a rapidly evolving field, and contribute to the continuous improvement of Spotify’s software systems. This proactive approach not only fosters professional growth but also ensures that engineers are well-equipped to tackle challenges effectively and deliver high-quality results for the platform’s users.

Practice good software design principles for scalable and maintainable code.

When working as a Spotify software engineer, it is crucial to practice good software design principles to ensure the development of scalable and maintainable code. By adhering to these principles, engineers can create code that can easily accommodate growth and changes over time. Scalable and maintainable code not only improves the performance of the platform but also enhances collaboration among team members and facilitates future updates and enhancements. Emphasizing sound software design principles is key to delivering high-quality solutions that meet the evolving needs of Spotify’s users.

Learn about backend systems, databases, and cloud computing for a well-rounded skill set.

To excel as a Spotify software engineer, it is essential to broaden your knowledge beyond just coding. By delving into backend systems, databases, and cloud computing, you can develop a well-rounded skill set that is crucial for designing and maintaining robust software solutions. Understanding how these components interact and impact each other will not only enhance your technical proficiency but also enable you to contribute effectively to the development and optimization of Spotify’s platform.

Communicate clearly and professionally with stakeholders to gather requirements and provide updates.

Effective communication is a vital aspect of being a successful Spotify software engineer. It is crucial to communicate clearly and professionally with stakeholders to gather requirements accurately and provide regular updates on project progress. By maintaining open lines of communication, software engineers can ensure that they are meeting stakeholders’ expectations, addressing any concerns promptly, and fostering a collaborative working environment that leads to successful project outcomes. Clear and transparent communication helps build trust and confidence among team members and stakeholders, ultimately contributing to the overall success of the software development process.

Continuously improve your skills through learning opportunities like online courses or workshops.

To excel as a Spotify software engineer, it is essential to continuously improve your skills through learning opportunities such as online courses or workshops. By staying updated on the latest technologies and industry trends, you can enhance your expertise and stay competitive in the fast-paced world of software development. Embracing lifelong learning not only expands your knowledge but also equips you with the tools needed to tackle new challenges and contribute meaningfully to the innovative work at Spotify.