{"id":1214,"date":"2014-11-26T00:45:52","date_gmt":"2014-11-26T05:45:52","guid":{"rendered":"https:\/\/blog.splice.com\/?p=1214"},"modified":"2025-07-21T10:51:18","modified_gmt":"2025-07-21T14:51:18","slug":"how-go-shaped-splice-engineering-culture","status":"publish","type":"post","link":"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/","title":{"rendered":"How Go Helped Shape Splice&#8217;s engineering culture"},"content":{"rendered":"<p>This article was written for a <a title=\"Go's 5th anniversary - How Golang affected Splice's engineering culture.\" href=\"http:\/\/blog.gopheracademy.com\/birthday-bash-2014\/go-shaped-splice-engineering-culture\/\" target=\"_blank\" rel=\"noopener\">series for Go&#8217;s 5th birthday<\/a>.<\/p>\n<p><a title=\"Go\" href=\"http:\/\/golang.org\/\" target=\"_blank\" rel=\"noopener\">Go<\/a> is a trendy programming language, but let\u2019s be honest: the Go language doesn\u2019t have anything new that wasn\u2019t first implemented somewhere else. As a matter of fact, Go is a pretty boring programming language. Why would anyone pay attention to a typed compiled language that doesn\u2019t have generics, doesn\u2019t let you do metaprogramming, doesn\u2019t support inheritance and, as some said, feels like we are taken back to the 70s? Why not just write C?<\/p>\n<p>5 years after its release, an increasingly large number of companies of all sizes are joining the Go community. As Co-Founder and CTO of <a href=\"https:\/\/splice.com\">Splice<\/a>, a cloud solution for music creators built from the ground up with Go at its core,I\u2019d like to take a step back and explain how and why Go has made a difference for us.<\/p>\n<p>I won\u2019t cover the obvious Go advantages:<\/p>\n<ul>\n<li>concurrency<\/li>\n<li>easy deployment<\/li>\n<li>performance<\/li>\n<\/ul>\n<p>A lot of very smart people have already covered these advantages in depth. While Go does these things very well (and keeps on improving), other languages provide similar features. What I\u2019d like to reflect on are the consequences that using Go has had on our code, team and culture. More specifically 5<br \/>\nGo side effects that affect Splice engineering culture the most:<\/p>\n<ul>\n<li>Code standardization<\/li>\n<li>Code culture<\/li>\n<li>Less is more \/ simplicity<\/li>\n<li>Maintainability \/ explicitness<\/li>\n<li>Composition \/ modularity<\/li>\n<\/ul>\n<h3 id=\"toc_0\">Code standardization.<\/h3>\n<p>I don\u2019t think I\u2019ve ever worked in a company where engineers weren\u2019t having <a href=\"http:\/\/lightgray.bikeshed.com\/\">long discussions about code styles and conventions<\/a>. As companies grow, they usually explicitly or implicitly define their styleguides (see <a href=\"https:\/\/github.com\/styleguide\/\">GitHub\u2019s<\/a>, and <a href=\"http:\/\/lars-lab.jpl.nasa.gov\/JPL_Coding_Standard_C.pdf\">NASA\/JPL\u2019s<\/a>). Getting there takes energy and expertise, not to mention long meetings, exhausting arguments and defending the guidelines each time they are challenged by new developers. The Go language is very opinionated when it comes to not spending time arguing about these \u201cdetails\u201d. The philosophy of simplicity is so strong that the code conventions feel like part of the language design.<\/p>\n<blockquote><p>Formatting issues are the most contentious but the least consequential. People can adapt to different formatting styles but it\u2019s better if they don\u2019t have to, and less time is devoted to the topic if everyone adheres to the same style. The problem is how to approach this Utopia without a long prescriptive style guide.\u201d &#8211; <a href=\"https:\/\/golang.org\/doc\/effective_go.html#formatting\">Effective Go<\/a><\/p><\/blockquote>\n<p>Go ships with a few tools to <strong>make sure your team focuses on \u201creal\u201d issues<\/strong> and doesn\u2019t waste time arguing about indentation characters or naming. <a href=\"https:\/\/golang.org\/cmd\/gofmt\/\">Gofmt<\/a> (pronounced \u201cgo feumt\u201d) uses the built in AST parser to rewrite your code. By default it follows the formatting conventions defined by the Go team, but can also be adapted to your own rules. <a href=\"https:\/\/splice.com\/blog\/going-extra-mile-golint-go-vet\/\">Go vet and golint<\/a> are two other tools provided by Go to help you stick to conventions and find potential errors. <em>Golint<\/em> is a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Lint_(software\">linter<\/a>) which highlights style issues while <em>go vet<\/em> focuses on code correctness. These tools are defined and used by the language creators and at Google. When I run these tools (automatically when saving or in a git pre-commit hook), I feel like I\u2019m getting a quick code review from Rob \u201cbot\u201d Pike before submitting my code to someone else for a more in-depth review. It feels good to know that I am following conventions that are defined and enforced by people with so much experience and practice.<br \/>\nAt Splice we\u2019ve adapted to these idioms where possible, and refer to <a href=\"https:\/\/golang.org\/doc\/effective_go.html\">Effective Go<\/a> when we aren\u2019t quite sure. Our developers spend much less time talking about \u201chow\u201d to do something and more time discussing \u201cwhy\u201d we are doing it. We spend time talking about logic, consequences and interfaces. In other words, most engineering discussions at Splice are focused on strategies more than tactics.<\/p>\n<h3 id=\"toc_1\">Code culture<\/h3>\n<p>When you\u2019re building a startup, you often hear that you don\u2019t have time to do things \u201cright\u201d. You need to iterate quickly. You hear Zuckerberg\u2019s infamous <a href=\"http:\/\/www.aghanomics.com\/wp-content\/uploads\/2013\/02\/ZuckPic1.png\">\u201cmove fast, break things\u201d<\/a> quote a dozen time a day and very often quality is not a primary concern. The other quote you hear often is Donald Knuth\u2019s <a href=\"http:\/\/c2.com\/cgi\/wiki?PrematureOptimization\">\u201cpremature optimization is the root of all evil\u201d<\/a> quote (usually totally missing the context but that\u2019s besides the point).<br \/>\nIt\u2019s true that a good part of what we do when working on a startup is to learn about the problem, not about the implementation. We make assumptions and validate them. But does it really mean that you have to sacrifice quality, and what is quality?<br \/>\nMost startups take the normal prototypal exploration approach, often using high level technology with shared\/community components. Prototypes are great but they are by definition meant to be thrown away and implemented properly. The challenge is that it\u2019s way too tempting to build on top of prototypes, after all, \u201cpremature optimization is the root of all evil\u201d right? This approach results in startups building their products on top of code that was never meant to be used as a foundation. They keep doing that for a little while and one of two scenarios play out: the startup is successful or, in the statistically more likely scenario, the startup is a flop, which is why the prototype approach makes so much sense.<\/p>\n<p>I strongly believe that <strong>programmers are misguided when they assume that speed of execution and quality are on two opposite ends of a spectrum<\/strong>. This misconception is probably due to our field of practice being too young and lacking hindsight. Another part of the problem might be the lack of attention\/education put into software architecture design. Too many \u201cengineers\u201d are looking for a collection of libraries they can put together to achieve the result they are after. They are focused on the \u201chow\u201d (short sighted quick fix), not the \u201cwhy\u201d (deeper understanding of the consequences), and end up very often disconnected from the business goals because they are looking for a \u201cquick\u201d solution. A more experienced engineer will quickly evaluate the consequences each potential solution will have on the system as a whole. It doesn\u2019t have to be costly to architect code so the effect of future inevitable change of directions will be isolated. It certainly takes a longer for a novice than an expert to design such systems, but an expert can design code that will be able to handle changes of requirements without collapsing or requiring a full rewrite.<br \/>\nBetween the three co-creators of Go: Ken Thompson (unix, B (the language right before C), UTF-8, regexp, plan 9), Robert Griesemer (v8 JS engine, Java\u2019s HotSpot VM) and Rob Pike (UTF-8, plan 9), encompasses a significant amount of of design expertise. They spent years boiling the language down to the simplest, most pragmatic form. They argued back and forth until they were all in agreement which resulted in a small language with a set of very distinct values. Values that were chosen because they help developers focus on one thing: producing value!<\/p>\n<h3 id=\"toc_2\">Less is more<\/h3>\n<p>Go\u2019s take on simplicity is by far what had <a href=\"https:\/\/splice.com\/blog\/golang-improved-simplicity-reduced-maintenance\/\">the largest effect on Splice<\/a>. In our code reviews, if someone doesn\u2019t understand the intent of the code right away, we know it\u2019s a red flag. Though it is not catalogued as such in <a href=\"http:\/\/martinfowler.com\/books\/refactoring.html\">Martin Fowler\u2019s refactoring book<\/a>, at Splice we have agreed that clever is a code smell. The funny thing is that it\u2019s often way harder to write simple code than complex code.<\/p>\n<blockquote><p>Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away. &#8211; Antoine de Saint-Exup\u00e9ry<\/p><\/blockquote>\n<p>It\u2019s true that sometimes taking this minimalistic approach does result in writing a few more lines of code, and sometimes even that dreaded enemy: duplication.<\/p>\n<blockquote><p>Duplication is far cheaper than the wrong abstraction. &#8211; <a href=\"http:\/\/www.confreaks.com\/videos\/3358-railsconf-all-the-little-things\">Sandi\u00a0Metz<\/a><\/p><\/blockquote>\n<h3 id=\"toc_3\">Maintainability<\/h3>\n<p>At Splice we are proud to be multilingual company with code written mainly in Go, JS, Ruby, Objective-C and C#. For the past 10 years of so, I spent most of my programming time writing code in Ruby. Ruby, very much like Python is a great language that I enjoy using. Something I didn\u2019t expect and didn\u2019t realize until we\u2019ve had shipped Go code in production for a while is that we spend far less time maintaining\/fixing production code than what I was used to in Ruby. I often joke that <strong>our Go code requires 82% less maintenance than the same code in Ruby<\/strong>. There are some obvious reasons for that. Go is a simpler, typed language that is compiled. Go\u2019s amazingly fast compiler catches a lot of small typos we often make when using dynamic languages. These typos are usually found when writing tests or later on at runtime. But I believe that most of maintenance reduction is due to the fact that our Go code is just simpler, less abstracted than code in other languages. The surface-area being smaller, the opportunity for bugs to creep in is smaller. This might be the reason why most critical code out there is still written in C.<br \/>\nAs you know, debugging an issue usually means spending 90% of the time looking for the root cause, 5% thinking about a fix, 5% fixing the bug. <strong>With explicit and simple code, finding the root cause is easier and therefore maintenance is reduced drastically<\/strong>. A \u201cboring\u201d \/ straightforward code base means fewer surprises and therefore fewer bugs.<\/p>\n<h3 id=\"toc_4\">Composition<\/h3>\n<p>Composition isn\u2019t a new concept for any of us at Splice, however Go reshaped the way we looked at it. Without inheritance, Go\u2019s approach to Object Oriented programming is quite different than what we are used to. You can still define methods on types (somewhat similar to instance methods) but your \u201cclasses\u201d don\u2019t inherit from each other (<a href=\"http:\/\/www.golangbootcamp.com\/book\/types#sec-struct_composition\">you can embed types in each other though<\/a>). Instead, Go relies on <a href=\"https:\/\/talks.golang.org\/2012\/splash.article#TOC_15.\">composition via interfaces<\/a>. Interfaces don\u2019t include implementations, they are just a way to define behavioral contract. Any \u201cinstance\u201d\/type can implement one or multiple interfaces and functions and methods can require their input or output to implement a specific interface. These limitations have had an interesting effect on our code: we spend a lot more time talking about how the code interacts, what interfaces we need and why. For instance, we have a storage interface and 2 storage types that implement this interface: AWS S3 and file storage. We can very easily switch between file and S3 storage. If we need to, we could add a Google Cloud Storage type implementing the same interface, and switching storage providers becomes trivial. Of course, this isn\u2019t a new concept and you can and should take this approach in whatever language you use. But Go is pushing developers to think about making the right choices early on and makes bad design decisions harder than usual. <strong>At the end of the day our code is very modular and is composed to multiple simple pieces coming together nicely<\/strong>.<\/p>\n<p>Go\u2019s power is not in small implementation details or features, but in its opinionated and holistic approach to software design. The concrete application of Go\u2019s philosophy directly resulted in better engineers as well as simpler, more flexible and more maintainable code.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article was written for a series for Go&#8217;s 5th birthday. Go is a trendy programming language, but let\u2019s be honest: the Go language doesn\u2019t&#8230;<\/p>\n","protected":false},"author":8,"featured_media":1215,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[61],"tags":[115],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How Go helped shape Splice engineering culture<\/title>\n<meta name=\"description\" content=\"Learn more about how Go&#039;s philosophy and ecosystem affected the engineering culture at Splice\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How Go helped shape Splice engineering culture\" \/>\n<meta property=\"og:description\" content=\"Learn more about how Go&#039;s philosophy and ecosystem affected the engineering culture at Splice\" \/>\n<meta property=\"og:url\" content=\"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog | Splice\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Splice\" \/>\n<meta property=\"article:published_time\" content=\"2014-11-26T05:45:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-21T14:51:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/splice.com\/blog\/wp-content\/uploads\/2014\/11\/goraster.png\" \/>\n\t<meta property=\"og:image:width\" content=\"744\" \/>\n\t<meta property=\"og:image:height\" content=\"501\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Matt Aimonetti\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mattetti\" \/>\n<meta name=\"twitter:site\" content=\"@splice\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matt Aimonetti\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/\"},\"author\":{\"name\":\"Matt Aimonetti\",\"@id\":\"https:\/\/splice.com\/blog\/#\/schema\/person\/05b4753d7bd02e0954948c8c21fccf30\"},\"headline\":\"How Go Helped Shape Splice&#8217;s engineering culture\",\"datePublished\":\"2014-11-26T05:45:52+00:00\",\"dateModified\":\"2025-07-21T14:51:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/\"},\"wordCount\":1888,\"publisher\":{\"@id\":\"https:\/\/splice.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/splice.com\/blog\/wp-content\/uploads\/2014\/11\/goraster.png\",\"keywords\":[\"engineering\"],\"articleSection\":[\"Engineering\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/\",\"url\":\"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/\",\"name\":\"How Go helped shape Splice engineering culture\",\"isPartOf\":{\"@id\":\"https:\/\/splice.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/splice.com\/blog\/wp-content\/uploads\/2014\/11\/goraster.png\",\"datePublished\":\"2014-11-26T05:45:52+00:00\",\"dateModified\":\"2025-07-21T14:51:18+00:00\",\"description\":\"Learn more about how Go's philosophy and ecosystem affected the engineering culture at Splice\",\"breadcrumb\":{\"@id\":\"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/#primaryimage\",\"url\":\"https:\/\/splice.com\/blog\/wp-content\/uploads\/2014\/11\/goraster.png\",\"contentUrl\":\"https:\/\/splice.com\/blog\/wp-content\/uploads\/2014\/11\/goraster.png\",\"width\":744,\"height\":501,\"caption\":\"Background by Aiden available at http:\/\/startupitis.blogspot.com\/2012\/05\/golang-its-amazing.html\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/splice.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How Go Helped Shape Splice&#8217;s engineering culture\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/splice.com\/blog\/#website\",\"url\":\"https:\/\/splice.com\/blog\/\",\"name\":\"Splice Blog\",\"description\":\"An inside look at making music\",\"publisher\":{\"@id\":\"https:\/\/splice.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/splice.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/splice.com\/blog\/#organization\",\"name\":\"Splice\",\"alternateName\":\"Splice Sounds\",\"url\":\"https:\/\/splice.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/splice.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/splice.com\/blog\/wp-content\/uploads\/2023\/09\/Splice-logo-black-background.png\",\"contentUrl\":\"https:\/\/splice.com\/blog\/wp-content\/uploads\/2023\/09\/Splice-logo-black-background.png\",\"width\":2928,\"height\":1540,\"caption\":\"Splice\"},\"image\":{\"@id\":\"https:\/\/splice.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Splice\",\"https:\/\/x.com\/splice\",\"https:\/\/www.instagram.com\/splice\/\",\"https:\/\/www.youtube.com\/@splice\",\"https:\/\/discord.com\/invite\/splice\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/splice.com\/blog\/#\/schema\/person\/05b4753d7bd02e0954948c8c21fccf30\",\"name\":\"Matt Aimonetti\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/splice.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/60b22da14a933dd0bcd1cc829b83b48f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/60b22da14a933dd0bcd1cc829b83b48f?s=96&d=mm&r=g\",\"caption\":\"Matt Aimonetti\"},\"description\":\"Matt leads the technical teams as a co-founder of Splice.\",\"sameAs\":[\"http:\/\/matt.aimonetti.net\",\"https:\/\/x.com\/mattetti\"],\"url\":\"https:\/\/splice.com\/blog\/author\/mattetti\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How Go helped shape Splice engineering culture","description":"Learn more about how Go's philosophy and ecosystem affected the engineering culture at Splice","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/","og_locale":"en_US","og_type":"article","og_title":"How Go helped shape Splice engineering culture","og_description":"Learn more about how Go's philosophy and ecosystem affected the engineering culture at Splice","og_url":"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/","og_site_name":"Blog | Splice","article_publisher":"https:\/\/www.facebook.com\/Splice","article_published_time":"2014-11-26T05:45:52+00:00","article_modified_time":"2025-07-21T14:51:18+00:00","og_image":[{"width":744,"height":501,"url":"https:\/\/splice.com\/blog\/wp-content\/uploads\/2014\/11\/goraster.png","type":"image\/png"}],"author":"Matt Aimonetti","twitter_card":"summary_large_image","twitter_creator":"@mattetti","twitter_site":"@splice","twitter_misc":{"Written by":"Matt Aimonetti","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/#article","isPartOf":{"@id":"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/"},"author":{"name":"Matt Aimonetti","@id":"https:\/\/splice.com\/blog\/#\/schema\/person\/05b4753d7bd02e0954948c8c21fccf30"},"headline":"How Go Helped Shape Splice&#8217;s engineering culture","datePublished":"2014-11-26T05:45:52+00:00","dateModified":"2025-07-21T14:51:18+00:00","mainEntityOfPage":{"@id":"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/"},"wordCount":1888,"publisher":{"@id":"https:\/\/splice.com\/blog\/#organization"},"image":{"@id":"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/#primaryimage"},"thumbnailUrl":"https:\/\/splice.com\/blog\/wp-content\/uploads\/2014\/11\/goraster.png","keywords":["engineering"],"articleSection":["Engineering"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/","url":"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/","name":"How Go helped shape Splice engineering culture","isPartOf":{"@id":"https:\/\/splice.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/#primaryimage"},"image":{"@id":"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/#primaryimage"},"thumbnailUrl":"https:\/\/splice.com\/blog\/wp-content\/uploads\/2014\/11\/goraster.png","datePublished":"2014-11-26T05:45:52+00:00","dateModified":"2025-07-21T14:51:18+00:00","description":"Learn more about how Go's philosophy and ecosystem affected the engineering culture at Splice","breadcrumb":{"@id":"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/#primaryimage","url":"https:\/\/splice.com\/blog\/wp-content\/uploads\/2014\/11\/goraster.png","contentUrl":"https:\/\/splice.com\/blog\/wp-content\/uploads\/2014\/11\/goraster.png","width":744,"height":501,"caption":"Background by Aiden available at http:\/\/startupitis.blogspot.com\/2012\/05\/golang-its-amazing.html"},{"@type":"BreadcrumbList","@id":"https:\/\/splice.com\/blog\/how-go-shaped-splice-engineering-culture\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/splice.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How Go Helped Shape Splice&#8217;s engineering culture"}]},{"@type":"WebSite","@id":"https:\/\/splice.com\/blog\/#website","url":"https:\/\/splice.com\/blog\/","name":"Splice Blog","description":"An inside look at making music","publisher":{"@id":"https:\/\/splice.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/splice.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/splice.com\/blog\/#organization","name":"Splice","alternateName":"Splice Sounds","url":"https:\/\/splice.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/splice.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/splice.com\/blog\/wp-content\/uploads\/2023\/09\/Splice-logo-black-background.png","contentUrl":"https:\/\/splice.com\/blog\/wp-content\/uploads\/2023\/09\/Splice-logo-black-background.png","width":2928,"height":1540,"caption":"Splice"},"image":{"@id":"https:\/\/splice.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Splice","https:\/\/x.com\/splice","https:\/\/www.instagram.com\/splice\/","https:\/\/www.youtube.com\/@splice","https:\/\/discord.com\/invite\/splice"]},{"@type":"Person","@id":"https:\/\/splice.com\/blog\/#\/schema\/person\/05b4753d7bd02e0954948c8c21fccf30","name":"Matt Aimonetti","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/splice.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/60b22da14a933dd0bcd1cc829b83b48f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/60b22da14a933dd0bcd1cc829b83b48f?s=96&d=mm&r=g","caption":"Matt Aimonetti"},"description":"Matt leads the technical teams as a co-founder of Splice.","sameAs":["http:\/\/matt.aimonetti.net","https:\/\/x.com\/mattetti"],"url":"https:\/\/splice.com\/blog\/author\/mattetti\/"}]}},"_links":{"self":[{"href":"https:\/\/splice.com\/blog\/wp-json\/wp\/v2\/posts\/1214"}],"collection":[{"href":"https:\/\/splice.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/splice.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/splice.com\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/splice.com\/blog\/wp-json\/wp\/v2\/comments?post=1214"}],"version-history":[{"count":2,"href":"https:\/\/splice.com\/blog\/wp-json\/wp\/v2\/posts\/1214\/revisions"}],"predecessor-version":[{"id":36799,"href":"https:\/\/splice.com\/blog\/wp-json\/wp\/v2\/posts\/1214\/revisions\/36799"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/splice.com\/blog\/wp-json\/wp\/v2\/media\/1215"}],"wp:attachment":[{"href":"https:\/\/splice.com\/blog\/wp-json\/wp\/v2\/media?parent=1214"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/splice.com\/blog\/wp-json\/wp\/v2\/categories?post=1214"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/splice.com\/blog\/wp-json\/wp\/v2\/tags?post=1214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}