Benoît Chiquet & Radwane Hassen From experiment to production: stories of Elm at Veepee Elm Eur

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] yes so it's been a bit more than two years that we've done bleep it we would like to talk about a bit a bit about it but first let's say what the company does so it's a company that sells Free Runs search and we do it during such sales for our members so this is the business so let's start with the people we have very different people we are pretty much like 400 developers and he said we are a little more than 15 developer and we have all the project that started doing Adam know one of the developer had a previous experience in our so it was for all of us the first time and some of these developers had big interests in functional programming in general like Haskell F sharp or whatever but not professional experience so it wasn't something that was needed and the industry experience that we had I mean the people we are talking about we have journeyer developer we have very experienced we have like people that change from other role to developers so all of them are today people there that are happy with with with their experience and we also have some question eight people that help to to make the other team grow and this is what what was important I think in a company like ours to spread and all over the company yeah so I like to think that the birth of VP has been accompanied by two very good mothers so the first one the the pleasure is actually we started doing Elm during a half a hackathon so there was that project we'd asked VP bullet which was which which was used to report mistakes we make and make it unanimously and spread the awareness and so this project hit the projection and it was the basis for the start of an IDP and it was really great because from there on we didn't have to justify ourselves having elm introduction was a foregone conclusion and it was much easier to tell people yes we're going to do it in hell the problem of course is that when you've put a focus on set introduction sometimes you have problems so in my current project we we also had a project that started from experiments and yeah we still have some parts of the code that we would like to change so we really refactor it's a bit stupid but it's an ongoing process so the the second and much more important ferry to me is something that started completely separately from this process actually it started from zero right here and so Theo has been reading for as long as she's been at VP and as long as I can remember I don't know he's been attracting people from outside of the developer community so for instance there are people from supports which are using L there are people from support which has I believe they are developing a tool for themselves now right and it's also being a great boost in confidence for developers that were not confident starting Elm on their work but we'd be interested in the dojo will be interested in trying out the language during the dojo that's what helped them say yeah okay I'm ready to to start using it in production it was also a way to identify people that were willing to help and that were - to mentor people into production and so the the most important part like in every community activity its persistence and Co have been doing it doing it every Friday from as long as I can remember so I'm still yeah and if you want to know more about the dojo the ways you can start that because Co experiment it floods of formats for dojo just ask this person right go to him to him is the expert yeah so it's also be a great learning to we in my team we have some haskell in production - this is our beckon and has is a simple language in my opinion but it's not only language it has many new concepts to learn and has let new concepts to learn and so the idea is that you can start going home to learn some of the concepts and then issue switch SQL you only have some of the concepts that are new right you don't learn all of Haskell at once this is a great help in getting to start on something more complicated so the idea is it's like a terrace garden you know you you only have to do one step at once you only have to learn one parts one thing new at each move yeah we've also been doing some pairing which also helps a lot to learn in - to move from one gallon to the other so to wrap up this m-v-p what I got love stories we I don't think we can say exactly which part like helper to this contagion because know like we feel more more people are happy to learn more about our so from a hackathon from the first team that had the production and other team that get support support from this team and you know with this monsters that they have with the new teams to build down quickly and yet you know hit the production fast and this week leader also have like people to you know to have a safe space to experiment to learn and run and alike and in a way it's weekly I think give give it some you know structure to the learning for a lot of people who didn't know about all were JavaScript developer or not even developer at all yeah so let's talk about the products the use case for the products so we have identified like two kinds of teams today so we have teams that they do full-time and everyone up I mean the we have teams mine and yeah burn my team everyone up will start it will be an elm there is no doubt on our own mind today so all the team is you know behind this choice and we have other team they have a lot of react component where they have a lot of react code and they started experimenting some people smaller parts or simple parts using em so we have this to kind of of teams and I would say if there is 2530 maybe people or do some time two times two full time now yeah so this is my application so I will just introduce the business in order to explain you what happens in terms of features so these are our campaigns and this application is used to to manage campaigns so we need to check that campaigns are well sweet so for instance we don't sell all of the shoes the same day and we also need to make actions to to account for for changes in schedule for instance you we don't receive if we don't receive samples we need to move the campaign later on so that we can take the pictures right so we can drag and drop campaigns we can also reschedule companies using the action menu there is a lot of different views up there and filters different features but it's not very it's not necessarily very complicated in terms of hell the the main preoccupations we have is really our legacy system what hard to add it and it was slow right now what we need is we need to have a way to understand whatever happened because it's important and we also need to be able to develop new features easily and without slowing the application the other use case is in a different product which where we had a complex data structure we wanted to reduce the risk of the evolution of this data structure so it's it's the tool I would be talking about it's a tool that qualified the catalog of VP and just to give you an example we have product from a camera to a shirt to a shoe or a watch so we are very very different taxonomy so this give a little completed complicated data structure and today I'm this I am helped us a lot to have custom types and all this kind kindness and today I can even imagine having languages out of this feature so as we see here we didn't have a lot of design experience but we're trying to get better at it so we have other with that that we are starting to work with our designer more uux and stuff like that and one of the experiment that we would like to continue and do more seriously it's having an elm design system so I'm not going to talk a lot about it because you will learn more about it with Co tomorrow so again - so let's talk about the practice of hell yes so in my and the business unit where I was all the team all the way back boy we're in riddles so we are relaxed and honestly I mean I took this from a guy who said that an arm slack and it was totally my experience so I didn't want to start react with arcs I probably Wanda maybe more side with Flo or maybe not with tight script so I didn't want to have all this all drama wrong I'm not saying it's bad it's bad stack some people are happy with it it just was more comfortable to true because I knew a little bit elm and type Fe and you know I wanted to start with this so which will introduce another principle that I like about em I like to think about when you start a new language or when you learn a new language it's it's good it's I think the way you think about programming and if it's it's not I don't think it's what I mean if you know GS or will be or whatever so it'll pretty like if you have the same concept what I like about it's pushing the keep it stupid simple philosophy to the to this edge and I have been learning a lot from that because you know sometimes there is some cities cut right with them and you know you have to fight yourself to not think about like it like adding more complexity or other feature and I love that about em that it's it's you know the philosophy it's Frieden and the way we write our application and with the way we think and try and keep it as simple as possible and sometime in opera that require more line of work it's actually simpler because it reduce cognitive load i i've been experienced of this wood and it's affected a lot i think my way of thinking about programming so i think this is one of the take no i'm expect i didn't I just to give you an example it had been five or six months of animal production for me well have been more for Benoit so I'm still learning and this discipline that given me and the design start to make and more more sense at the career and principle it fit it it have yeah I would like to talk about something that I like to call feature based structure so I will so the idea is that in our code what is interesting to us is the features in our code so if someone gets into our code base and wants to know how to reschedule a campaign for instance or has seen a bug in the search and wants to correct it it's very annoying if the search feature is shared across different updates functions right so the idea is that we want to split our codes in terms of features so for instance search with will have its own update function and its own parts of the model this is the features right and when we started we had views all of our code wins it into components and it was really not working for us because we could not think in terms of features so when exams one example for instance is the schedule as I said earlier you can reschedule by dragging and dropping by getting into a menu or by drag and dropping in a second way means if you do it in terms of components this will be different components and so it was really painful to have scheduling done in different places right so right now what we prefer to do with having views completely split and having their own additional object for instance we have a folder with all of our model views there is for instance there is one model which is used for the help menu and another is used for the rescheduling so it's not related in terms of feature because it's in a few and on the other hand in the in the in the updates and in the model we split the code in terms of feature because it's easier for us to find what we want correct it's not an idea that is always shared so yeah this is just my personal points I had read it let's talk about Bekins of it so my team is using a scale as a Beckham the nice arse about SQL the first one is that Pascal adds some libraries which help generating a lot of stuff for Elm so we don't do encoders and decoders we don't create our own API metals so we have an API file which is generated and this guarantees this very current is that the backend and the front-end which are built at the same time they are always synchronized so we will never have a back-end which is not able to speak with the front-end right and this this is a great benefit for us it's also nice to use Haskell on Elm because the syntax is pretty similar lots of concepts are pretty similar there are differences but overall it's easy to move from some Elm into some Haskell and the other way to it would be much different for instance if we had a Java back-end because then making the switch would be harder for us every time you switch there is a small drawback which is when we move to nineteen when we were still doing the moves we are moving from eighteen to nineteen and we are having trouble getting a new bridge because the ecosystem is very fragmented in the libraries that connect to a scab another back end story so an hour back in story is very different we started with a not GS server and it was like a very thin layer we were calling all the products what other API to get article and you know other other stuff and when the app started growing the complexity grows as well and we needed to have more types I mean we had that in the front-end so why not invite him so at first reduce a graph graph and then we introduced a graph bureau so we didn't have to write anymore anchor the decoder which was awesome for us and we also had under the type verification the complicated compilation time and another story is we also enjoyed this I mean our experience and helped us to introduce F sharp which is another ML language and the similarity with elm helped it a lot so just to give you sorry the person who started doing the little Park started in Elm and when we saw the code I mean should translate this quote from m2f frog it's really very easy so there is like little difference of the stand tax but this helped us also to have more functional program in our our team thank you for my oh by the way yeah let's go quickly around the the problems we had with the language so very quickly so in terms of performance we had a few problems of performance our solution has been to put lazy everywhere it worked for us so I I don't have a good story about why not to use it but yeah it is a lot we also had a few that were not related to interactive interacting with the DOM and the lesson is if you see that the GC is getting by the vod's usually means it comes from your algorithm some from your arm codes and not from from your from your interaction with the Dom yeah when I started the beginning and profiling Elm it was a bit hard to look into the code because there's a lot of a1 say 2 s and F 1 F 2 s H etc yeah if you're interested in the beginning Elm as opposed to or to profile am I supposed to profiling JavaScript don't pay attention to this yeah I mean this common difficulties identify which eighteen or nineteen version so I think we had to to help the novice or the people starting to how to identify quickly which tutorial or package you use for for our cases yeah so the approach I mean we when you start there is a lot of component that we had or inori acts like infinite scroll or or for example featural tab so it's it's hard to you know when you don't have this and you have to start a new project and you have to build them yeah yeah there are some messages that we we are not really interested into in terms of business which we have to have Renaissance if you open a drop-down or if you scroll through a menu there's a lot of messages that are not really relevant to your to to what you're actually training to do there is also yeah the travel the time-travel debugger is also limited in terms of if you work on large data sets it's a go done very quickly so issue working with it you should learn to to put it down there is a possibility to use beyond system she not to work around this but having a real crisis Academy major that helps us having internal packages would really help and would help share internal stuff so we have have this little story so when you start with a new language that maybe I mean not that known especially from the manager and you know some people who decide so they will ask you what about the treatment and we're going to be hard there is not a lot of developer and stuff so this discussion with my manager and it went this way are you sure that we will be able to find out developers and my own short term where were you able to recruit easily experienced reactive workers which I mean we struggled to recruit so manager didn't have something to say anything to say about it and and my point of view I think today is market there is more people willing to change job for function form than functional programming jobs and I really really think it's a competitive advantage actually and especially for a big company that struggle to recruit a lot of developers so I think it's a real argument and the managers for us yeah and by the way we lose so if you wanna talk about it thank you very much [Applause] viju you have questions there is a little lag so did you find any solution for sharing packages or how do we deal with it there is I believe it's EMI which published a solution that are maybe Samanas which published as a resolution to to build from github or from each reapers but it's not very my point it is possible but it's it's not very easy to to find information issue not in the track yeah when you mention among the problems the overload of messages that are unrelated whatwhat was it problem it wasn't clear to me what to what he meant sorry I didn't hear the question yeah in one of the slides you mentioned that's one of the problems he found for us forward loads of messages yes he man relates to the business what was the problem yeah I mean for instance if I come back to my application so then it's not such a good idea - yeah so for instance if I click on this wheel right here it will open Avenue right but it will do no meaningful action in terms of what the planner the user wants to do right so it's not a business a business movement which is done right likewise if you if you want to open the sectors menu it's just a UI action right it's not interesting to me in terms of the business there's a lot of this kind of messages that we would just like to to put aside and not see when we look at the business logic okay so the problem was relative when when trains understand the code that has those messages right sorry I didn't yeah the problem then was a rare ability of the coal ore trains understand the code with unrelated messages right what was what was the profits sorry yeah yeah so it's as you said it's a is the problem the fact that is hard to read this is a problem to understand what the code is doing because of the unrelated message is the earth and these messages the clutter the added function without meaningful information thanks okay we'll have one last question thank you guys for sharing your success story it looks really amazing the question is do you find that writing an encoder or decoder is plentiful or because you mentioned that oh yeah we will never write decoders and encoders anymore to me the quadrant and encoders folks more like good option of the Elm and I'm wondering why you are so happy to don't write them thank you what I feel is I mean it's sometimes a little tedious to write so I'm happy with if I can let them generated so it's I mean we have been doing it's an order like we have web that's using North Korea and although that don't use it so we struggle a little bit sometimes you're right some of them when the the model is a little complicated but I mean as I said I I kind of also prefer that this simplicity to you know do not have like magic things or whatever so there's this under Stephen if you like it's if you even if you enjoy writing decoders which is fine I mean it's always interesting when you're not for us to do its rights the problem is it's not something that brings value to our users so we just want to transfer the data we are not interested in how actually I have one question so how does it does it feel to to be 15 people doing em together so and how do you collaborate on things first and then how those you how do you feel compared to all the people doing all the technologies inside the VP and you able to transfer that motivation to them that's three questions for the second question very smug it's hard to not be smug we've done it we can do functional programming and be paid for it's it's just so good so the first I mean we even use it you know on board new commerce right in elm to participate and all the team that they already have code bases and and so we have merge requests like we form a team to another one so I mean it worked well in our flow we I mean review and all that stuff so we trying to to teach newcomers to spread knowledge and we have all the people that they want to learn and started doing in the dojo we have bring it those really yeah there is Visio York's and someone at at some point just came in the room where the dojo where and he was just eating so he didn't pay attention what they were doing he is a reactive whopper and at some point he was hearing things that the geometry that makes sense for me and and he started paying more and more attention and that start asking question and today is spending like maybe half a day week turnaround and so we think that there is a new team that will start also doing arm and actually this week he did an interview so they decided in a retrospective to to ask us what is our feedback about just one side the first question we are not fifteen on one project I know so there is no 115 people team one thing is true though it's these different teams have some kind of are more bonded together than other teams because we shared the experiment of trying this trying out helm and this was bonding experiment across teams so we take away I would get would be that if I want to introduce Elm inside the big Kimani I should do dojos it's a good reaction yeah and find a field to experiment without you know especially if you didn't have any application in production before you maybe might be afraid or something so find a hackathon or whatever initiative you can start with and find all the people that want to do it so internal events okay thank you very much [Applause] you
Info
Channel: Elm Europe
Views: 862
Rating: undefined out of 5
Keywords:
Id: mQiVN9huSKA
Channel Id: undefined
Length: 32min 16sec (1936 seconds)
Published: Tue Nov 26 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.