Hey everybody, thanks for coming to another episode of My Angular Story. I'm
the host Aarren Frost, and today our guest is James James. Can you
introduce yourself to the community so everyone kind of gets to hear who you are,
where you're from. Absolutely. My name is James Spivey. I'm the
director of engineering for Shutterstock. I've been in the industry for about fifteen years.
On Twitter handles my spyby nyspi bey if you want to find me there.
This episode is sponsored by Century dot Io. Recently, I came across
a great tool for tracking and monitoring problems in my apps. Then I asked
them if they wanted to sponsor the show and allow me to share my experience
with you. Century provides a terrific interface for keeping track of what's going on
with my app. It also tracks releases so I can tell if what I
deployed makes things better or worse. They give full stack traces and as much
information as possible about the situation when the error occurred to help you track down
the errors. Plus one thing I up you can customize the context provided by
Century, so if you're looking for specific information about the request, you can
provide it. It automatically scrubs passwords and secure information, and you can customize
the scrubbing as well. Finally, it has a user feedback system built in
that you can use to get information from your users. Oh and I also
love that they support open source to the point where they actually open source Centry.
If you want to self host it, use the code dev chat at
centry dot io to get two months free on Century small plan. That's code
dev chat at century dot io. Cool. So what's your what's your back
ground with it? Let's hear about it. We're we're all here too,
regular story, Yeah, yeah, yeah. So, uh I actually started
programming in cold Fusion and then Adobe Flex. Yeah, I'm a big Flex
fan, you know. I I was all about that Adobe Life. Yeah,
and then uh, Apple had a say or two about where that was
going, and uh so I started looking around for alternatives, and Angueler just
felt at home as a Flex developer. You know, it's actually developed by
the exact same guy. So it was a pretty good transition to moving in
the HTML world. And I just got hooked on one dot. Oh and
I've been pretty much with it ever since. Cool. So how early and
one dot oh did you start using it? That's a great question. My
my fading memory does not recall the exact version. Yeah, it was pretty
early though. I wouldn't say one dot oh, but it was. It
was pretty early. Yeah, I started in two thousand and the end of
twenty twelve. I think he was like dot nine. I don't think it
was one oh yet. I don't know it was. Why it was it
was pretty early though, Yeah, pretty close. Yeah, well cool so
director of engineering at Shutterstock. And for anyone who's like, what's Shutterstock,
it's the people that they have the watermarks and all the images that you try
and download from Google searches that shutter stock. Just in case you forgot much
bigger than that. Yeah, we do stock photography. We are one of
the largest suppliers of stock photography. But we also do stock videos, okay,
music, okay, editorial work. So a lot of times when you're
looking at magazines are online reports, the photos of celebrities, are politicians or
whatever. A lot of that's our work as well. So, and we
do a lot of branding work too. So if a big company wants to
put together a photo shoot for their product, we help organize that there's a
bunch more that we do, but those are sort of the big ones.
But it is generally around media and having kind of stock bunches of media that
people can can use and purchase for use. Is that true. That's definitely
our biggest, our biggest segment for sure. Cool. And then I didn't
know you guys help organize like photo shoots and stuff too. That's pretty cool
man. Here sneaky tentacles doing all kinds of crazy things. Yeah. No,
I mean that's the capitalist. The rule is adapter die right, So
it sounds like you guys have adapted into a couple of different veins of the
space. So that's cool. So is Shutterstock doing stuff with Angular. That's
where it gets rough. We don't touch Angular at all, okay, but
there is some interesting stuff. I can't go too much into detail because we're
still working on it, but there's some some Cli type things that might be
wandering their way over to the React realm. So this is a fairly new
role for me. I've been there for eight months or so, so before
that, I was the architect for a number of projects doing all Angular work.
So it's kind of fresh being out of the Angular world. And I
definitely miss my friends, like good Frosty here, Yeah, with you all
the time. But the React world is also fantastic with great people in it
too. Yeah. As we're as we're recording this, they're recording React cough,
like we could pop up in the live stream as we're talking. Oh
yeah, they were just doing the announcements on concurrency. It's super exciting stuff.
I'm really excited to see where that goes. Yeah. Well cool.
So it sounds like you architect died quite a bit of Angular, then.
I have done a lot of years of architecture on Angular from one up for
sure. So what are some of the I don't know, what are some
of the things that you're like, I'm James Spiley, I'm good at this
in Angular. What are some of those things that you're like, Hey,
I learned how to do these things really well as an architect. I think
for me it was following best practices and how to really put together a code
base. You know, I've known a lot of the Angular community that sort
of help put those practices into place from the early days, John Papa especially,
you know, being the sort of foundation of the style guide. I'm
a big proponent of the style guide, I generally speak speaking from an enterprise
level, find that even if we don't all necessarily agree that those are the
best solutions, as long as we come together and acknowledge that that's the thing
we should follow. Like, the style Guide's not always going to be perfect,
and certainly we'll make adjustments per company, per project based off of needs,
but having that sort of roadmap really helps developers a lot in terms of
Okay, I'm going to join a new company getting up speed fast. If
I already know that style guide, I can just hit the ground running.
I know a lot of how they do things. I can sort of match,
you know a lot faster and integrate a lot quicker. So that was
actually one of my interview questions for a long time. It wasn't it wasn't
to weed people out. It was more just to sort of feel what their
familiarity was. So I'd always ask if they had read the Angular style Guide.
So let's do some interview here, so let's see if everyone can get
a live glimpse of if a frosty Q pass the Spivy Angular interview. So
you didn't give me that heads up, because I these days you know,
the being a manager of the the questions get very different, right Like now
my position is much more about how they'll fit with the team, the culture
of the personality. So I've had to adjust my questions a lot. I
don't do the technical ones as much. I could certainly pull them up.
I want to see it. Let's just do it. It's a good learning
opportunity for the people listening. Put me on the spot like that. Yeah,
sorry for putting on the spot, but we got to do something.
We'll do a little segment called Interview Frosty and see if I can pass your
technically for you. Actually, I should make that a regular segment. I
bet people would get a kick out of watching me fail this. Yeah.
Sorry, I'm just goin to pull these up here in a minute, since
I've even used them. See, I feel like it's cheating though, because
I already kind of know what you know, Like we've talked about it a
bunch in person, about the stuff that you were familiar with. So it's
kind of like I got to ask you some trick questions. You could trick
me. You should trick me. I don't know that I know any good
trick questions for you though. I don't even like trick quest I think it's
unfair in an interview to actually do trick questions. Uh so let's uh,
you can find them. Sorry, I tried. You try, you can't
find them. It's all right. Sorry, we don't have to do it
would have been cool because I just upgraded to Catalina. I had text Wrangler
is where I had all of them, and now you can't use text Wrangler
on Catalina. Really, the one that I had it needs a I guess
I gotta find another version that's sixty four bit compatible or something. Hey folks,
this is Charles Maxwood, and I just launched my book, The Maxicoder's
Guide Defining Your Dream Developer Job. It's up on Amazon. We self published
it. I would love your support. If you want to go check it
out. You can find it there, The Maxicoter's Guide Defining Your Dream Developer
Job. Have a good one, max out. All right, bro,
we we got to make this part of the podcast not lame. You got
to ask me one question, all right. If it stumps me, it's
better because then the listeners feel vindicated. All right. Uh yeah, I
feel like I want to go get away from core. Let's do how do
you do compound selectors in n gr X Oh geez? Compound selectors? Yeah,
so you just busted me. I know how to do a selector.
I'm guessing that there's a create selector function that I can pass multiple selector functions
to, or maybe there's a combined selector function that I can use to combine
selectors. I would guess that's what I would guess. I don't know if
the top of my head that seems like something the front one and you and
you can even you can even question me on what a compound selector actually means.
Is that just accumulation of two selectors within the same state or is this
talking about combining selectors from multiple pieces of state? There? You go,
Yeah, what do you so? What do you mean by yeah, let's
go, what do you mean by uh? What did you say complex?
What do you mean by compound selector? Compound? Yeah? And I I
typically would just accept two selectors from the same state that you you you derive
a third selector that pulls from those two selectors to create a new value.
Right. And I'm I'm a big you know, I'm a big proponent too
of understanding selectors, because I think that's the most critical way to pull data
from in r X. So what kind of selector did you say? Because
it when you said okay, so yeah, I would guess that you could
create selector and pass it multiple selector functions. Is that? Is that what
you're trying to say? Is that the answer? Yep, that's the answer,
because that sounds like I'm like a from what I know of the rest
of the API, Brandon and Mike you've made it's super usable and Rob and
I mean everyone who's been involved, right, Sorry, I didn't mean to
just put it on them too, but that seems to make the most sense.
I would just pass you two selector functions. Well, And I've seen
a lot coming into projects companies, people don't understand that you can pass selectors
to selectors, and so you'll tend to see just a giant selection of selectors
and then you'll go into some components somewhere, and then you'll see them selecting
every one of those and then doing some combination through RxJS or whatever other approach
that they're choosing. Yeah, which is wildly inefficient. Right, Like all
of your selectors are always mamoist. So you're going to get much faster reaction
times and reuse when you do stuff like compound selectors that select off of other
selectors. Yeah yeah, yeah, yeah, it is more efficient to use
selectors instead of just doing your own combined Latest, although depending on your app,
the combind latest is probably just as efficient. Depending on your app,
everything is dependent, right, Like, there's no one right answer in anything
we do in programming. That's why when it comes to like code exams or
technical exams, I generally speaking, you know, I start every interview as
just saying, hey, this is supposed to be fun, and get nervous.
We're not gonna whiteboard. Whiteboards are silly, Like this is just a
conversation to see what you think you know, and then you know, we'll
write a little code, see where you go from there. Don't even sweat
it, right, Like, this is a good time. Yeah, take
the stress out of it. So like wrong answers, you know, I
asked questions sometimes that I don't even know the answer too. I'm just curious
if they do, you know, and make me something in an interview.
I was like that approach, you know, because Google. Google often did
that, right, you know, in their early days, their CTO,
their founders. They would, you know, they'd go into a meeting room
and say, teach me something I don't know and see if you could teach
them a subject matter they didn't have any familiarity with and get them excited about
it. Right, it's actually in their book. I thought that was really
interesting, right, Okay, Yeah, I like that. I actually would
be interested to go into an interview where someone's like, oh, teach me
something I don't know. That would be that would be intense, right,
It can be interesting. I've been I've been using that one a little bit
lately, just out of curiosity for some people who know, especially more senior
engineers that have a breadth of knowledge that probably my domain doesn't fit within.
You know, everyone knows a little something different or as a specialist in someone
something different. So I always find it intriguing to see, you know,
what are they really passionate about, Where they really want to know, where
they really want me to know, where they really want to teach me about.
You know, I've I've had a couple engineers that are super excited about
functional programming and want to just tell me all about the advantages of functional programming.
And why it's so awesome, and it's like I always find those really
intriguing. Yeah. Yeah, when people get passionate, those those that's when
you learn as if you're like, hey, this person clearly cares about this.
Now it's time to sit down and get ready to learn. So as
a manager, how long you been a manager? Now? Did you say?
Director? Yeh? Director of engineering at Shutterstock. Yeah, I've been
a manager for a fairly decent amount of time. Now I probably say I've
been doing it for I don't know, six years or so, you know,
between previous jobs. I started a company, I was a CTO for
a while, did that for a pretty long time, and then bounced over
to Shutterstock, really enjoying it. So I'm gonna I'm gonna flip the table
a little bit and put the pressure on maybe you sure? So I've been
really like I just I just spent the first half of today at a training
call the including X Project, which is a training with a company called the
Inclusion pro and the Black Chamber of Converse here in Utah. It's all about
increasing your awareness and ability to promote inclusivity in the workplace. It was it
was really good, So let me ask you as a manager or as a
team as a leader. Let's just say as a leader, so you don't
have to focus on management because a lot of the listeners are leaders. As
a leader, how do you help promote inclusivity at work? And I'm asking
that question supposing me and you have the same definition of inclusivity, So feel
free to clarify if you're not sure. But I'm supposing we mean the same
thing when we say that, sure, yeah, I mean inclusivity can have
a range of topics. I think for me, it's making anyone regardless of
race, gender, you know, orientation, all that sort of stuff,
making them feel welcome in the workplace. You know, I'm feeling a part
of the team, and that's actually really important to me. One of my
most important hiring rules, one of the things that will help you get a
job on my team is not having a coding ego, just thinking you're always
right or that you're the rock star that fixes everything. I put in all
my job descriptions that we're looking for team players, not ninjas or rock stars.
I've got a shirt that says I'm not a ninja. You know,
early in my career I kind of had that attitude. You know, I
fix all the stuff, I fix all the problems, and I feel like
it hurt teams more. You know, I thought it at the time it
was you know, we got a product out and made it better, but
ultimately it just made things more difficult for everyone involved, right because you're not
you're not being collaborative, you're not helping grow others. You're just kind of
concerned with yourself. And that was a wrong view. And you know,
I can't take those things back, but I can learn from them. And
so a lot of that is, you know, trying to get a workforce
it's more balanced, has different views that that feels welcome and comfortable to share
those views, you know, so that it's not one person that's like,
got these great views but gets drowned out because they're not a loud voice and
so they don't feel comfortable sharing them. So, you know, trying to
set an environment where that's a that's an understood that we want to be collaborative,
that we want to help raise each other up and build a stronger team.
From that, I I've been inspired by a lot of books that I've
read recently to kind of raise awareness around inclusivity around making people feel they belong,
you know, and uh, it's it's hard to it's hard to do,
you know. I think it's one of the harder aspects of software engineering,
is the communication piece. I mean, I don't think it is.
The harder part of engineering is the communication side, clearly the harder part and
being inclusive, like inheriting places that aren't as inclusive they should be, trying
to leave them more inclusive than than you, you know, than when you
walked in the door. It's important, but it's also difficult and it's also
really scary to talk about loud. What are some of the wins you've experienced
through your career as far as like leaving a better legacy of inclusivity. Yeah,
you know, it's one of those things that you're always going to work
on. Like you said, I think the first step is talking about having
these types of conversations. You know, we've we've talked about it a bit
on this Dot Labs podcast too, and it's about, you know, sort
of building those connections for us. You know, can be anything, right
Like obviously you know, I've I've worked with and been a friend of Tracy
for a long time. And I really live by her model of you change
the ratio. I believe heavily in that. So some of that has come
from hiring, you know, like getting wins where we get people to stop
just thinking there's one type of coder that we're looking for, and you can
be small things, you know, like I'm not going to name names,
but you know, the company had a problem with ordering just Uni sex you
know, T shirts and it you know, doesn't fit everyone right, and
so you were like, well, can we get some female cut you know,
that would be a really big win, and just hammering and hammering and
hammering on that, saying it, saying it, saying it, you know,
and trying to push for let's let's have stuff for everybody's body type,
you know, and that was that We got that, and I was really
happy about that. Adventures and Any is a dev chat dot tv production made
in partnership with hero Devs. Hero Devs is a group of Angular experts who
can help your team code like true developer heroes. If your team needs an
Angular expert, reach out to Aaron at hero dot dev Today. I think
I think it's a thing that more leaders in software engineering need to focus on.
I like that you are willing to talk about it because it can be
scary. I just kind of pulled it out and put you on the spot
for it. My hope is that more leaders, regardless of where they're from,
what they look like, act like, where they spend their holidays or
not, any of the diversity backgrounds that they might have or don't have.
My hope is that leaders can own it because I think the role of senior
engineer needs to expand to include that, and it needs to expand to include
culture, because culture, you know, once you when you're a junior engineer,
you're kind of drinking out of the firehouse, right, and you're kind
of barely able to focus on your own tickets and what you're being assigned,
right, and you don't you're still learning how how to even talk to the
designer, Like you're still just learning your job for like largely, right,
And then once you get into it, you're kind of now graduated to mid
and you're able to focus on your own stuff, and you're also able to
start being aware of other people's stuff even though you don't affect it as much.
But then when you're senior, you're you're now you're looking at your own
team and you're kind of focusing on your whole team. True, yeah,
And I think that that part of that focus isn't just on the technical side.
We also need to focus on is if I'm on James's team, is
James welcome here? Is is Jim's welcoming others here? Right? Like?
Those the both of those aspects, And so I think I think that the
senior engineer role does need to expand generally to include these kind of I think
I think brankly, it's every level, right like, Yeah, it starts
at the top leadership, a CEO, a CTO, based at the bar
for what a culture looks like, and then that trickles down, you know,
and every level can adjust some of that and try to maybe push back
on it if they want to. But you know, everyone's responsible for making
an inclusive environment where people feel safe to challenge ideas and bring new ones and
not scare people out of the industry or or have too loud a voice.
And that's that's an art form that all of us could always be better at.
You know. I'm I'm always learning both from my mistakes, from other
people's mistakes and just in general about as you said, you know, taking
opportunities to go to conferences or or workshops and just learn what it means.
And you know, and I don't think. I don't think I could even
define it really that well because of the fact that it's constantly evolving in my
head how to be inclusive and think about being inclusive. Yeah, Like,
if someone's like, hey, bullet points on how to make things inclusive,
it's tough to make a checklist, right, you could, I could defind
some things. But inclusivity is it's just a way of It's just a way.
It's not necessarily a bunch of boxes you can check. Yep. Not
everyone's going to agree with it, but you know the fact that we try,
right, Like, I think that's why so many people really respect the
work you do with Jie comf. Right is that it's supposed to be a
conference that's truly inclusive. Right, it's the angular community can feel safe together,
learn together, challenge ideas together, and grow together, as opposed to
like, this doesn't feel like a safe place for me to be and I
don't want to be. And you know, I think Angie comp is well
renowned for being inclusive and wanting people to be there to learn and share it
in that together, which is always awesome. You know. I think that's
a really awesome fact of what you guys do. Yeah, I think it's
cool to go somewhere you've never been with a group of people you don't know
and feel welcome, right, Like, have an interaction, and by the
time it's the first night's over and it's dinner time, you're like, Hey,
where are we going for dinner with your new friends that you you you've
known for less than three hours, right, I like, I really really
appreciate about a lot of the different communities I'm the part of, and I
think the angy of the community is one of them. So yeah, you
know, my first time attending injin comp, I was still in the one
dot zero self taught days. You know, I wanted to learn more about
what this you know, two dot zo thing was, and Dan Wallin and
John were doing their workshop, and I was like, I'll take that,
you know, and I've I've been friends with those guys and and you know,
all of you with Angry Angular family ever since. You know that that
one conference changed a lot about how I viewed Angular and the people that were
in it, and I made you know, some lifelong friends out of that.
So it was a really special experience. And conferences in generally, you
know, the in Atlanta is just such a great, great conference for being
inclusive and talking about it and meeting new friends and lifetime friends and so many
others. I mean, there's I could list them for for days probably.
Yeah, well cool, you're in the Colorado area? Am I right in
the Denver area? Okay? So if anyone, if anyone in your in
your area wants to kind of reach out, get in touch with you,
ask for help, ask for advice, or anything else find out about what's
going on a shuldar stock. What's the best way to get in touch with
you? Twitter? Uh, you know, I'm happy to contact with you
on Twitter. You can also add me on LinkedIn. I had a lot
of people on LinkedIn. I love mentorships, So there's you know a number
of people have reached out to me to just say, hey, can you
kind of tell me like how you got there and stuff. I can think
about things I can do, and you know, I'm happy to do that.
I love doing that, so I think that would be awesome. So
share your your my Spivey on Twitter. Is that you right? M y
s P I V E y Yep. Can you guess why my handle is
that way? My spiy with my little eye. I don't know. Yeah,
I have no idea. It's an old school throwback to the early Windows
days. I couldn't think of a username, and my last name was taken
and I saw my computer he used to be Remember, it is all just
my computer on Windows, and so I changed it to my spiby and that
just kind of stuck and it became a thing. Yeah, it's largely available.
Yeah, I've never had to compete for it, thankfully. Yeah,
it's not even get into that always the whole podcast on competing for my name?
All right, baby, yep, that's cool. All right, So
anyone questions reach out to James my Spivey on Twitter. Let's move on to
picks. I have a pick. It's pretty simple. React Coff we've mentioned
is going on right now and there is uh the MC. Her name is
Devin Lindsay, Devon Lindsay. Anyway, her suit that she's wearing to MC
and that is my pick. She has a pretty posh looking suit, but
it's pac Man Maze. Nice Ghosts and the pac Man. So I'm picking
the Valnz's mc attire for reacting off That is my pick. Nice. I
will share picks in the show notes if you want to see. Yeah,
you got to pick anything you could pick and share with the with the podcast.
I think one of the things I'm most excited about right now is that
Basil Onondato just got released. I think that's a big step. You know,
Alex Eagle and everyone at Google that's been working really hard on that.
That's going to be a super sweet tool that I think a lot of people
in the industry are really going to like. You know, I know there's
like Pants and some of the other ones, but Basil basles my jam.
I'm a Google guy through and through, so I'm excited. Yeah. So
a guy actually on my team Hero Devs. One of the guys on my
team, you know, Jorge. I don't think I know him. Awesome,
So yeah, Jorge, he just finished writing his book on Basil and
we're working at translated into English. He wrote it in Spanish, so that's
cool. I'm a exvan of Basil as well. So anyway, James,
appreciate you coming on the show. Thanks for chatting and sharing some of your
knowledge in the industry. And to the listeners, I will say thanks for
listening and we'll see you next time, See you later bye. Bandwidth for
this segment is provided by cash fly, the world's fastest CDN. Deliver your
content fast with cash Fly. Visit c A, C H, E,
F l Y dot com to learn more