Hey everybody, and welcome back to the Ruby Rochs podcast. Man, I'm
missdoing this, it's been a little while. I'll give you all a rundown
in a minute about what's going on. But yeah, today on our panel
we have Dave Kamura, everyone and John Efferson and yeah, I'm Charles Maxwood.
So essentially what happened was the COVID situation with the schools. My older
two kids go to school that's like KA through nine, and then my younger
kids go to the other school that's K through six. They've been going to
since my oldest started school, and the school that they go to they decided
to go half days. Every school did something different is probably not surprising to
anybody who has kids, but anyway, so they scheduled the carpool right during
this call, and then my wife wound up volunteering to help get lunches out
at the other school at the same time. So I haven't been on because
I have been in my car. So we finally got around to rescheduling this.
I'm going to have to do the same thing with Javascrit Jabber incidentally,
but they asked her to continue with lunches through the end of the year,
and so yeah, we picked a new time for Ruby. Roagues is what's
going on? So probably more than you wanted to know, but that's where
I've been. I've been in the car anyway. I kind of set this
one up this week just because I've been thinking about a lot of stuff and
we didn't have a guest scheduled for this week, so I thought I would
just jump in and talk a little bit about this stuff and just to give
a little bit of background. So I started talking to folks and trying to
figure out what they wanted from the different podcasts and what they were looking for
and what they were struggling with. And one of the recurring things that keeps
coming up is how to keep current, right, how to stay on top
of all the things that are changing. And I think we're a little bit
lucky with Ruby in that we're not frantically trying to keep up with what's going
on in Rails or Ruby or anything else. Of course, we're going to
have a big Ruby release here on Christmas, I think, is the rumor
anyway. But yeah, so people keep asking me that, and then I
ask them, why, right, you know, what's the outcome? You're
looking for right as far as keeping current, and people also have like JavaScript
stuff to keep up on and stuff like that, right, because most of
us are doing webdev. And so it was, well, I want job
security or I want to get a better job. Usually it came down to
something like that, and so I started looking at, Okay, how does
that work? You know, how does that come together for people? And
a lot of the junior folks also kept asking me, you know, how
do I become a senior developer? Right? How do I get to that
level? And so all these things started playing together in my head and I
realized that over the last several years, either as a contractor or as an
employee. In fact, for the last probably ten plus years, the last
couple of full time jobs I got before I went freelance, most of my
freelance clients and then the job that I recently got to pay the bills,
the interviews went something like, we like your content, do you want to
work for us? Right, even if I applied for them, And so
I realized that essentially, then what a lot of this boils down to is
it's not it's not getting the senior developer title per se, but it's really
you know, are you contributing to your team at kind of a most valuable
player level? And so I bought most Valuable dot dev as a domain and
I was looking at putting some stuff together and somebody asked me, well,
what's the most valuable dev? And that's what I want to talk about.
So long winded, sorry, but that's what I want to talk about,
is what that looks like. And when somebody asked me, I essentially kind
of rambled for like ten minutes that I'm not going to do for you guys,
and then I said something about, well, they should be in the
top five percent of developers available for whatever company they're working for. And that
really helped me narrow it down because it's like, Okay, what are the
top five percent doing that everybody else is not doing? And so I'm curious
as we get started. I have some ideas here, but as we get
started, So for those top five percent, right, the kind of the
top end developers that you work with or maybe people tell you that you're a
top five percenter and you know the things that they look to you for,
what is it? What? What are the top five percent of developers the
ones that are kind of the can't live without experts that are on your teams.
What are they doing that everybody else is in't doing. I think the
one one of the biggest traps that a mid level developer gets into is that
it's the way they've always done it. They never explore outside of what are
other options. It's just they've always used carrier wave and the sorcery gym,
and so that's what this a new application needs to use as well, you
know, just for the sake of the developer and familiarity, instead of what's
best for the product, what's going to be most maintainable long term. I
think a lot of traps that we get into as developers is we think about
right now and we don't think about the maintainability far in. And so I
think that's one big thing that kind of separates a developer from a higher level
is that a higher level developer is thinking about what's going to be the best
tool to solve our issue right now, and one that three years from now
we're not going to look back on and say, why did we do it
this way. It's going to be something where they don't even think about and
those are the good decisions that we make in that application are the ones that
we take for granted, the ones that we don't even think about. And
so I think that a lot of issues where you have this professional junior developer
or a lifelong junior developer and I say junior in the sense of they never
really step up to the next level so they could be the lifelong normal titled
developer or the lifelong senior developer, is that they never stick around long enough
to actually see these changes that they and decisions that they are making today,
how they play out and affect the future. Yeah, I like that.
I like where you're going with that, John, Do you have anything to
add? So, I think one thing that I would say, So the
first thing that I wanted to say is I definitely want to concur with Dave.
Though I've always described it a little bit differently to people. I always
like to tell people that for me, you move sort of from being a
junior to a mid level when you sort of like in your bag of tricks
you have like a one tool for just about every job there is, right,
and then sort of for me, the demarcation between like the senior and
the mid level DOV is kind of more like as a senior, we understand
that there's a lot of different tools that I could be using for a job,
and we understand and we've mastered the trade offs between using those different tools.
And so I mean this is this is total concurrence to what Dave is
saying, right, Like, as a senior, you kind of move as
you begin to understand why I would use one of these tools and why I
wouldn't. So so for me, that's kind of like how I've always explained
it, and that that helps me also to better recognize people that are for
me, That helps me to recognize people that are moving from that mid level
to that senior and the junior to the mid level thing because you can more
proactively see that kind of effort going on by somebody. But yeah, there
are But separately, there's like a ton of different hang ups that you can
have, right, there are so many like flaws For me, I think
it's more interesting to look at for me in particular, I think it's like
more interesting to look at like as far as like what makes you a senior
DEV sort of like those positive aspects. So there's a lot of things that
we associate with being a senior DEV, like maybe you mentor people, or
maybe you output a lot of code, But I don't think any one of
those things makes you senior in and of themselves. I think it's you need
some sort of mixture. I guess I never really thought about it from like
most valuable dev standpoint, and and I over the course of this conversation,
like that's been kind of polluting my thought space. So my apologies for all
that, guys, because I think it's an interesting take because it kind of
fits. It kind of fits like how I've associated with, which is like
I want I always want to see before I like look at somebody as being
a junior, somebody sort of creating like an identity for themselves, like they're
gonna be good at these things, and and typically they also know what their
weaknesses are and they're okay with that, and then they like find a way
to solve for that. So, for example, I'm perfectly capable of doing
front end work, but I don't really like front end work, so I
just don't. So typically when I go to a place, like one of
the first things that I always try to do is find a buddy that kind
of likes that stuff, and then I'm like hey, I'll take some of
this back and work from you. Right, And you could say, oh,
that makes your back end dev. But I've literally never been worked anywhere
where we've had that demarcation, you know. So I think one of the
things that's really important is learning what your weaknesses are, learning how to cover
them up, learning what your strengths are, being willing to put those forward,
Like I feel like, creating a package around yourself, an identity for
yourself, and learning all of those soft skills. Like I think the most
important aspects of being the senior developer are all the soft skills. You're just
a strong From my perspective, I feel like you're just really a strong mid
level dev when when you're like, look, I put up tons of code,
but that's like all I do. Great, that's fine, like that.
We need people that contribute a lot of stuff. But I feel like
it's all of the soft skills that like turn you that like kind of push
you over the edge into senior most of the time. That's just where I
come from, And I know that that's also not the definition. I mean,
the definitions are different in different places. Yeah, so well, that's
that's why I have a problem with senior DEV. And so when people start
talking to me about wanting to be a senior DEV, I immediately pivot to
you know, top five percent or most valuable DEV, because yeah, everybody
kind of sets that a little differently. Some companies have like different development tiers.
I know, the place I'm working, they have you know, levels,
you know, so I'm a level whatever DEV and things like that,
and you know, ultimately I'm trying to kind of consolidate the definition a little
bit so that it's, hey, look, you know this is this is
how you kind of stack out and where I see it. You I'm like,
I should have gone first, because you guys said two thirds of what
I was going to talk about with this, And the first one is you
know your your technical capabilities, and I think Dave, both Dave and John
both of you put out, you know, a really great way of explaining,
Yeah, the kind of the technical level that we expect people to operate
at for this right where they they understand the technology, they understand the technical
choices, they can quickly evaluate different options if they're not familiar with them,
they can make the calls. A lot of times those calls are instinctive you
know, because they you know, they have spent the time and put in
the work to understand the systems that they're working in, you know, be
at rails or something else, and so I see that definitely. I also
agree with John that for the most part, anymore, since we're working on
teams, that level of expertise needs to be able to be communicated and it
needs to be able to be shared throughout the team. And so if you
aren't capable of working in a team anymore, the first part, it's I
don't want to say that it's completely wasted, but it doesn't have the amplify
effect that it does if you are a capable leader or a capable mentor and
things like that. So I definitely agree with you guys on both of those
counts, because yeah, I mean they're critical, right, yeah. And
I think it's also important to note a couple of distinctions that a senior developer
is not necessarily the subject matter expert, so they may not know the entire
domain. They're just really good at understanding requirements, building out architecture, understanding
how their decisions will affect things in the long run. So you could have
a junior person come on board and provide so much insight, valuable insight into
requirements and direction if they are the subject matter expert in that particular area.
And I think that also a thing that will really distinguish a good developer versus
a more is that it's a quote from Martin Faller, any fol can write
code that a computer can understand. Good programmers write code that humans can understand.
Right, So if the code that you're writing is just all tangled and
just kind of pushed together to just get that code to work, but it's
not maintainable, then it's not really good code because humans are going to have
to come back and understand it to maintain them. Yep. Absolutely, I
want to throw out the third thing. So there are three things for me
that make kind of this most valuable dev or top five percent dev and that
that's involvement in the community. And I know that not everybody wants to write
open SOCE source code, or write blog posts or do a podcast or do
videos or things like that, but I mean even just showing up to conferences
and having conversations with people, and you know, just being out there is
a huge step that a lot of people don't take, right be it at
local conferences or you know more I guess not local conferences, so the big
conferences, but you know, they're the ones that are getting out there and
speaking. They're the ones that are getting out there and putting content out.
And the reason that I have a focus on this at all is because people
do talk about that level of job security, being able to level up,
being able to go get the job that they want, and things like that,
And that's ultimately the outcome I want is I want to lead people to
the place where they are in a position that they want to be in working
for a company or themselves. But you know, whoever they want to work
for, they're working for and they are contributing at a level they want to
contribute to, and then that is feeding back into the rest of their life
so that they have the freedom to go do whatever whatever else it is that
they want to do. Right, So if it's you know, raising kids
and you know, being there for all of their kids' stuff, or if
they want to go surf on the weekends, or they want to travel the
world or whatever or else, right, I want people to be able to
kind of find their dream job, but their dream jobs that supports and sustains
the lifestyle they want and so, and I find that it makes it a
whole lot easier to be able to do that if you've got some form of
content out there, and so that that's kind of the final piece that I'm
putting to this. Yeah, I've seen a lot of developers who are by
no means senior even still just push out so much content. They're putting out
blog articles, they are getting on podcasts or other places, just really getting
their name out there. And it's surprising how much just that social engineering aspect
of it can really raise the bar where people view you at just that name
recognition. So these developers, they're putting out some good stuff, you know,
because I think one of the best ways to grow as a developer is
to get feedback. I know, when I was doing development completely solo,
where no one was viewing my work, I made a lot of compromises,
and because no one was looking at my code, then there was no one
to criticize it or to help guide me. And I think that was one
of the biggest mistakes that I made early on, was to not seek counsel,
to not have a mentor to not have others even at the same level,
because iron will sharpen iron, and as you are working with someone else,
they're going to have a different set of eyes, a different insight,
and that's going to be really important to your own development growth. So I
actually want to take this on slight tangement too, because I think so we're
talking about content here being like one way right that you sort of connect with
people, get your name out there, things like this. I'm probably the
least prolific content wise of the three of us, but there are other ways
to do this too. So you noted, hey, iron sharpens iron,
right. So one of the things that I used to do a while back
before Charlotte Doves existed, even is I used to go to like all these
meetups and people in my town knew who I was and gave me respect despite
the fact that at the time I had basically no content to my name.
I wasn't you know, there wasn't the Charlotte Doves organization. I had literally
nothing behind my name. But I was going to these meetups all the time,
and I talked to people and people heard me say things, and over
time that built up respect too. So I literally just showed up to stuff
right, and that also garnered respect as well. Obviously as time we're on
you know, started Charlotte Doves, you know, which is an organization.
That's another tech I think that you can take too, right, is create
a space for people. But but yeah, I mean literally, it's a
It can just be as simple as just chatting with people. And I was
also going to mention one of the things like I have found as I've mentored
other people is that I develop respect for my mentees over time. So I
wonder how much of that happens as well, that finding a mentor can create
some of that. I was trying to think as we were talking along about
other ways that you could do similar types of things without necessarily because not everybody's
a content creator. Those are just ones that popped up to the top of
my head. Yeah, definitely, I mean, and I'm glad you brought
up the meetups as an example, because we need people at the local level
just as much as we need people at kind of the global level, and
a lot of times those are going to be the people that are Yeah,
they're mentoring people there, they're getting to know people, They're solving problems for
people because a lot of the people at kind of the higher level, they
feel like they're out of reach a lot of times. And so I'm much
more comfortable after the meetup walking up to somebody and saying, Hey, I'm
struggling with this, how do I learn it? Or Hey, that was
a great talk. I want to use this at work. How do I
do it? As opposed to some of the other things in their workshops.
Like I said, local conferences, there are code camps that all tend to
happen locally. And then you brought up organizations and a lot of these organizations
will have a Slack channel or a forum or an email list or something like
that, or you can participate there. And again, you know, you
can become well known and prolific locally by participating in some of those. And
so as you help more people out, as you make more of a contribution
or just ask good questions, a lot of times that will lead you down
the path of getting a little further along within the community than you would have
otherwise. And I do want to circle back to the topic that we were
discussing before with the junior kind of vers senior is that one stranging that found
is that not always will a senior developer or the best developer on the team
be the person leading the team, and that can be a real struggle because
there's going to be tension if you don't have the best person for the job
leading the team. And sometimes that's actually a good thing. If the better
developer is not a good leader, then they're going to just kind of take
that software into the garbage. But when you do have someone who just happens
to be the team lead, but then you hire a teams that team of
people where there are better people suited for the job, then you're going to
have some issues in the dynamics of that team, and more specifically between the
senior developer and that team lead. You're going to have a lot of issues
in those dynamics. And I hate playing any kind of corporate politics. I
think it's just a waste of time. I think it's horrible and it just
should never happen. But unfortunately that's kind of what you have to do in
a corporate world. But I think trying to keep your focus on the code,
what's best for the business, what's best for the team, is always
going to not only protect you, but it's also going to be better in
the long run, because one, you were backing your thoughts with intelligent and
factual things that can be shown as this is the way we should be doing
it, versus what this team lead who's not as good of a developer is
saying that we need to bring this in because we did this at my last
job, and my last job, you know turned out fine. Well,
you're kind of not at your last job anymore, are you like working on
the same app? Yeah, yeah, so yeah, that's just kind of
one thought that I have around there. And it's a difficult situation. And
I think as we start working with other people, we are going to experience
these difficult situations either sooner or later. And I think one suggestion or advice
is don't be so easily offended by a difference of opinion. You know,
having a difference of opinion, you can use it even if you are completely
in the right, you can use it to grow because it's a there could
be a chance that you're hearing a different perspective, and there's always some good
things to be taken out of a different perspective. Yeah. Absolutely, But
ja I was gonna say, I think it's it's also probably an opportunity for
you to level op those communication skills as you're trying to navigate right, especially
when when egos are involved. It's just it's difficult and it really sucks to
where through. But yeah, communication skills matter. You can say literally the
same thing. You can have two people saying basically the exact same thing,
and how they say it, you know, will make a difference. One
person will piss off somebody and the other person will will not. You know,
so I know that I have had plenty of cases where I'm like,
trying to deal with somebody that's stopborn, maybe it would be a good way
to put it right, or you know, just not really like you said,
not everybody on your team one hundred percent of the time is always thinking
about the business. Sometimes they're like, well this will make me look good
or whatever it is, or they just like a thing, they love a
technology or whatever. Lots of personal reasons why somebody might not be thinking to
go to the business. And if you're able to make the argument, you
know, that'll often help you to win the argument, which might be important.
But if you also think about you know, hey, do I care
about this person, the relationship with this person you know, for example,
maybe it can be a selfish thing of do I really want this person to
be pissed off at me next week? Right? You know, maybe that
will evolve your conversation such that you might decide not to make them angry,
or you might you know, talk about the stuff in a better way.
And that's opportunity for you to work on those soft skills that and I do
believe that people that are kind of better at navigating those scenarios over time,
like they tend to garner respect as a senior developer. I think that is
one of the markers of that. Yeah. Well, and what we're speaking
to, and I think you've both alluded to this, is that leaderships and
leadership skills and technical skills are not necessarily the same skill set, right,
and so your ability to manage up, manage laterally, and manage downward.
There's a terrific book, by the way, called The three hundred and sixty
Degree Leader that talks about all of this stuff and walks you through a lot
of this stuff. I'm trying to remember who the author is, and I'll
probably just look it up and tell you in a minute, But I mean,
that's the deal. Right. And so you may be a great team
lead and may not be the most technically qualified person on your team, right,
But then you've got to be willing to accept the responsibilities that come with
your leadership role and at the same time defer in the areas that you don't
have the expertise in or don't have as much expertise in, and not necessarily
defer in the sense of just let them have their way, but again,
lead the conversation and keep things focused on how do we succeed to what we're
doing. And if you can do that, then that's a big part of
being this kind of a developer. Yeah, in a team game, right,
yep, it doesn't really matter if you are literally the best, you
know, the best developer that has ever existed, if you can't get the
project across the finish line. And when you're playing a team game, it's
typically because it's something that's much bigger than a single person can get done themselves.
So if you're really amazing coder, but but you like kind of you
know, stomp on everybody else around you, right, Like, that's going
to get in the way of your team. So one of the things that
like it's really important in a team game is are you sort of enabling the
people around you as well as yourself? Yeah, I just to make a
sports analogy. There are two things that I want to point out. One
is it that in most sports they count assists as much as they count scores.
Right, So I'm a big soccer fan. Whoever passed the ball into
the middle of the mess, they get a stat, and then the person
who puts it in the back of the net also gets a stat. The
other thing is is that if you're playing the role of the coach, you're
not going to score any goals, right, but your job is to make
sure that the team is winning the game sports, all right, Yeah,
I'm gonna push us a little bit to a little bit different place. And
this is kind of the throat of the focus that I'm going to be pushing
all of the shows at devchat dot tv toward as well as I'm working on
a course. And I have kind of a soft announcement at the end of
this episode, but I want to talk about how we get there, right,
because it's one thing to kind of you know, we've kind of set
this definition out there, right, top five percent developer needs to be able
to do these things or have these skills or you know, and I don't
even know that they necessarily have to have all of them, but they're going
to exhibit a lot of them. Right, But how do you get there?
Right? So, let's say that I am this mid level person or
I don't even know how to evaluate where I'm at, or maybe I'm a
junior person and I'm stuck at this job and I don't know where the opportunities
are to even grow, learn or move up. I mean, how do
I get from there? From here to there? Right? What kinds of
things should I be doing to move myself along this path so that I can
be that top five percent developer. I feel good about the contrby I'm making
to the team. I feel good about the contributions I make to the community.
And I have this job that is working for me as much as I'm
working for it. I mean, watch any kind of movie where the main
actor is, you know, just been discovered and then by the end of
the movie they are the cong Fu master. So you know, I think
Karate Kid. So yeah, Daniel Huusso you know, if you like the
old ones where he's just this little kid getting beaten up all the time,
and at the end of the movie, you know he's taking down the kids
that were beating him up. It didn't just get from start to finish.
There's a journey, so don't miss out on the journey. And I think
that's one of the biggest things. It's important to keep focus on the end
result, what the outcome is supposed to be, but don't miss each step
in between, because you lose a lot of valuable lessons if you try to
jump ahead. And one of the very first things that happened on Daniel Hurrusso's
path to growth is a mentor. He had a trainer, someone who wanted
to help him, and someone who wanted to see this person grow. So
I think having some kind of mentor that you can ask questions and get feedback,
and even when the feedback might hurt your feelings, to know that this
person is trying to help you grow into a next level developer or Ninja Ninja
montage. Well, that's funny that you say that, though, because I
think a lot of times we kind of envision that montage right instead of all
of the work right, So we see Danielson waxing the car but we're not
sitting there for hours watching him wax every car, right, We're not there
every time when he's you know, going to the beach with mister Miyagi and
you know, doing whatever work. We just kind of see outtakes, and
I think a lot of times we get this idea in our heads that we're
going to have a montage growth trajectory instead of realizing that he was out there
on the beach every day he was, you know, he spent hours and
hours and hours painting the fence. Anyway, John, what were you going
to say? No? I mean at first I wanted to make my joke,
but sorry, I killed the joke. No, No, I said
the montage thing that was? That was it? Oh? Now, I
get request from people all the time randomly, right, and they kind of
go a little bit like this. They're like, well, hey, I
want to how do you do this thing right? Or how does this thing
work? And I say, well, here's a basic understanding, you know,
and that'll get you pretty far. And so maybe there they immediately sense
there's more to it, and they were like, well, is there a
five minute video that I can watch that explains everything so that I can just
consume that and understand it right, and and then I'm like, no,
it's just it doesn't like you. You often get like an incomplete understanding,
and that is the thing that you work with for a while, right,
and then you sort of grow this better understanding over time. I think there's
I don't I don't know if it's caused by something, but I definitely feel
like a lot of people just want to come in, watch a quick video,
reach a blog article, whatever it is, and then they're immediately a
master of the thing, and you can get You can get pretty far with
a lot of these blog articles, right, You can get a lot of
knowledge things like that. But I think that people are definitely asking to get
way more out of these things. Then then you can get that way.
You just have to practice, Like I think that's really Dave's point here,
like literally a practice. Yeah. And one thing you know to kind of
go alongside that is, you know, if you do have someone that's helping
you out a mental or and stuff, a mentor is not there for you
to just go and ask questions all the time. One of the best ways,
and this is just for me personally, others are like this, but
not everyone is I do really well just banging my head against the keyboard,
you know, to just struggle and struggle to try to figure something out and
always get it figured out. So it's not like that it is an impossible
situation to resolve. But having that time of going through the ninety nine ways
to find out how not to screw in a light bulb to then finally figure
out the one right way to do it, you know, it's a learning
experience that now you know ninety nine ways not to do something. And I
think that if you just go to a person who is giving you the answer,
like, oh, you just need to like this, they don't go
too far into here's the ninety nine ways that you don't want to do it.
Number one, you probably tune out because you don't want to hear the
ninety nine ways. You just want to know this one answer. So having
that time on yourself to struggle and to really you know, get your rubber
duck out and explain it to the duck. You know, here's what I'm
doing. Here's it's not working. You're not going to just sit there and
tell the duck my code's not working. It's not working, like well,
you know, you have to explain to the duck, like what's going on,
Like what approach if you tried, what are what are the things that
you're trying to do, what are you thinking about, what's going on in
your head? You know, explain it, read it out. And I
think that's the issue I see with a lot of more junior developers right now
is that they want that montage, as you were saying, Chuck and John,
that they don't want to go through all of the effort that it takes
to really learn the stuff. They just want the answer and then they will
move on. The problem with only getting the answer for that particular issue is
that you're not getting any of the theory. You're not getting any of the
in depth background knowledge around it in order to then be able to adapt it
to the next problem. That's very similar, but it's just tweaked a bit
differently, because then you're just gonna be going back to that mentor or to
that person you're asking questions to and asking them the question again, and to
that person, they're gonna hear the exact same question. It's like, well
we just talked about this last week. You know, you're asking me the
same thing it's just a little bit different. You know, just do make
the necessary adjustments, and you're gonna start wearing out that mentor to where they
don't want to help you anymore because you're not helping yourself. So that's it.
That's what I had to say. Yeah, well, and it's interesting
too because I'm going through this right now with project at work, and essentially
what we're doing is the rest of the company has this set of React components
that are styled in a particular way that you know, they've built these other
websites with, and they want us to start using them and incorporate them into
our rails app. Well, they're not really in a convenient format for us
to use because they're not in an NPM package. They're yeah, they're not
really in a GEM or anything else. And so we've been building this GEM
to make it easier for people to use these these React components and then to
actually, you know, we created a form builder so that you can just
kind of rails weigh it and not really care that you're React under the hood.
But I mean, we've had this big long learning curve with Webpacker,
right and it's like, oh, that didn't work. We're getting this air
and then we kind of move on to Okay, now we're getting this other
error. And so by the time we're done, we're sitting here going,
Okay, we have a much better understanding of how the react rails gem works.
We have a much better idea of how webpacker works, and we have
a much better idea of how to include these pieces of things into our rails
engine and how the rails engines work. And so yeah, if somebody had
just given us the answer, I mean, we could have copied it all,
but yeah, we wouldn't have picked up this knowledge that surrounds all this
stuff so that we can make the right call later. Yeah, and that
all becomes part of your big blob of the knowledge that you have. You
know, that's different from person to person, and it's super cool. I
don't know. I I definitely I have experienced this kind of frustration before as
well with Minte's, and I've also I don't know, but I actually feel
I actually have like sort of a different problem with Mente's in general. So
and maybe it's just the kind of mentees that I've run across, but I've
also experienced the kind of situation where the mente sort of they they're trying so
hard to not ask you questions, right that they literally never come back for
help, and so they're off on these wild goose change chases for long periods
of time, and you sort of so the rhythm becomes different. Instead of
instead of them constantly asking me questions, I find myself with this type of
mentee chasing after them and being like, hey, what's up, and they're
like, oh, hey, I had this problem, so I went here
and then you know, instead of off down some deep rabbit hole and you're
like, well, hey, you know, you could have bailed out up
here or something like that. But I often find that, like time boxing
works for that kind I mean, different people have different sort of like personal
things that they do or in habits, and you kind of have to deal
with different people differently in my experience, but for that kind of mentee,
right you, I often find that, like you timebox, you're just like,
hey, you know, if you spend two, three, four days,
I mean I usually don't let them go past one or two, but
you know, if you're spending multiple days on something, you should bail go
talk to somebody. At that point. There's different kinds of problems I guess
is what I'm trying to get at, and you find different solutions to help
with those different mente problems. Yeah, absolutely, I agree. I think
that we do find that trap where someone's afraid to ask questions, whether because
if they ask a question, then that means that they are not as good
as what they thought they were, imposter syndrome, sits in and whatever.
And I think that's something that we need to get over. I get into
that trap myself where I have an issue I just I can't figure it out,
and you know, being able to humble your self enough to ask a
question or say I need guidance. No, I don't want the answer,
I just need guidance. And that's something that you can't read in a book.
It's something that you have to, you know, learn how to do.
And when you do go to ask questions, make sure that you know
what you were wanting, what the outcome is, you know, don't just
say something's not working. Know the issue well enough to be able to explain
it clearly. Speaking of rabbit holing, I feel like we're kind of rabbit
holing on this mentoring thing. Great discussion, Yeah, I love it,
of course, But I think the point is that mentoring others as well as
being mentored by others is a good way to level up. I think both
aspects give you some stuff. I know, I, for one, as
somebody who spent most of their career, especially the early part of it,
with no me ers whatsoever, and I have only gotten mentoring late in my
career. I really wish that I had gotten mentoring earlier in my career.
It's been super helpful in these past few years, and I really wish I
had done it sooner. So I definitely always highly recommend that to people.
And it's good to find a mentor outside your organization, but you should be
able to find one inside your organization. If your boss or the manager you
report to is not technical enough to mentor you, they still have probably some
valuable information to share, but you should look for someone else to help guide
you, to help build you up. Because a lot of times, as
we're working on code for a company, you can't really share that code outside
the company, so you need to find someone internal that can help shape and
mold you. Yep. Yeah, and it doesn't have to be the same
person either, and it's funny because you know, especially for my early your
career, listeners to this show have met my mentors. Right. My first
job, I was working with Nate Hopkins and got to be really good friends
with Eric Berry. And then after I worked with Nate for a while,
I wound up working with David Brady and I worked with him for a year
and then we've actually you know, collaborated on some other stuff off and on,
and so yeah, it's interesting just from that standpoint of, Okay,
you know, I kind of was put in a position where I worked with
Nate and so I got to be mentored by him, and then you know,
as things moved on, you know, I was mentored by other people.
And I've also found that the podcast and going back to the community idea
the podcast early in my career, Ruby Rogues will be ten years old in
May, Right, I got mentored by James and Josh and Ovdy and David
and anybody else we had on the show, right, and so I could
go and find those mentors. Before that, I was doing the Rails Coach
podcast and I talked to James, talked to Greg Pollock, who actually mentored
me on podcasting, and so you you know, and maybe it was just
one offs with some of these folks right where we did an interview and that
was it. But I had the opportunity to kind of learn some of these
things from some of the best people at them at the time. So it
doesn't have to be all at once, it doesn't have to be the same
person, doesn't have to be somebody you work with, And you can create
these opportunities too by doing different things. You know, whether it's contributing to
open source project that somebody you want to be mentored by works at, right,
or whether it's doing a podcast and you just talk to them, or
I mean, any of these things work, and so it's just a matter
of figuring out how to get in front of them and make it worth it
to them. Yeah. Right, So we're all senior developers now, right,
mostly consider our hosts that way, right. I mean, even the
ones that are like, well, I've only been doing this for a year
too. I just I see them leveling up so quickly because they are They're
talking to a lot of times the best people in the field and learning in
those ways. So, yeah, it was a joke, but you know,
I found my biggest struggle is that I am my own worst endime,
whether it was me trying to figure something out, or my lack of attention
to something, or my lack of focus on the task at hand. Now,
I'm not saying that you have to work day and night in order to
become a good developer. You just have to have good focus and to not
stray off. You'll still get there, they'll just take you longer. Yeah,
Yeah, I think there's a balancing act, right, So you have
to do some amounts of demonstrating of your skills for the purpose of getting a
good job and things like that, right, But really, at the end
of the day, to be a good developer, you need a touch of,
if not a lot of right humility and the ability to to understand what
you're not good at. And so I don't I mean, that's just a
struggle that like we all work with separating the the resume and interview self,
right sort of from the person that shows up to collaborate with other people.
Yeah, because you don't want to be thinking that you're the best. You
also, at the same time don't want false humility, because that's that's how
you end up in the place where you have you know, imposter center and
all that kind of stuff. So it's it's a dance, and it's really
hard, and I think that most people struggle with some aspect of it or
another, and that's normal. And I would also say don't be intimidated by
others because number one, if they are above you in a development level perspective,
they've been where you were. But also, you know, just as
an example, all of the Drift and Ruby videos that have put out,
these are not just a oh, I want to record this episode, so
I just go in and do it. I do a lot of research for
every single episode on what is going to be the best information to share with
the listener. So it's not something that I just whip up and do.
And same thing for blog articles. They don't just start typing away and then
the issue. You know, the blog articles done with all this code that
they just hand wrote right there on the spot. A lot of research went
into it. So all of these people who you may look up to and
stuff are putting in a lot of effort and time in their research to then
show you the final draft. No, it's that you know, Daniel Russo
at the beginning of the movie and the Ninja Daniel Russo at the end.
Now, that's the process that we go through when we publish out content.
It's not just a quick take and we're done. Yeah. Well, the
other thing is is, you know, he went to the tournament and he
didn't win the tournament in one bout right. He had to go fight each
round. And that's I like what you're saying, Dave, because yeah,
I mean each stage takes some work, Each stage takes some prep, each
stage takes some research, and at the end of the day, I mean
you you kind of pick some battles and you go and you fight one and
then you fight the next one, and you know, you learn and you
overcome and you level up. And yeah, it doesn't it doesn't all happen
at once. And so yeah, if you're looking at being the next dahh,
that's fairly intimidating. But at THEHH level up one stage at a time,
just like everybody else. One other thing I want to talk about though
here just before we wrap up, is we've kind of focused on leveling up
on the technical skills, but what about those soft skills, you know,
the teamwork skills, the communication skills, the leadership skills, you know,
there's not really technical documentation for that. There are great books out there,
I will say, and that's kind of where I've learned a lot of this.
But do you guys have other recommendations for learning thees, practicing thees,
leveling up the knees, that kind of thing. I would say, First,
get your resume up to date, you know, work on your resume,
because you can learn a lot about the soft skills in communication by updating
your resume. And specifically, I'm talking about being able to clearly communicate and
concisely communicate, because your resume is going to be the epitome of clear and
concise communication. When I was hiring, I was reviewing a lot of resumes.
Some resumes would be three pages long, and I got one that was
over ten pages long, and wow, that right there. My very first
impression of this resume was this person has a real problem with clear and concise
communication. So what you'll find is as you go to review and edit your
resume is that it's not a one time you sit down in then you're done.
You read through it. You missed the semi colin, you missed the
period, you miss whatever you need to reword this it's not clear, you
give it to someone else to review, and after several weeks then you have
something that is clear and concise. And that's how you should really tackle a
lot of these soft skill things. When you're asking questions, when you're giving
in answer, is are you conveying the point that needs to be conveyed clearly
and concisely, because then people will listen. If it's easy to listen to
you, then people will listen. If you make it to where people's heads
are spinning, they might be listening to you, but they're not hearing you.
It's going in one ear and out the other, and they're just tuning
out thinking about what they're going to do after that meeting or whatever. Speaking
of resumes. Speaking of resumes, actually ran across a sweet article on stack
over flow of blog. It was Thanksgiving weekend. I think that I'll add
to the show notes I was gonna After you said, I was like,
I'm totally recommending that thing. It was probably I don't know. I've always
struggled to give people a resume guide that I think will actually help them,
because I think most resume guides are full of like either vaguees that you know,
people really can't wade through. If they're asking me questions about how to
improve the resume, they already didn't understand these vagaries, right, or or
it's like stuff that doesn't really apply to developers in particular, things like that,
and this particular one is geared towards developers. It gives a lot of
really useful tips to both seniors and juniors. It was just really really well
done and I literally have never seen an actual applicable guide, So I'll definitely
recommend that. But yeah, resume point nice one. Did you have any
more? Dave? Before I know, go for him? Man. So
I was I was thinking one of the things that I personally found helpful for
me was to and I do this for a lot of things in life,
right, I am like, hm, I want to improve this aspect of
my life. I go find somebody that I think does a good job at
it and probably stalk them a little bit too much, not really, but
like I I literally think about what it is that that makes them work,
and I try and mimic a lot of that stuff, and you know,
just incorporated into myself. And I'm sure a lot of people do this kind
of thing, but I definitely consciously do that. It is definitely a process
that I recommend when you're like recognizing something is not you know where you want
it to be. Right. So, if you want to be like a
senior developer, I mean, invite them to beers. Talk with them all
the time, you know, get one of them to be your mentor like
do do the things that give you the opportunity to watch them and or just
like hear them talk a bunch, learn more from them. Yeah. One
other thing that I'm going to throw in on that, John is a lot
of folks what they wind up struggling with. And the reason that I started
by talking about, you know what is kind of a top five percent developer,
what's a most valuable developer is that they don't have a clear idea what
they want right. They don't have a clear idea where they want to end
up. And so what winds up happening is is they start just thinking,
Okay, well, I just want a better position than I have now.
And the reality is is that you know, in a few years, yeah,
what do you want to be? Where do you want to be?
Do you want to be a CTO of a startup? Do you want to
be working for a really big company. Do you want to be contributing and
speaking at conferences? I mean, you know, sit down and just just
kind of figure that out, right. Do you want to be a team
lead? Do you want to be kind of a level up from a team
lead a mid level manager. Maybe you figure out that your passion is for
project management, but you want to write some code. I mean, all
of this stuff kind of plays, right, And so by knowing that,
then you can pick your mentors. Right. Then you can turn around and
say, okay, that person, you know, that developer is doing what
I want to do. Right, So if you want to make videos like
what Dave does, right, get to no date, right, and then
go copy him and you know, figure out what he's doing and figure out
how he does it and talk to him and email him and you know,
get get to know him and things like that. Right. That that's where
that magic is going to happen. But I'll say, thinking I'm about to
have a fourth child, I don't have time. I have no time anymore,
right, Yeah, but you know I am always on Slack and stuff
to help people out. Yeah, But the thing is is as far as
Slack goes or things like that. I mean, ultimately, you know,
I could reach out to you and say, Okay, you know I want
to do kind of the drifting Rubie, or if somebody reached out to me,
right, hey, I want to do a podcast, and I can
give you enough advice to get you rolling for a few weeks, right,
And so I may not hold your hand for the whole process, but I
can say, look, you need this, you need this, you need
this, And then maybe you come back and you're like, Okay, you
said I need album artwork, but I don't have a lot of budget for
that, So how do I do that? And then maybe I tell you
to go use fiber right, use fiber Here's here's the you know, here's
what I tell people when I want artwork done on fiber right, And I
can kind of hand you something that takes me about two minutes to look up,
and you know that that's kind of the situation, right, And so
it doesn't have to be this long drawn out thing. Or maybe I just
I do let you know, hey, look, you know I'm trying to
launch these other things. I'm in the middle of this stuff. I'll answer
anything that I can answer in less than a couple of minutes. But don't
be offended if I tell you, hey, that's a ten minute answer and
I don't have it, right, or an hour long answer and I don't
have it and and you know, so then you can set expectations or things
like that. Also, the other thing I've seen with a lot of folks
is don't be shocked if they don't get back to you because they are busy,
right, So yeah, don't figure yeah, because there's somebody else too
that might be able to help you with that person it's busy or something.
Yeah, so yeah, that's definitely something. But you know, pick your
mentor for where they can get you, right. So, Okay, I
want to be here in three years, So the next logical step is either
this thing or that thing. Okay, I can find I can find somebody
that I can associate with that can help me that with that and be deliberate
about it. Yeah, I definitely that's a really good point because I tend
to just operate from the assumption that people have goals, right, But but
yeah, you do have to find your goal first, then all the rest
of this stuff can follow. Yep. So yeah, I think we've been
going for about an hour. Is there anything else you want you guys wanted
to put in. I mean, I have tons more stuff that I'm pulling
together for this, but I don't think we have time to cover it here.
No, I do have a book that I planned to recommend too,
which was useful for me, right, So I've totally recommended on the show
before. I recommend it again, but never split the difference negotiating like your
life depends upon it. There's tons of awesome books out there, right that
can give you that can help you like level up like various aspects. But
for me, like, one of the things that I struggled with is,
you know, yes, I've never really struggled with like the ability to win
an argument right, which I don't think is an uncommon struggle. The issue
is I wanted to win an argument. I didn't necessarily want to win an
argument. What I wanted to do was I wanted to come to the right
answer, and I didn't want to piss off my co workers right or mess
with our relationships right. And so a lot of that is about, well,
how do I negotiate right, because that's really what you're doing a lot
of the times is we're negotiating what we think what trade offs we think are
the most important. So for me, that was a particular thing that I
needed to learn, and this book happened to hit the spot or whatever.
But you know, there's tons of other books out there. If you can
figure out what aspect it is that you're struggling with, right, you can
address it if you I'm sure there's a book for that thing, basically is
my point. YEP, I agree. I really like Audible as well.
You'll find links to Audible on dev chat dot tv. That's an affiliate link,
so I get a kick back if you use it. But audio books,
especially when I'm like going for a run or something, it's such a
great way to go. All right, well let's go ahead do some picks,
John, Do you want to start us with picks? Yeah? I
mean you do already know my first two, so never split the difference.
Like I said, I'll put it. I'll put the Amazon link just because
you don't have to buy it from Amazon. But but yeah, like I
said, it's a good book. It helps with like negotiating thing negotiating type
tactics, which comes up way more in life than you really think it does
right, Especially as developers. One of the things that you're doing that requires
negotiation all the time is when you're trying to decide between you know, maybe
two gems or something like that. Right you're having an argument about architecture.
You're negotiating with your developer, your fellow developer there, right And depending on
what your goal is, whether you want to win the argument if that's the
most important to you, or whether you want to walk away with both parties
being happy, there's there's probably a tack thick in this book for you.
So it was helpful for me and it just it changed how I thought about
negotiations in general. I would also say that, you know, if you're
a freelancer too, that's actually why I got into this book originally before discovering
that I had applications to other aspects of my life. So it's also useful
there. So that's pick number one. Second one is the resume guide that
I mentioned earlier. It was fantastically awesome, so definitely if you want to
brush up on your resume, go check it out. And then lastly,
so I haven't had Scotch Pick in a while, but I recently got a
hold of Nika Yuichi. So if you're somewhat familiar with Japanese whiskey, you
may be aware that, like, if you don't live in Washington State,
you basically can't get Japanese whiskey in the US. It's not exactly that bad,
but it's just hard and Nika in particular has kind of been out of
stuff for a while. I'm probably butchering the name, so you know,
if you guys have suggestions, let me know. But yeah, anyway,
I picked it up. It is there's a reason why it's out. It's
not the best whiskey I've ever had in my entire life by any means,
but it's different. It's very unique. It is, like anyway, it's
a lot like other Japanese whiskey's flowery, it's got some citrus stuff in it.
But it's very unique from what you're getting from Scotland. It's obviously very
nique from American whiskeys. Cool, those are my picks. I was going
to say, I don't think Japanese are really too well known for whiskey.
They that is a new ish thing. It's a couple of decades, a
couple of decades now, I think but yeah, ever since, I want
to say it was five to ten years ago that they basically landed like best
whiskey in the world over Scotch, right, and then all of a sudden
everybody wanted it, So it's been crazy for the past five years. Yeah,
among people that drink whiskey, I guess I assume. Yeah, cool,
Dave, Do you have some picks? Yeah? Sure, So,
in the spirit of working with others, mentoring and all that could stuff,
my first pick is going to be the Ruby on Rail slack channel. It
is a group of over fourteen thousand developers, so Ruby developers, and it's
one of the most friendly Ruby communities that I've seen. So I'm like going
to Reddit for Ruby stuff, you know, which I think Reddit will just
crap all over you, so you know, I really don't care for Reddit,
but whatever, but this community is very well mannered and if you have
issues, everyone there is always really wanting to help and help guide you along.
So I'll put a link to that. And the second pick is something
that recently discovered it at home depot and it is track lighting. So up
above behind my desk, I have some track lighting that installed that put the
Phillips who bulbs in And I had no idea that track lighting worked the way
it did. You essentially have a rail that you just install and it carries
the conduit, so it has conduit in it that you can then just twist
and snap in compatible light bulbs or the light fixtures and then screw in your
light bulb. Coolest thing ever. So I had no idea they work like
that. I thought I was going to have to do a whole love get
very specific things, and it was just a one evening wanted to do it.
Went to home depot, grab the stuff, did it. It was
a very enjoyable experience. But you know, for those who don't know any
kind of electrical stuff, a conduit is basically carrying the electricity. So if
you're not careful and you stick your hands in there while that thing is hot,
then you will shock the crap out of yourself. So just wear gloves
higher professional. This is not a diiy advice, but if you're comfortable with
electricity, then go for it. Awesome, very cool. I'm going to
throw in a few picks on my own, so I mentioned. One of
them is a three hundred and sixty degree leader that's by John C. Maxwell.
He has a whole bunch of leadership books and I've read like two or
three of them and they are all excellent, the ones that I've read.
So I love that book. And then Dave actually started talking about and then
we I think we kind of derailed onto something else. But there's another book
out there called The Hero's Journey, and trying to remember who the author is
on that, I'm going to open up Audible and have a look while we're
talking. But it's basically kind of the three act structure that you're used to
in movies, and it basically walks you through that. And yeah, people
are very familiar with that. In fact, I have a few people in
my life who understand it to the degree that they like spoil every movie that
you watch with them. But yeah, it's okay. It's The Hero with
a Thousand Faces by Joseph Campbell, and yeah, I mean it basically just
breaks it down. And this is like the three act flavor that you get
out of like the Divine Comedy. I mean, it's been around forever,
all the way up to our current you know movies and things like that,
and yeah, you know, if you kind of look at yourself as the
unknown person that gets pulled out of the shire or you know whatever. Right,
you definitely get some idea of this is a journey that we all understand
well. And yeah, you kind of have to go walk down the road
or down the trail before you wind up getting all the way to the mountain
where the dragon is hoarding his gold. So I'm just going to throw that
out there as well. But yeah, I've really really enjoyed that as well,
just kind of getting an idea of how people work through that. Another
book that I read recently that I've really liked is Story Brand by Donald Miller,
and it's kind of got a lot of the same elements, except it's
much more focused around how you help people perceive you or your business that in
his case, because he's talking about business and branding. But yeah, I
really really enjoyed that one as well. So if uh, oh, what
I do I bump something on my phone because I'm holding it while I'm talking,
because I look stuff up on audible, But yeah, so he walks
you through how you want to approach it, how you want to set up
your website and things like that, and so if you're kind of on the
end of Okay, I want to put together some content or I want to
build my reputation one way or the other. It's a terrific way to kind
of figure out how to frame what you've done and who you are so that
people can connect with that, if that makes sense. So anyway, those
are my picks, and yeah, we'll wrap up here. Thanks guys.
This has been a really, really great discussion. Hey didn't you say he
had a sneak peek or something? Oh, yes, I did. So
I am working on and I have a few weeks to put this together,
but I plan on releasing around Christmas. I'm releasing so to back up,
I did a podcast growth summit, and by did, I mean next week
it's going live. Incidentally, it starts on my birthday, so go figure.
But yeah, I wound up talking to a guy named Jamie Atkinson and
he does a bunch of podcast coaching and stuff like that, and he introduced
me to the idea of a pop up podcast. And so essentially what it
is is you go to the web page you put in your email address,
and I will send you a private link to a podcast that's exclusive to people
who put in their email addresses, and I am going to it's going to
be a five part series. The episodes are probably going to be forty five
minutes to an hour, and I'm just going to talk through the different pieces
of being a top five percent developer and what you could do to make that
journey. So, if you're kind of stuck, you're not happy with your
job for whatever reason, you don't feel like you're growing, you're not sure
how to get to the end of the road that you want to be on,
if you're just kind of lost as far as what to do, what
to do in your career next, or maybe you feel like you've gotten to
the top of your career. Right, So you are that senior developer that
the people kind of already go to at your job, and you're looking at,
Okay, well, how do I go from here to the level of
people that are speaking at rails comp for ruby kov, who are presenting on
a regular basis on the internet, maybe doing a podcast. That's what this
is going to be. So if you're at the senior level, some of
this stuff is going to be stuff you're probably already doing. But I really
do intend to hit the content piece of it. Rather hard and talk about
how to kind of get from the five percent to the one percent in the
last episode. So if you're looking for that kind of content, Yeah,
it's going to be free at least through the end of the year, through
the end of twenty twenty, and it'll come out. I think I'm just
going to set it up so that you can go sign up and it'll come
out on Christmas, so you'll get it on Christmas, you'll get the episodes,
and yeah, that's what I'm putting together. So that's the sneak peak.
I guess the other sneak peak is I'm also working on a podcast called
the dev rev where I talk about this for ten to fifteen minutes every day
or five days a week and just hit one aspect like one and it's not
like this, oh, here's the idea of what you can do. No,
it's going to be hey it, go do this. It's going to
be an actionable called action that something that you can do relatively quickly to get
you a little bit further down that road. So I mean, for a
week, I might do something like, okay, you need to launch your
podcast. Here's day one, and here's how you do it in five to
ten minutes. Here's day two, right, and so it all builds on
each other. Some of it's just going to be stuff where it's like,
hey, go figure out what your next project is in this area, right,
and then we just give you an actionable Okay, go set up get
the gethub repository, go set up to read me, go do this right.
Or on leadership stuff, it's you know, go talk to the people
that work under you and get their feedback on how you can do better,
and here's here's one actionable thing that you can do. That's that's what I
want to do, is I want to give people a homework that they can
go do that they can go level up on every day. And I fully
expect a lot of this stuff to be cumulative in the sense that as you
do a lot of this stuff, not all of it's going to relate to
each other, but eventually it'll all play into leading you into that place where
you're getting to be that top five percent developer. So there you go.
Two sneak previews. Cool, and then of course there's going to be courses
and stuff on the other end of it. But for right now, I
just want to get that out there because so many people are struggling with this,
and for heaven's sake, let's get you there. So yeah, that's
it, that's what I'm working on. All right, Well, let's go
ahead and wrap this up. And yeah, thanks again guys for all of
your input, because yeah, it help clarify some stuff for me too.
Yeah, max out everything