Bestand wählen
Merken

My Experience Learning Ember and Becoming a Software Engineer

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
so I and and
hi everyone my name is ming and I'm an engineer at intercom today I'm going to be talking about my experience learning amber and becoming a software engineer I and what I think are the most important concepts for a beginner to internalize so i'm before I start a little bit of background about myself I'm fairly new to working in tax on I've been attacked for about 2 years but I've given you were to suffer development in fact I I think it was nearly a year ago to the day when I made my 1st commit to intercoms Amber revoked of so I studied applied math and statistics in college and then spent some time working as a commodities trader trading agricultural commodity futures like Warren and lean hogs of my 1st role at intercom was actually and data analytics and I did that for a while before getting bit by the software development but and you know realize I want to you to make things and started my transition to engineer I'm so this is all you know just to say that I had a lot to learn in a really short amount of time of year previous to this I know experience building stuff on the web on an intercom had a very generalist engineering culture so most of our engineers work across the stack but there was also quite a big team out we have around 230 employees without engineering team of 70 people and also quite a complicated product but you know there was like 4 different products within the larger the common platform and L can interact with each other in ways so I in I was stepping into this in a really simple easy could be and at the time when I was making my own tradition of intercom itself was also undergoing a change because transitioning from using rails on the front end to using Amber so I too was caught in this wave where had learned about suffer engineering principles and web development and relevant member all the same time unsoaked so from having just gone through his journey myself but hopefully this talk and help others were just starting their own Amber journey as well as give some ideas to people who are probably more experienced who are now mentoring or teaching others I wanna talk about 3 steps on that you need to take to successfully make such a transition from a non-engineer to a amber product and you so the 1st thing that you have to do is learn how to embrace frameworks but when I started this whole process I I I I knew I knew how to program I had experienced thinking algorithmically I knew what this statement was I knew what a while it was but you know at the time I really only have experience writing really small ad hoc scripts to and I 0 or to make data visualizations and then you know while
these line-by-line imperative programs you can teach you a lot about programming and from there using more advanced patterns like functional programming or object oriented programming allows do more complex things like build checkers if you actually want to make some if you if you actually want to make a product without having to make loads and loads of decisions the sooner or later you're gonna have to turn into a framework and you know that's because
ambitious applications require structure as you add on more developers and add some more complexity of having constraints and then arrive at opinions really simplifies the development process and actually 1 of the main reasons at the column I know the main reasons why we switch from using rails to using Amber was the was because we're were sick of having every developer bring to the front and their own independent ideas of how to build things there but but to be effective but within a framework you know like amber you have to learn what the amber way of doing something but you just learned what opinions are what its quirks are and I remember in my really early days of learning Amber but I was working with this I was writing some code where I was writing a computer property that was dependent on how many l how long array was how many elements was in this race and so here's kind of like a simplified version of that example on so I have an array called in with ideas and computer property called number of invoices that just got the length about array and somewhere else in my code I was pushing elements onto IBM was ideal array and I remember spending like a really long time just out while I was in my computer property updating that could be out the until I get my manager can and pull me so you know you you have to use observer friendly methods for this work so just that phrase of other but observer friendly methods you 1st have to know that observers are thing in amber but there is enough of the venues to know that they only react to certain types of methods and that plain old JavaScript push isn't 1 of them offer for this actually work for for to get updated you happy use up which object the now none of this is particularly difficult to grasp but they're just things that you need to know in order to be effective and can't is about on when you're at the dinner learning software engineering through code base that uses a framework 1 thing that you hear people say or what is this concept of magic that is just inherent in all frameworks and why the magic i mean like implicit and I think that you know when you're when you're teaching someone on you as a teacher but it's really important to reveal how the magic is done actually say explicitly what the framework is abstracting away and this is its special importance at the seams between frameworks not so recently there's this really great medium post written by Alan Cooper of his father Visual Basic that talks about this concept of edge calculus that complexity exists where 2 systems interact with each other and I don't think that holds for a web development of so in you know in the case of something like this in the where and talked to whatever power giraffe on service side but I remember when I 1st Amber projects while was this I really simple internal at which I'll talk about in more detail later but it was a really simple where you could search for a customer by the name or by the ID and then from the search results that you could click on click on a search result and view a customer's profile you some information about them and and it was a Railsback and plugging into amber and amber data on the front and you because I was using every data but I to write your code like this were you know explicitly ready i'd AJAX call up I got used to store methods so you know this dot stores find all this stuff stored up fine record but and it sounds really silly and as I was writing this talk I would have to debating whether to you put this in here not but as a beginner I I I don't know that the various store methods map to specific points on the server side that it knows they match to these methods in my Rails controller and I think you know that was partially because of the convenience of every day I am a data abstraction know all this way and you know that's great because then you'll have to write this whole big long thing where you explicitly writing out the URL rating of action instead you can just use these are relatively simple and simple methods but then what happens is that it will it it's less clear the interactions between Amber and what's happening on the server side so I guess the takeaway lesson from all of this is you know even if your code is that being explicit your understanding of it has to be of the 2nd thing I wanna talk about that I think the 2nd at the glottal of learned and internalizes but had navigate the component higher so I think the existence of components in amber on is really good for beginners because it reinforces a lot of general good engineering practices like modularity and reusability especially in apps presentation layer which is an area that I can get pretty messy pretty quick but I think working with components takes a little bit of getting used to as well especially if you're working in a large have you know following call stacks is definitely a little bit of a learned skill I'm and I think this is because the number of components that an act and have to get very large very quickly so just up the can illustrate that I have here screenshot on the left I'm taken from intercom and this is part of a the message composition flow in intercom it's the you either you see when you're selecting who to send a message to and on the right arm might screenshot taken from the Ember Inspector browser that list so are some of the components what part the components that are on this page now all these components here with that on the right only served power this tiny little fantasy of select so you can imagine you know fibers showed the entire
component hierarchy how deep the rabbit hole can go and when you have a lot of components the deducting the bonding process becomes in something like this the 1st thing know it you know this is something is wrong some some unexpected behavior is happening so we have to find you know where where's advocate where that think showing up no what component is in once you find the component you find the variable that's driving this behavior and then you have to chat about variables being passed into this component off it's being computed the now let's say it's out being passed OK now used to control after the code base with this component vein trying to find the component at weddings component what you found that can component you know where is that variable being passed on to the parent component or is it being computed there if it's being computed there what are the variables are driving are those taxes so on and so forth kind of repeating this up the cost that until you find the source of the problem we of and you know to be perfectly honest I and I don't I found this very sort of low bit strange and it's something I wasn't used to before I started working and this is the only place we see this pattern you a similar thing could be said about actionable I mean if you're making are close by and on a modal value despite you know how the writing the code for the close but in itself you on in the template for that model on the action know once to follow this the calls of this that an action or layers up the code that's actually closing the modal lives in some about 5 folders away so I guess always is a say that you have to get comfortable with the idea that we're an action is taken or where variable is shown to be very far away from its source code so in know in order to be successful building beings at debugging a number you have to learn how to hold state in your head so I think so I think that people should learn is to learn a lot of Member URL but I love embryo or else I think Members opinions on URL of the 1 of the best constraints that the framework has and thanks embassy all there's no really strong link between the layout of the page and where the code lives in the file structure which brings us a whole list that level of organization to member applications the and the fact that Member you also store the state of the application me that people are forced to think about you know how the you i of the Act and how the code the powers are linked marrying design and on and Sudakov elicit always outlets let's pretend you are not making any lack that is a shared in out heavily influenced by intercoms shared a and this is a mock up that you have of what you want of the design of like marks the so part of the design of the shared lock is this on top now navbox of where there are these toggles Europe that are used to select whose admins inbox reviewing so when you're switching between 1 and box and others you know you wanna replace all this content here highlighted in yellow on and you also know that the world needs to change along with it so from inbox last dance to inbox flash make the similarly within 1 admins and box on if you wanna go from 1 conversation to the next you know that you'll want of all this higher in yellow content to be replaced and you'll want your URL the change from being slashed conversation such 3 2 being such conversations such to the and so by knowing the interactions that you want your UI to support and what you're you are else will click on make it really clear you know what what controllers you'll need and how you should structure your page from a code point of view so you know this means that you know that you want this talk now far that never moves and stay there you'll know that you want this bottom area what area where you're actually rendering what's in each person's inbox and within that you know you want this side bar with a list of all the conversations and I you also want this right side panel that lists the individual messages within a conversation and so not only are used for something about how you would structure page beforehand but you're also thinking conceptually about what each part of the page is and how they fit together it real kind of like how design would think about as the designing so I have a strong belief that design and engineering shouldn't be silent and Amber does a really good job of encouraging but so you know I talked about these 3 things that you need a learned embracing frameworks navigating the component hierarchy and loving and URL so so what's the best way to learn all of us personally the thing that definitely allowed me to learn a member the fastest I was working on an app from scratch now this isn't always possible in other there isn't always this business need for an internal actually made at all times but if you can manage it it's really the best way to go you know it's gotta have the business as well because you don't have it began doing crazy things within your main product and I think you as a beginner it gave me a lot of confidence to you write code and not have to worry that I will break this large reduction thing that thousands of customers I and I think that you're working on are from scratch will allow you to see an act the way that ever intended you out of the box on customized if you compare that to more developed in which might have things like a lot of custom libraries a deprecated favor practices idiosyncrasies from having dozens of developers work on it a lot of random facts know it's just a lot easier to learn something that's simple and so you know the back talking about the hours that internal off yeah if you compare what that looks like 2
it's pretty simple pretty clean just a couple of but a couple of sections you compare that to our main intercom out the you have just from the
outside the superficial it's much more the intercom is much more complicated and if you look at the application about file of that
internal after start off on you can see that it's super sure only like a dozen lines or so I were not importing crazy very standard methods compare that with the inter comes application that's file
super long doesn't 1 slide that you can get an idea of how long the file is by looking at the outside meaning that they were importing a bunch of different mixins is is a lot more complicated and besides you just simplicity and clarity I think engineers especially beginners can get a lot of value on from working on a green project you know the set up work you have to do to like get an app started like dealing with package dependencies and stuff can be pretty frustrating but I think ultimately a necessary part of an engineering education become a balancing of
simplicity I also really encourage everyone to build something that people use so find a small contained but real need of the business and use that as a starting point so I think a lot of a lot of the dinner tutorials tell you that will you have guide you to build something like a to do list or a blog but in while those do you have the benefit of being very simple on I think there's a lot of value in building something for you know real users building an app for real users and not just this hypothetical out that no 1 will actually use you know because yeah well if you're if you wanted you know make things 1 be a product engineer and think it's really important to foster product sense right from the beginning and when I say products and I mean things like of being empathetic to users thinking about how they will interact with your product and what features you have to have and what features now tactical reasons design trade-offs i'm because at the end of the day your learning Amber not for the sake of learning but as a tool to make something thank you up and if you have any questions feel free that we don't need or e-mail me uh my
Statistik
Bit
Befehl <Informatik>
Prozess <Physik>
Datenanalyse
Wellenlehre
Gebäude <Mathematik>
Mathematisierung
Gruppenoperation
Biprodukt
Systemplattform
Framework <Informatik>
Videokonferenz
Software
Benutzerbeteiligung
Framework <Informatik>
Code
Debugging
Statistische Analyse
Visualisierung
Web-Designer
Skript <Programm>
Softwareentwickler
Software Engineering
Hilfesystem
Resultante
Bit
Prozess <Physik>
Kalkül
Punkt
Browser
Versionsverwaltung
Kartesische Koordinaten
Element <Mathematik>
Computer
Komplex <Algebra>
Homepage
Komponente <Software>
Datenmanagement
Code
Gamecontroller
Existenzsatz
Trennschärfe <Statistik>
Mustersprache
Visualisierung
Urbild <Mathematik>
Algorithmische Programmierung
App <Programm>
Dicke
Navigieren
Kategorie <Mathematik>
Abstraktionsebene
Güte der Anpassung
Systemaufruf
Softwareentwicklung
Bitrate
Biprodukt
Entscheidungstheorie
Dienst <Informatik>
Hierarchische Struktur
Framework <Informatik>
Datenstruktur
Rechter Winkel
Server
Kategorie <Mathematik>
Projektive Ebene
Information
Ordnung <Mathematik>
Software Engineering
Message-Passing
Nebenbedingung
Objektorientierte Programmierung
Gruppenoperation
Interaktives Fernsehen
Zahlenbereich
Keller <Informatik>
Kombinatorische Gruppentheorie
Code
Framework <Informatik>
Datenhaltung
Methodenbank
Modul <Datentyp>
Datentyp
Luenberger-Beobachter
Zusammenhängender Graph
Softwareentwickler
Datenstruktur
Speicher <Informatik>
Leistung <Physik>
Datenmodell
Mailing-Liste
Physikalisches System
Datenfluss
Keller <Informatik>
Datensatz
Flächeninhalt
Last
Surjektivität
Mereologie
Gamecontroller
Web-Designer
Modelltheorie
Funktionale Programmiersprache
Bit
Umsetzung <Informatik>
Prozess <Physik>
Punkt
Kartesische Koordinaten
Homepage
Übergang
Komponente <Software>
Dämpfung
Code
Mustersprache
Randomisierung
E-Mail
App <Programm>
Sichtenkonzept
Prozess <Informatik>
Kategorie <Mathematik>
Template
Gebäude <Mathematik>
Systemaufruf
Quellcode
Biprodukt
Rendering
Variable
Gruppenoperation
Rechter Winkel
Garbentheorie
URL
Ordnung <Mathematik>
Message-Passing
Aggregatzustand
Nebenbedingung
Quader
Selbst organisierendes System
Mathematisierung
Gruppenoperation
Zahlenbereich
Hierarchische Struktur
Interaktives Fernsehen
Framework <Informatik>
Code
Open Source
Flash-Speicher
Selbst organisierendes System
Informationsmodellierung
Variable
Bereichsschätzung
Vererbungshierarchie
Programmbibliothek
Zusammenhängender Graph
Inhalt <Mathematik>
Softwareentwickler
Datenstruktur
URL
Leistung <Physik>
Schreib-Lese-Kopf
Systemverwaltung
Mailing-Liste
Elektronische Publikation
Binder <Informatik>
Quick-Sort
Ordnungsreduktion
Flächeninhalt
Mereologie
Gamecontroller
Mixed Reality
Kartesische Koordinaten
Elektronische Publikation
Gerade
Rechenschieber
Arithmetisches Mittel
App <Programm>
Subtraktion
Punkt
Reelle Zahl
Gebäude <Mathematik>
Mereologie
Mailing-Liste
Projektive Ebene
Elektronischer Programmführer
Biprodukt
Elektronische Publikation
Term

Metadaten

Formale Metadaten

Titel My Experience Learning Ember and Becoming a Software Engineer
Serientitel Ember Conf 2016
Autor Lu, Ming
Lizenz CC-Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben.
DOI 10.5446/34713
Herausgeber Confreaks, LLC
Erscheinungsjahr 2016
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik

Ähnliche Filme

Loading...
Feedback