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

Hi, I’m Becca

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

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

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)

What we think JavaScript looks like… @beccaliz

What we think JavaScript looks like… @beccaliz

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

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

What we think JavaScript looks like… @beccaliz

What we think JavaScript looks like… @beccaliz

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

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

What JavaScript actually looks like… @beccaliz

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

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

@beccaliz

@beccaliz

@beccaliz

@beccaliz

@beccaliz

@beccaliz

@beccaliz

@beccaliz

@beccaliz

? @beccaliz

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.

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

When was the last time you felt really overwhelmed?

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?

✋ me too @beccaliz

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.

@beccaliz

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

Web Components ♀ @beccaliz

Web Components ♀ @beccaliz

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.

Micro Architecture @beccaliz

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.

♀ Web Assembly @beccaliz

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.

@beccaliz

Every side project, ever @beccaliz

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

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

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

@beccaliz

⚠ @beccaliz

⚠ ⚠ @beccaliz

⚠ ⚠ ⚠ @beccaliz

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…

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

@beccaliz

Architecture! Design Patterns! @beccaliz

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

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

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.

So, now what? @beccaliz

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.

@beccaliz

@beccaliz

Agility Humility Courage @beccaliz

Agility @beccaliz

@beccaliz

Agile @beccaliz

Agile agile @beccaliz

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

@beccaliz

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.

Humility @beccaliz

“I don’t know” @beccaliz

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.

@beccaliz

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

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

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

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.

@beccaliz

@beccaliz

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.

“I don’t know… ” @beccaliz

Courage @beccaliz

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”.

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

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”.

The End @beccaliz