Developers could learn a lot from Charles Lloyd. As legend has it, the jazz saxophonist was known to rotate the musicians in his band during concerts in the 1960s. When the group returned to the stage for an encore, the drummer would would sit down at the piano, Lloyd sat behind the drum kit, and pianist Keith Jarrett would pick up the saxophone that made his bandleader famous. The stunt not only wowed crowds, but it made each individual player that much more versatile--and the group as a whole much stronger.
It's a fitting, albeit completely coincidental, analogy for the professional life of Sean Kenny. Nearly a year into his stint at Spotify, the developer recently shifted gears from web development to working on the company's Android app. It may sound like a dramatic change--and from a technical standpoint, it was--but it was the right move. Kenny's never been happier.
"It's very rare that you'd hear someone say, 'I was toiling away on some project that I was totally disinterested in, and then I had this amazing breakthrough,'" says Charlie Hellman, director of product development at Spotify. Instead, he says, people tend to thrive when they're working on something they're interested in, which is why the music streaming startup encourages its employees to stake out new roles within the company.
"We really felt like the more people at Spotify that could feel like they're working at their dream job, the more people we would have doing amazing work," says Hellman.
This professional shape-shifting isn't just an old-fashioned promotion. In most cases, Hellman says, the change is lateral and isn't accompanied by an increase in pay. It may improve long-term prospects for the employees that choose this route, but in the short-term, it's more about keeping the ladder steady than it is about climbing it.
While the practice of letting employees switch hats like this isn't widespread, it's becoming a perk for developers--and thus a competitive advantage for the companies willing to experiment with the model. Stack Exchange and Viacom, two very different companies in size and ambition, have been eyeing Spotify's strategy and encouraging their developers to try it out.
At Spotify, the process is pretty informal. An employee catches wind of a new project or simply gets tired of what they've been doing for the last year or two. They ask their manager about switching and if there's room on the new team--or "squad" as Spotify calls them--the gears will start moving and the shift will be underway as soon as it's logistically feasible.
This is roughly how things went down after Kenny got his first taste of Android development. Originally hired as a full-stack web developer, Kenny was accustomed to building web apps with PHP, querying MySQL databases and crafting user interfaces with JavaScript and HTML. These were the technologies with which Kenny had grown the most proficient, and he was perfectly happy building for the web in his new gig.
Then Spotify started ramping up to launch in Brazil. As you might imagine, milestones like this have a way of impacting the work performed in various roles across a still-growing startup like Spotify. In this case, the service's prelaunch invite system required some mobile integrations that put Kenny much closer to the Android ecosystem than he'd ever been before. Despite not having coded in Java since college, he suddenly found himself dabbling in Android development.
"Through the course of that project I helped contribute to how some of the little finer details would work on the Android side," says Kenny. "I found that it was really quite enjoyable. I liked the development practices that were happening on the Android team."
His curiosity piqued, Kenny asked his manager about the possibility of switching--to keep things from getting awkward, Spotify's squad system is structured such that one's manager will never be the person leading their project squad. Kenny was in luck: The company was looking to build out its internal mobile development resources, a crucial area of expertise for a company whose freemium subscription business model leans so heavily on mobile to convince users to pay up.
Although he had dealt with Android on the Brazil launch project, he was by no means a full-fledged Java developer. Indeed, the last time he had dealt with Java at length was when he was still in school. Like most technologies, the language had evolved over time.
"I considered myself a noob when I started using it again," Kenny says. "So it was a pretty steep learning curve."
When it comes time for somebody to switch gears at Spotify--a process Hellman estimates is undertaken by "a couple of people per month"--there isn't much in the way of formal training. Occasionally companies like Big Nerd Ranch will run intensive coding bootcamps onsite at one of the company's offices. But in general, these transitions are lubricated by an internal culture of mentorship that seems to arise naturally when a company is stocked with enough well-rounded developers.
A big part of the education process comes in the form of code reviews. "When I'm contributing code to the Android platform, that doesn't just go in willy-nilly," Kenny says.
As is common practice at technology companies these days, Spotify ensures each every line of code that's pushed to production is seen by more than one pair of eyeballs. This policy is especially useful for developers getting their hands dirty with new technologies for the first time.
Some of the internal education is even more direct and hands-on.
As Kenny started shifting his attention to Android, he struck up a working relationship with Brian Christensen, one of the company's most experienced Android programmers.
"I spent a lot of time picking Brian's brain and coming to him for advice on a design pattern to use or maybe a library that's already built to do such-and-such a task," says Kenny. "Being able to have access to somebody who's more or less a guru is a big perk."
Christiansen himself is no stranger to switching gears. When he joined the company about a year and a half ago, he was focused on building social features for Spotify's Android client. This includes the app's support for Twitter-style following of other users, as well as experimenting with other social features that might translate well to a phone or tablet-based listening experience.
The experimental nature of the social squad was fun and all, but Christensen had a nagging desire to work on something more crucial to the company's future. Then he saw that the ads team was hiring.
"It sounded really interesting," says Christensen. "They're solving some pretty cool technical challenges over here so I was excited to do it."
In his new role, Christensen would focus on the various ways in which advertisements can be integrated into a mobile music service. As any non-paying Spotify user knows, the primary method is through radio-style audio ads. It's a decidedly old-school way of doing things and the company knows it, so perfecting its audio ad functionality and experimenting with new formats is a growing priority.
"Ads can come in at any point in the experience so it gives me a chance to work across features that go deeper into the app," says Christensen. "I'm not just working on the user interface. I'm involved in the timing of playing an audio ad, for example. And it relies on deeper components within the app. The core layers of the app."
Since he's dealing with audio playback, Christensen gets to muck around with a feature that is at the very heart of what Spotify does: the player. As a Spotify user you'd never know it, but there's a fair bit of complex, proprietary technology that goes into something as simple as the play button.
"We use the same player internally across iOS and Android and desktop," Christensen explains. "It's written in C++ and there's a layer that relays messages to and from it. There's work that needs to be done in that C++ layer to decide which type of ad to play and to manage playback with what they were already listening to. Simply by being part of the playback stream, it exposes me to a couple of additional deeper layers of the app with the core shared C++ library and the layer that passes messages through it."
It's clear from his geeky enthusiasm that Christensen genuinely relishes in cracking open newfound technical challenges like this. But it's not the only benefit of switching squads. In this case, it lets Christensen work on problems that deal directly with one of the biggest and most existential challenges of any company: making money.
"A lot of times people are interested in going to high-profile projects where they can have a big impact on the company," says Hellman, citing the ads team as the most common example. It's one thing to include the words "Android developer" on your LinkedIn profile. It's quite another to tell prospective employers that you help the leader in streaming music figure out how to make enough money to stay in business in the long run.
For Christensen, Kenny, and other developers who have switched roles, the practice is as much about furthering their own careers as it is about staving off the inevitable boredom of work.
Meanwhile, the company reaps a benefit or two of its own. In talking to several developers at Spotify, it becomes clear that the freedom to essentially get a new job without leaving the company is viewed as a huge perk. This not only works as a recruiting tool, but would help just about any company hang onto the talent it manages to bring on board.
"Tenures at technology companies tend to be relatively short," says Hellman. "I think the reality is that people who are working in technology and software want to keep learning. They want to keep progressing. They're curious people by nature."
It's a bit early to measure the success of the practice at retaining talent, but Hellman seems emboldened by the number of requests he's seen to date. "I would be surprised if a lot of companies at our size wouldn't move to this model," he says.
It's not just scrappy startups that are letting employees jump around. Viacom has employed a similar practice for years, often encouraging employees to switch roles as a way of "rebooting" their career. Unlike Spotify, Viacom does this to enable upward advancement more than anything else. But the trajectory up the ladder there is anything but traditional.
To keep its talent well-rounded and loyal, Viacom encourages leaps across departments, says senior vice president of engineering John Pavley. It's not uncommon, for instance, for engineers to shift over to the business side and become product managers.
"This transition allows Viacom to bring 'engineering thinking' to business problems," says Pavley. "Engineers who become product managers think about solving business problem by building tools, processing data, and creating repeatable processes."
The company is also working to infuse technical know-how across departments. Later this month, several VH1 producers are going to be taking an intensive course in JavaScript programming. Even if those producers don't wind up writing code day to day, exposure to the principles of object-oriented programming and learning how web apps work at their core can go a long way.
For Viacom, teaching creatives to code is also about cross-pollenating technical know-how across previously impenetrable silos. "We find that the thinking from one domain applied to the problems of another domain often results in unexpected connections and insights," Pavley says.
Like the cross-department job leaps, the coding bootcamps have a dual purpose: Keeping employees well-rounded helps the company retain them by keeping them happy. It also makes the ladder easier to climb.
"I love those stories about executives who started in the mail room along their way up the ladder," says Pavley. "Today the mail room is full of servers and our future leaders are still starting out there."
At Stack Exchange, the higher-ups have begun to notice the value of having a fresh pair of eyes on a problem.
Between the company's popular Q&A forums for programmers and its dev job listings site, Stack Exchange has a pretty good sense of what developers and employers are looking for. And demand for this type of professional flexibility is on the rise.
"We definitely think that Spotify might be onto something here," says Will Cole, a product manager at Stack Exchange.
At Stack, they will accommodate developers who request to switch to new product teams, but it is by no means a formal policy. Cole says the company is "inching toward" adopting the practice more officially, given the high praise it tends to get from developers who have experienced it.
It would be a fairly natural extension of Stack's current approach, which is to keep its developers as well-rounded and versatile as possible. Coders are actively encouraged to dabble in new technologies on a regular basis, even if they don't wind up using them on the job.
If, for example, a technology like Node.js suddenly becomes very fashionable, Stack will encourage developers to use their time in the office to play with it, learn how it works, and actually use it to solve real-world technical problems. Curious about data science? Go ahead, take some time out of your day to brush up on it. iOS development? Same deal.
"We have problems that arise that need solutions with things that are outside of our normal tech stack," explains Cole. "So if we start doing some machine learning, we're very happy that we have a policy in place that we gave people time on their work time to dig into the machine learning Coursera course and play with our data and try to solve problems. Now all of the sudden we want to do stuff in production and we have a few people that are already capable of doing it."
For Stack, this means not having to go out and hire new people to keep up with ever-evolving trends in programming. It also helps with recruiting.
"You're in a competitive market where developers are a premium," says Cole. "Developers are hard to get. What are you actually doing to make your development environment stand out? How are you winning developers over?"
For developers, much like the more formalized role-switching at other companies, Stack's approach keeps things interesting. As an added perk, the company pays its employees based on their broader skill set, even if they're not utilizing their most lucrative skills at the moment. So if you're writing CSS stylesheets but your iOS development chops are really strong, your paycheck will reflect that.
"It's also really important for the developers and their long-term career path," says Cole. "I don't think anyone wants to be locked in as just a .Net person."
Across the board, the developers we talked to who had the chance to leapfrog to a new role reported being more satisfied, some of them even turning down recruiters from big-name tech companies.
"I actually take the train two hours each way just to get to work because I love working here," says Kenny. For him, the freedom to switch jobs not only keeps him happy day to day but also makes him more employable. "It's better to be diverse and flexible. It makes you as a person overall more resilient to any change in the industry or at Spotify or whatever. It's preparing me to be a better software engineer as a whole."
The freedom that allowed Kenny to give himself a new, more enjoyable job isn't necessarily always easily implemented within a given company. For starters, the flexibility and free flow of knowledge require a certain type of culture in order to germinate. It also has a lot to do with the types of people the company is hiring in the first place. Anyone can take a Coursera course, but it takes an exceptional developer to pick up brand-new and unfamiliar tools and start building with them.
"It's almost like a good musician," Kenny says. "They could probably pick up and play another instrument to a pretty good degree just because they know music. They know how the notes work. They know scales."