JavaScript Survival Skills

A presentation at RVA JS in November 2018 in Richmond, VA, USA by Becca Bailey

Slide 1

Slide 1

JavaScript Survival Skills Tips from my life as a consultant November 2, 2018 Becca Nelson @beccaliz

Slide 2

Slide 2

Slide 3

Slide 3

Hi, I’m Becca

Slide 4

Slide 4

Hi, I’m Becca Chicago, IL @beccaliz beccanelson http://beccanelson.is

Slide 5

Slide 5

Hi, I’m Becca Chicago, IL @beccaliz beccanelson http://beccanelson.is

Slide 6

Slide 6

Speaker notes Hi, I’m Becca! I’m a software crafter at a consulting company called 8th Light. 8th Light is a consulting company that helps other companies to build better software. I am here to talk to you today about Javascript (wow)

Slide 7

Slide 7

What we think JavaScript looks like… @beccaliz

Slide 8

Slide 8

What we think JavaScript looks like… @beccaliz

Slide 9

Slide 9

What we think JavaScript looks like… var todos = [] function addTodo(task) { todos.push({ task: task, completed: false, }); } addTodo(“Feed my cat”); @beccaliz

Slide 10

Slide 10

Speaker notes Now if you will allow me to tell you a little bit more about myself, I have a bit of an unconventional backstory. I first learned JavaScript while I was teaching music at a small school in Western Guatemala. In a world where I felt rather lost and unsure of myself and sometimes struggled just to order coffee in Spanish , there was something about learning to program and making my tests turn green that felt really empowering and satisfying. Fast forward a couple of years, I went to Dev Bootcamp, and got a job at 8th Light where I’m working with lots of different clients

Slide 11

Slide 11

What we think JavaScript looks like… @beccaliz

Slide 12

Slide 12

What we think JavaScript looks like… @beccaliz

Slide 13

Slide 13

What we think JavaScript looks like… var todos = [] function addTodo(task) { todos.push({ task: task, completed: false, }); } addTodo(“Feed my cat”); @beccaliz

Slide 14

Slide 14

What JavaScript actually looks like… @beccaliz

Slide 15

Slide 15

What JavaScript actually looks like… @beccaliz

Slide 16

Slide 16

What JavaScript actually looks like… @beccaliz

Slide 17

Slide 17

What JavaScript actually looks like… @beccaliz

Slide 18

Slide 18

What JavaScript actually looks like… @beccaliz

Slide 19

Slide 19

What JavaScript actually looks like… @beccaliz

Slide 20

Slide 20

What JavaScript actually looks like… @beccaliz

Slide 21

Slide 21

What JavaScript actually looks like… @beccaliz

Slide 22

Slide 22

What JavaScript actually looks like… @beccaliz

Slide 23

Slide 23

What JavaScript actually looks like… @beccaliz

Slide 24

Slide 24

What JavaScript actually looks like… @beccaliz

Slide 25

Slide 25

What JavaScript actually looks like… @beccaliz

Slide 26

Slide 26

What JavaScript actually looks like… @beccaliz

Slide 27

Slide 27

What JavaScript actually looks like… @beccaliz

Slide 28

Slide 28

What JavaScript actually looks like… @beccaliz

Slide 29

Slide 29

What JavaScript actually looks like… @beccaliz

Slide 30

Slide 30

What JavaScript actually looks like… @beccaliz

Slide 31

Slide 31

Speaker notes For consultants, team-switchers, freelancers, or beginners who don’t quite know where to start, this stack can be especially intimidating.

Slide 32

Slide 32

JavaScript fatigue is real… https://giphy.com/embed/eBCnpuRGBhQGY @beccaliz

Slide 33

Slide 33

@beccaliz

Slide 34

Slide 34

@beccaliz

Slide 35

Slide 35

@beccaliz

Slide 36

Slide 36

@beccaliz

Slide 37

Slide 37

@beccaliz

Slide 38

Slide 38

@beccaliz

Slide 39

Slide 39

@beccaliz

Slide 40

Slide 40

@beccaliz

Slide 41

Slide 41

@beccaliz

Slide 42

Slide 42

? @beccaliz

Slide 43

Slide 43

Speaker notes And if that’s not enough, add in some short projects, long projects, back-end APIs, prototypes and production applications, and you end up with about two years of your life that look like this.

