scale.bythebay.io: Andrew Kuhnhausen Interview
Recording: scale.bythebay.io: Andrew Kuhnhausen Interview
under Kuhnhausen domino data lab software engineer all right the key engineering challenges that we face day to day at Domino data lab are mostly centered around balancing sort of moving really quickly because you know we're a start-up we're getting customers signed those customers are asking for features and and then also around stability and maintainability our products become used by you know really big enterprises stability and and everything is really important to those customers and and it's it's totally at the heart of being able to continue to build software because they're the ones paying us so making those those trade-offs of you know how far do we push how much engineering do we do versus just you know spike work it's I'd say that's that's a big challenge of basically moving fast [Music] so our primary product is geared toward smaller organizations so these data science teams or maybe you know ten to a hundred maybe maybe more but data science tends to is a fairly Mason League categorized field and maturity of while many organizations have been around for a long time sort of under the moniker of data sciences fairly new and these and the maturity level and size of those organizations tend to also be spent so we don't deal with mega you know platform global sized engineering like you know places like Facebook and Twitter instead we deal with the sort of scalability issues of well how does our shrink-wrap product get deployed to these various environments so things like you know bare metal how do we run in their data center versus you know in AWS or Azure and sort of the complexities around around configuration parameterizing each of these you know integrations with you know third-party things like spark and like SAS studio and things like that those are the sorts of issues that we run into it's more about integrations and running in different environments than say you know high traffic scaling [Music] ideally you know we could we could take a couple of tracks with the way our product works we could build out a platform where we allow you know sort of a multi-tenant environment or even you could imagine having customers that that are global enterprises that need to have sort of regionally partitioned data and certain sort of access controls around that data and and so those sorts of multi-tenant multi-regional sort of scaling issues are things that we definitely are starting to to run into the other parts are as our team grows as our engineering team grows because when I started over a year ago we were less than 20 people now we're like 80 people in the company how do we how do we scale our engineering organizations and how do we what are the sorts of tools processes that we Institute so that our teams can grow from you know 15 to 30 to 100 people those sorts of decisions are really interesting and fun those are the sorts of things we're making today so when I joined Domino I think there was only one other person there that really had a background in functional programming other than me most of the code had been written in a very object-oriented style but using some of the some of the things that you get from scholar like immutability you know case classes those sorts of things so there was some sort of practice of like the benefits of functional program but like most things weren't you know referential a transparent there was really not much compositionality outside of inheritance and make sense and so one of the first projects I worked on was a caching service a smart caching service which you know as building that out I decided to take sort of a hybrid approach I tried to only use the libraries and tools that that we already were familiar with and already knew things like play and and akka and then apply a functional wrapper over the top and that allowed me the ability to to use it as a starting point to start advocating for functional programming so there were concepts like like type classics there was concepts like data transformation over over sort of you know like simple data types and attaching behavior as opposed to this inheritance model error propagation as opposed to sort of throwing exceptions everywhere how do you how do you use like either two and values instead and it was both a product that I shipped and and a way to sort of give you know code to people to help them learn these functional techniques and I'd say one of the biggest wins was you know I had a you know a co-worker that was really big into spring and like a old-time Java programmer and he was the one who made a pull request to bring in Monad into our into our main controllers so I said that's pretty big when I actually attended I think it was the second or the first Scala by the bay and I didn't know scroll at all I didn't write it at all it was I just was interested and from that to somebody who now gets a paycheck to write Scala I think it's a great opportunity for both beginners and very had you know advanced developers to come together and learn about this really quirky but awesome language [Music] you