A presentation at RVA JS in in Richmond, VA, USA by Becca Bailey
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
New technology fatigue is real. In my first year and a half as a consultant, I tried to learn ALL THE THINGS. So far I haven’t learned everything about JavaScript, but I have learned a few things about surviving as a frequent context-switcher in a community that is moving quickly.
Here’s what was said about this presentation on social media.
Givin’ it up for the women who code! Their humor and wit were hits and they were some of the best speakers at #RVAJavascriptConf #RVAJs! Great illustrations by Janny Ji! @gurlcode @beccaliz Thank you! pic.twitter.com/61oaQ6dsUO
— Dick Kirkland (@dickkirkland) November 2, 2018
Enjoying @beccaliz ‘s talk on JavaScript survival skills #rvajs pic.twitter.com/6lhevbvSJ4
— John Athayde (@JohnAthayde) November 2, 2018
Score you reach for the languages that compile to JS: (@beccaliz @ #rvajs) pic.twitter.com/g4XTebZqqH
— John Athayde (@JohnAthayde) November 2, 2018