Slide 44

Slide 44

https://giphy.com/embed/6lQVzcfOkpbZm @beccaliz

Slide 45

Slide 45

When was the last time you felt really overwhelmed?

Slide 46

Slide 46

Speaker notes I want you to turn to another member of the audience, introduce yourself if you have never met, and tell them about the last time you learned something new. How did it feel?

Slide 47

Slide 47

✋ me too @beccaliz

Slide 48

Slide 48

Speaker notes Me too. When I was trying to find a topic for this talk, I thought about all the technology I have worked with over the past couple of years. … I had worked with a lot of things, but I didn’t feel like I was really an expert at any of them. A huge part of my job every day is finding the right tools for the job, trying to figure out how to use them, and then joining a new project and starting all over again two months later. If you are in this place, I feel your pain.

Slide 49

Slide 49

@beccaliz

Slide 50

Slide 50

Speaker notes When I first started exploring this subject, I’ll be honest. I assumed this was a technical problem. I assumed that there would be one framework or toolset that would win at the end of the day, saving us from all this pain and frustration. I explored web components, web assembly, JavaScript alternatives, and micro architecture, which I will talk about briefly. But the more I dug into this topic, the more I worked on teams that were with people who did this well or didn’t do tis

Slide 51

Slide 51

Web Components ♀ @beccaliz

Slide 52

Slide 52

Web Components ♀ @beccaliz

Slide 53

Slide 53

Speaker notes Through this exploration, I learned some interesting things. I learned about web components, which are components that can be built in JavaScript and vanilla HTML, often using tools like Polymer. Web components are often used for things like advertisements, that need to show up in lots of different applications, but can also be used for any elements that are shared between multiple applications.

Slide 54

Slide 54

Micro Architecture @beccaliz

Slide 55

Slide 55

Speaker notes I spent quite a while drooling over Micro Architecture, which is the practice of building different features of your application using different stacks, and then having one underlying framework that routes to all of your different applications. To me, this sounds great, and I really wish our clients with monolithic angular applications would go for writing their new features in something, well, less gross. But alas, this is just not reality for most of my projects.

Slide 56

Slide 56

♀ Web Assembly @beccaliz

Slide 57

Slide 57

Speaker notes I learned a bit about web assembly, which may or may not be the Javascript of the future. There might be some cool things we can do with this down the road, but I don’t think we quite know enough about this yet to throw away all of our other tools. Now, on the technical side, I have a couple of words of caution, and a couple of pieces of advice.

Slide 58

Slide 58

@beccaliz

Slide 59

Slide 59

Every side project, ever @beccaliz

Slide 60

Slide 60

Every side project, ever Learn every New ™ and Shiny© toy @beccaliz

Slide 61

Slide 61

Every side project, ever Learn every New ™ and Shiny© toy Just use React @beccaliz

Slide 62

Slide 62

Speaker notes Now, this isn’t me being down on side projects, but I’m maybe mentioning that if you’re super overwhelmed at your job right now, perhaps you shouldn’t spend your weekends learning Vue. On a related note: You don’t need to rush to learn every new and shiny toy. Sometimes the new and shiny toy will be the best tool for

Slide 63

Slide 63

@beccaliz

Slide 64

Slide 64

⚠ @beccaliz

Slide 65

Slide 65

⚠ ⚠ @beccaliz

Slide 66

Slide 66

⚠ ⚠ ⚠ @beccaliz

Slide 67

Slide 67

Speaker notes If there is one thing that full stack developers love, it is languages that compile to JavaScript. Now, I may start a riot at 8th Light for saying this, but I don’t think that avoiding the JavaScript ecosystem altogether is the best way to get around some of its limitations. So, a question to ask yourself…

Slide 68

Slide 68

Is this language the best long-term choice for my client (or my company), or is it just closer to my own comfort zone? @beccaliz

Slide 69

Slide 69

@beccaliz

Slide 70

Slide 70

Architecture! Design Patterns! @beccaliz

Slide 71

Slide 71

Architecture! Design Patterns! What is the DOM anyway? @beccaliz

Slide 72

Slide 72

Architecture! Design Patterns! What is the DOM anyway? Share your knowledge @beccaliz

Slide 73

Slide 73

