One challenge engineering teams often face is dealing with work that doesn’t revolve around developing new features but that still requires the team’s attention and time. The Content Engineering Team here at SoundCloud is no exception, so we iterated on a process to deal with unplanned and support tasks to end up with fewer interruptions and more time to spend on implementing planned features.
Backstage Blog RSS
March 26th, 2018 Project Management Engineering Management Managing Unplanned and Support Tasks By Kristof Adriaenssens
January 26th, 2018 iOS Testing Mobile Automatic Stubbing of Network Requests to Deflakify Automation Testing By Donal O'Brien
Apple introduced automated UI testing in Xcode 7. This was a great addition for developers because this native support promised, among other things, an improvement in the flakiness notoriously associated with automation tests. As many of us developers have experienced, tests can sometimes fail even when there has been no modification to the test or underlying feature code.
Flakiness can often come from external factors. One such source of flakiness is live data, e.g. data loaded from a web service API. Data from the web service often drives the state of the UI. A test might assume the UI is in a certain state, e.g. the like button shows as “liked” or that a playlist has 10 songs. But when the data from the web service changes, the test fails.
Such occurrences are relatively common, and there are many other scenarios, such as network connectivity issues, in which these false negatives can occur. In these situations, the functionality of the app is not broken; it’s just that our assumptions about the data are no longer valid. What’s more, debugging the cause of these failures can be a time-consuming affair.
In this blog post, I’ll discuss how we at SoundCloud implemented a simple system for automatically recording and replaying the network responses that occur during the course of an Xcode UI automation test in order to remove any flakiness that may be introduced from the existence of live data coming from a web service.
January 24th, 2018 Search Data Science Machine Learning Analytics Data PageRank in Spark By Josh Devins
SoundCloud consists of hundreds of millions of tracks, people, albums, and playlists, and navigating this vast collection of music and personalities poses a large challenge, particularly with so many covers, remixes, and original works all in one place.
For search on SoundCloud, one of the ways we approach this problem is by using our own version of the PageRank algorithm, which we affectionately refer to as DiscoRank (Get it? Disco as in discovery and Saturday Night Fever?!).
The job of PageRank is to help rank search results from a query like finding all Go+ tracks called “royals.” At first glance, this task might seem trivial. The first result is, and should indeed be, Lorde’s original song, “Royals.” However, there are plenty of covers and remixes of this track, which leaves us with questions like: Which ones should we show at the top and in which order? What about other tracks in our catalog that have the word “royals” in them? Where should they be in our search results list?
January 18th, 2018 Learning Diversity Recruiting Insights from SoundCloud’s DeveloperBridge trainee programme By Tiffany Conroy
Back in 2016, the SoundCloud People Team collaborated with engineering management in an effort to bring more junior engineers into the company. The result was DeveloperBridge, a paid junior engineering program that ran for 12 months and was based out of our Berlin headquarters.
Trainees gained hands-on experience under the guidance of our engineers, and by working on a variety of assignments in selected teams, they became familiar with different types of engineering tasks and technologies. This, in turn, helped them develop a feel for the areas they enjoyed working in the most. The overall aim of the program was to help the participants develop and then hire them afterward into full-time roles at SoundCloud, while improving diversity in Engineering at the same time.
Now with their traineeship year coming to a close, we’ve asked the participants to reflect on the experience, what they learned, how they feel about their accomplishments, and where they see themselves headed next in their careers as software engineers.