Things I Learned While Working at SoundCloud
My almost 5 years of employment as a software engineer at SoundCloud came to an abrupt end last summer. Enough time has passed since my last working day so that I can now reflect on my experience and recall the most important takeaways.
-
Working in a “fast moving environment” taught me how to efficiently work together with people of a wide variety personalities, adapt to different team structures and project management methodologies.
-
Fast moving environment has downsides too. By the time I established a context with my managers either they moved on or I switched teams and had to start over with someone else.
-
Being surrounded smart people - especially ones smarter than me - was a great experience. Never lacking inspiration and whenever I got stuck with something there was an expert happy to help out.
-
I appreciated the postmortem culture, the culture of learning from our own mistakes and not blaming individuals, which was adopted by the entire engineering team.
-
I learned how there are different ways of providing feedback some are better, some are worse, especially when you disagree. Used these learnings to improve my approach to giving and receiving criticism a lot.
-
I had no idea how complicated and in many ways problematic the Music Industry is before joining SoundCloud. There I learned a lot, including many things I never wished to know.
-
SoundCloud was the first place where I worked in a microservice architecture. Learned many lessons on the good and bad ways of implementing this pattern while building a couple of services from scratch and contributing to a lot more.
-
I learned about the open source model or collective code ownership of shared libraries or services and how lack of clarity and resources can defeat this otherwise great idea.
-
I got completely sold on continuous delivery and continuous integration as the True Way of shipping software in an agile environment.
-
As SoundCloud moved towards self-service end-to-end full-stack teams I wore the DevOps hat too. The upside was shipping things even faster, the downside long hours of firefighting at weekend nights (with compensation to be fair).
-
I also learned the hard way how low quality tooling, slow and flaky builds and convoluted continuous integration setups cause extreme amount of developer frustration, anger and loss of productivity.
-
I learned the importance of writing high quality commit comments, tried to do my best on improving code documentation too.
-
I am glad I had the opportunity to write production code in Scala, Java, Ruby, JavaScript, TypeScript, Go, Clojure, SQL, Bash, POSIX shell and maybe others I can no longer recall.
-
I learned to use singular they as a personal pronoun and not to use “guys” to address a group of people. Had many other lessons about the importance of diversity and inclusion.
-
No other previous job taught me lessons about dealing with my own unconscious bias.
-
I also learned the importance of avoiding leading questions while interviewing candidates.
-
Among many other communication tricks I learned how to email a large group of people using bcc to prevent someone accidentally sending a reply to the entire company.
-
Black belt masters mentored me in the skill of contributing to any topic on any communication channel using only GIFs and emojis.
-
I learned who Martin Fowler is and how no serious technical blog post can exist without citing him at least once.
-
I researched the Probability of Video Call Working in Both Directions Theory during my tenure and established that it is a constant 6.25%.