Speaker notes So, technically speaking, what should you do? Sadly, there’s no magic bullet technical solution to this problem, but here’s a few things that I think are awesome. While all of my views about application design are a talk for another time, what I can say is that working on so many different projects and using so many different frameworks has given me a really good overview of what good application design looks like.

Slide 74

Slide 74

So, now what? @beccaliz

Slide 75

Slide 75

Speaker notes So, now what? Having the right skillset makes it easier to transfer your knowledge and experience from one tech stack to another, but when I reflect on the experiences I have had over the past couple of years, and the people who I have known who have done this well or not so well, the thing that stands out to me isn’t a particular technical skillset.

Slide 76

Slide 76

@beccaliz

Slide 77

Slide 77

@beccaliz

Slide 78

Slide 78

Agility Humility Courage @beccaliz

Slide 79

Slide 79

Agility @beccaliz

Slide 80

Slide 80

@beccaliz

Slide 81

Slide 81

Agile @beccaliz

Slide 82

Slide 82

Agile agile @beccaliz

Slide 83

Slide 83

Speaker notes When I talk about being agile, I am talking about agile with a lowercase A. I’m not talking about a specific set of project management principles, but a mindset that you can develop over the course of your career. You see, I got pretty lucky in this respect. At 8th Light, we have an apprenticeship program where you spend the first few months of your job working with mentors and basically learning how to learn. By the end of my apprenticeship, I had built and tested applications in Ruby, Clojure, Java, Swift, JavaScript, and Haskell. Through

Slide 84

Slide 84

@beccaliz

Slide 85

Slide 85

Speaker notes I have a lot of faith in this community’s ability to adapt to change, and I know we will continue to do this. I think this tweet from one of my JavaScript heroes sums it up pretty well.

Slide 86

Slide 86

Humility @beccaliz

Slide 87

Slide 87

“I don’t know” @beccaliz

Slide 88

Slide 88

Speaker notes For the purpose of this talk, I’m going to define humility as the ability to say “I don’t know”. Because this might sound obvious to you, but the first step to learning something new is admitting that I don’t know it already.

Slide 89

Slide 89

@beccaliz

Slide 90

Slide 90

I can’t get this to work because Redux is just so complicated @beccaliz

Slide 91

Slide 91

I can’t get this to work because Redux is just so complicated This project would be easier if <insert teammate here> hadn’t added Redux. @beccaliz

Slide 92

Slide 92

I can’t get this to work because Redux is just so complicated This project would be easier if <insert teammate here> hadn’t added Redux. Why should I use a tool like Redux if I can just build state management myself? @beccaliz

Slide 93

Slide 93

Speaker notes For example, instead of admitting that we just aren’t familiar with Redux, we might say something like this: … Now, I’m not saying that questioning our technology choices is never a good idea. It’s always good to have a healthy amount of skepticism about adopting a new tool or technology that might not be necessary.

Slide 94

Slide 94

@beccaliz

Slide 95

Slide 95

@beccaliz

Slide 96

Slide 96

Speaker notes But more often than not, in order to be the right person for the job, we have to have humility. We have to know where our weaknesses are so we know where we need to work to improve. As developers, humility should guide our decisions about design, about which libraries to rely on, and which resources to use. With humility, we can admit that perhaps someone else anticipated a problem we just haven’t seen yet, and learn from their experience.

Slide 97

Slide 97

“I don’t know… ” @beccaliz

Slide 98

Slide 98

Courage @beccaliz

Slide 99

Slide 99

Speaker notes In this ever-changing world, it takes courage to keep showing up again and again, and continuing to learn and change and adapt when it’s easier to stick with what you already know. It takes courage to admit the gaps in your knowledge, especially when we feel like the expectation is for us to be the expert. It takes courage to reframe the story from “This is just too hard” to “I haven’t figured this out yet, but I know I will”.

Slide 100

Slide 100

https://giphy.com/embed/VvXg0yjJQgfEQ @beccaliz

Slide 101

Slide 101

Speaker notes In this ever-changing world, it takes courage to keep showing up again and again, and continuing to learn and change and adapt when it’s easier to stick with what you already know. It takes courage to admit the gaps in your knowledge, especially when we feel like the expectation is for us to be the expert. It takes courage to reframe the story from “This is just too hard” to “I haven’t figured this out yet, but I know I will”.

Slide 102

Slide 102

The End @beccaliz