Learn how to build a developer portfolio that gets you hired
Landing your first developer job isn't easy. Companies don't want to take the risk of hiring a junior, they have no idea how competent you are. A traditional resume doesn't adequately prove your abilities.
Why would they just take your word for it? In order to standout you need to show those hard-earned skills off!
You need to publicly showcase your work. That doesn't just mean spinning up a fancy blog or linking your Github full of tutorial projects you followed along with. Tutorials are excellent for personal growth but they don't prove that you're capable of applying that knowledge elsewhere. It's all about proving your skills are valuable to a business.
This doesn't mean that your site has to be boring though! Showcasing your practical skills might be the most important thing but you should still make your site your own. You are more than the sum of your skills and you are also communicating your interests and personality through your website and portfolio
Spend 30 minutes to assess your own portfolio. Figure out what it's communicating about you and ask yourself if aligns with what you want to communicate. Try to see if there is anything missing from it.
Kent C. Dodds (00:00):
Hello friends, this is your friend Kent C Dodds. And I'm joined by my friend, Joel Hooks. Say hi, Joel.
Joel Hooks (00:05):
Kent C. Dodds (00:06):
Well, I was expecting you to say, "Hi Joel," like I asked you to, but that's okay.
Joel Hooks (00:11):
I'm really bad at Simon says.
Kent C. Dodds (00:14):
Yeah. So, Joel, I think a lot of people listening probably know who you are, but my story with Joel, we go back to before I was at EggHead, because Joel is the one who responsible for me getting into EggHead, way back in, what was that? 2014? I'd just barely graduated from college. I gave a talk at a meetup that was recorded, and then John Lindquist saw the talk on YouTube and said, "Hey, let's make an EggHead course out of that. And then, Joel, just basically, you ripped me apart on my first attempts at making the videos, and then I actually started making good videos. So, thank you for that. And got my first course on that. I think I may get a couple bucks a month for those first videos, but I mean, that was a transformative experience for me. So, that's how I got to know Joel. Do you want to go ahead and introduce yourself to folks? You can be as personal, or professional as you want, anywhere on that spectrum.
Joel Hooks (01:17):
Yeah, I'm a software developer is still how I think of myself, but over the last eight years, working with EggHead and you've been part of that journey for a long time, I've been wearing a lot of different hats outside of being a developer. That's still probably, my favorite thing to do. I love writing code, I love the ability to switch into flow state that writing software is one of the few things that I've experienced in my life, where you can really just sit down and get into it. And then, everything else fades away. And the meeting timers will go off and you'll miss them, because you're so into what you're doing. And I absolutely love that, but-
Kent C. Dodds (01:54):
Joel Hooks (01:56):
I also really have had to become a marketer and a business person and deal with the accounting structures and there's over 10 people that work at EggHead full-time and that has been an interesting learning journey for me, and part of how I've spent my job, as well as the aspects of doing sales and dealing with clients and recruiting new clients. Folks like you, Kent. Where we have to go out and find them. And it's funny, because you mentioned when you first came to EggHead and the experience for a new instructor at EggHead, was John and Joel roast you, so you start making good videos based on what-
Kent C. Dodds (01:56):
Joel Hooks (02:37):
We feel inside, in our hearts, not something that's written down, or a standard, or a spec. So, a lot of the last half decade has been, "Well, how do we improve that? Because, this is awful for us. It's awful for you." It worked, but it would weed a bunch of folks out. And how do we expand that? And make the process of publishing screencasts and tutorials and making a few bucks from your knowledge, more democratic and easier to access for more people. So, that that's been a lot of fun. And then, recently, we've got into working with partners to, to launch standalone sites that are outside of EggHead, and that's been a lot of fun and an interesting exploration and expansion of our business model. Yeah, so I have, I have five kids and I live outside of Portland and when I'm not coding, or working on the internet, I've been playing with synthesizers and making music and trying to get off of computers, well they're computers too. So, I don't [inaudible 00:03:38] for computers necessarily, but moving my interest off of the large screen format anyway.
Kent C. Dodds (03:45):
Yeah, yeah. Just change that interface there, just a little bit-
Joel Hooks (03:48):
Yeah, yeah. More knobs and buttons and wires and whatnot to-
Kent C. Dodds (03:52):
Joel Hooks (03:53):
They're giant electronic fidget spinners.
Kent C. Dodds (03:54):
Yeah. Yeah, that's a good way to put it, that's fun. Yeah. So, you mentioned a bunch of things that I'd love to dive a little deeper on. In particular, you started talking about how much you love coding and just the flow state that you can get into. And I think many of us can remember some situations where we've felt that, and it's just been really awesome. Even when you bump into problems and stuff, it's still like that. I don't drop out a flow state, even when I run into a hard problem. When I'm in that, it is an experience unlike anything else. And it's really fun.
But, you mentioned also that you've been having to, or forced into doing a bunch of other things outside of coding, just because of what you do for EggHead. And I'm curious, you obviously still get plenty of time to code. I know that you're writing code in open source too, EggHead is open source, but you have a lot of things pulling at your time. And I'm curious if you resent some of the things that you have to do, and you'd rather just be coding more? Or, what are some of the things that you have to do that you'd really rather not have to do? And the things that you've actually been surprised at how much you enjoy them?
Joel Hooks (05:16):
So, sometimes I get decision fatigue and by the nature of my job, I'm a person that makes decisions. And it's not something that I have a problem with. I'm really comfortable making decisions. I think, you've experienced that, right? You can ask me a question and I'll always have an opinion.
Kent C. Dodds (05:31):
I enjoy it, yeah.
Joel Hooks (05:32):
I'm never short on an opinion and I'll come back. And a lot of times that actually leads to, I optimize and I feel like this has something to do with software development, is optimizing to find error cases, bugs, and deficiencies in your work. And I'm like a deficiency bot, right? I will spot it and call it out. And that sometimes, one, it drags other people down and it drags me down and it's been one of the things I've had to work really hard at, is I don't have to like everything.
Kent C. Dodds (06:06):
Joel Hooks (06:06):
And that's, in life, I don't. You do not absolutely have to like everything. It's totally fine, if some stuff isn't your favorite. And telling myself that and understanding that. And then, especially when you make something, when you work on something. I've never worked at a job longer than five years until my current job, which is almost nine years in. And when you work on something that long-
Kent C. Dodds (06:29):
Joel Hooks (06:30):
You have attachments, right? And I have so much context into the business and people will make decisions, and I'm like, "Well, that's wrong, because of these six different things." And it's like, "Well, no, it's not actually wrong. It's just different. It's not my preference." And understanding the difference between necessity and preference, is something that, it's been a challenge. And my worst days, is when it's just a super Monday, right? When you come in and there's just 10,000 decisions to make, and all I really want to do, is sit down and work on my personal problems. Not therapy, but my personal problems in the codes. Right?
Kent C. Dodds (07:05):
Joel Hooks (07:05):
And in meetings, I don't really like standing meetings. I don't necessarily want to talk about work, versus doing the work a lot. And that's something that I struggle with, but it's valuable to other people. And then, because I am an encyclopedia of context for this specific business and what we're doing, my input is important. But, how do you balance that, has been interesting for me, as a manager. So, I don't like to tell people what to do, and I don't like to be told what to do. And that is often often an issue for me, but I don't think it's going to change. I'm never going to wake up and be like, "I just want to micromanage everybody today. That's going to be great." That's not really [crosstalk 00:07:55].
Kent C. Dodds (07:56):
Yeah, in our interactions, I noticed that quite a bit. You've described my experience with you a lot, or very well. I like to come to you and ask for advice, or just like, "What do you think about this?" Pretty often. And you definitely have no shortage of opinions. You will always be happy to share your opinion, but you definitely don't ever tell me what to do. You're always just like, "Here's my thoughts on this. I think it would be stupid if you do, do that, but you do you, whatever." And I actually really appreciate that. And that actually, frames the entire EggHead relationship for instructors as well. And I think, that aspect of your personality comes out in EggHead where, for me, it's always been, "You do whatever you want to do. We're always happy to be here to help you succeed in creating this content."
But, there's no expectation until you make an actual commitment, where I say, "I'm going to make a course." At that point, now we've got a commitment, but other than that, there's no expectation of me actually delivering a certain amount of videos every month, or anything like that. It's always just been like, "We're here to support you in whatever you want to do." And honestly, I don't know if I would have been successful anywhere else, because especially early on, EggHead was this supplemental thing for me that I could only do in short bursts every now and then, until now I'm full-time on this. But, even now, actually I can't just go full on all the time, just churning out video content for EggHead, or anything. I need to have my breaks. And so, being able to have that flexibility with EggHead and just your personality has been really nice.
Joel Hooks (09:40):
Yeah, and I mean, we've had people that take years, right? From the initial, "Hey, do you want to come into Slack? Do you want to make some videos?" And they say, "Yes." And it's like you and other people, the intent is, "Yes, I really want to do that." But, the reality of actual life is, especially when we're talking about doing things in the evenings and in your otherwise, free time, where there's plenty of different things that you could do to spend your time. It's really difficult. And so, having that patience and just allowing people space, is really important to me in general, I feel, if we're going to get there, let's get there over time, and without pressure, and not try to sell people into over-exerting themselves for something that matters, but might not be the most important thing right now.
We'll be here when we're ready and we can do this thing and we can scope it to a way that's healthy and effective and mutually beneficial and meeting our goals as a collaborative effort, versus some contractor relationship, right? I'm not interested in working with people that are, "Okay, you're contracted. You said, you're going to deliver this. You're going to deliver it in six months." I've written a couple books for major publishers and it's always pressure. And it's also fake, right?
Kent C. Dodds (10:58):
Joel Hooks (10:58):
We're going to set arbitrary milestones, and then we're going to arbitrarily pressure you to meet those milestones. And I understand why they do it, because I've experienced this. And I've even had people will be like, "Oh, you got to set dates. I can't do anything if you don't put a date on there." And not to go too deep into it, but I feel, my K–12 education has a lot to do with that. Just the structure and the six weeks periods and grading and bells and this conditioning over time to respond to that carrot and stick format, is something that that's pervasive. And then, just modern life. There's just so much going on, so people like to be able to calendar and set it in and meet and achieve those things. So, I will facilitate dates, but that's not my default. I don't get into that unless it's requested, then you've let the vampire in your house and you're going to get a Gantt chart at that point.
Kent C. Dodds (11:59):
Yeah. I feel like we could dive into that as another good topic of discussion. But, one thing that you've been really into, that I've noticed recently, is personal and professional portfolios. You've done these adventure clubs on a portfolio building, and there are courses on EggHead about this and different things. Do you want to talk about, why do you think a professional portfolio, or a strong business-oriented web developer portfolio is... Where the value comes in? And why that's useful? And really even what a strong business-oriented portfolio looks like?
Joel Hooks (12:43):
Yeah. That's a stack of good questions.
Kent C. Dodds (12:47):
Joel Hooks (12:49):
I think you have to think about the definition of what a portfolio is. And when I ask, and I've asked this a few different times in a few different venues, "Hey, share your favorite portfolios." What you get back, is very distinctly designed portfolios. And they are developers. It's like, "Show me your best developer portfolios." And the results that they come back are developers/ designer, right? They all have designer. And you end up on these really, really nice and beautiful sites, or really creative, or fundamentally different ways of presenting work, or really interesting and creative projects. And that's great. I think, if you're going to have a portfolio, you should probably think about design just a little bit, whether you're using a template, or whatever. But, to me, what a portfolio is, is your broader body of public work.
When somebody searches you, or looks at your site, what does that tell them about you? And EggHead for the last year, we stumbled into this idea of digital gardening. And there's this, I don't know, there's a little bit of a buzz about this concept that you are treating your online presence as a garden and you go, and you tend it and you have to plant seeds and you have to water them and you have to make sure that the soil is fertile. And it's a good metaphor. And I really like it. I like planting and farming metaphors for a lot of things in my life, actually. But, when it comes to your online presence, what does it say about you when somebody enters your garden?
Where do they go first? What do they look at? How can you be represented? And how do you fundamentally represent your, your skills as a developer? Whatever they may be, and at whatever level they currently are. And reduce the risk of taking a chance on you as a hire, if that's the goal, right? If your goal is to get hired, how do I present myself in a way that will say, "Hey, this is what I know. This is how I work. This is how I understand process of development. This is how I communicate. This is how I take work and finish it and get it out the door. This is how I consistently show up. This is how I do my job professionally." And one of the biggest things that's tough, is that's not like tutorial work.
If you were just starting out-
Kent C. Dodds (15:18):
Joel Hooks (15:18):
You can't take a tutorial, follow a paint by numbers and present that as portfolio, tutorial is not portfolio. And that's a real challenge. Because, for me, when I first started learning how to program, the hardest thing at all was how do I take this from tutorials into building something real on my own? And then, what do I do with that? As you get more established, I think there's more opportunities. Right now, you mentioned, our EggHead repository is open and I can point to that, as my portfolio. I can I go to joelhooks.com and I've written for a dozen years and have a lot of articles and I present and how I think and how I solve problems, how I use Google to augment my abilities as a developer.
And I capture all that, and some of them are good, some of them aren't as great, but capturing that over time, organizing that, showing people my process, showing people that I know how to communicate, showing my skills as a developer and what I know and what I can create, is my portfolio. And it changes, I think, over time from, "I don't have a presence at all." To, "I've been doing this for 15 years and here's the result of my work." Though, I see a lot of people that are senior developers, some event happens and they lose their job and they look, and they don't have anything, right? They don't have a public body of work to share. And that's when you're in-house and you're under NDA, you can't share that internal work.
So, it's on you to figure out how to get that out there. And the main advantage, the reason you would want to, is absolutely to get your foot in the door. It's not necessarily going to get you hired, though it can. This can be the side door into some organizations. But, it'll put you on the roadmap, it'll give people an idea, it'll make the risk they're taking on you less. So, if you have that and if you can prove it without... It's, "Show, don't tell." How do I show you what I can do, versus just telling you. A traditional resume just doesn't do that. So, I think about portfolios a lot lately and what they could mean and how you can present them.
It definitely doesn't remove all the crusty edges around the tech hiring process, which is fundamentally broken in a lot of ways, but it's, how do you give yourself more advantage in the marketplace? How do you market yourself? How does your website present sales copy for the skills that you possess and can bring to the table? And that's something, that you have control over. You can't control a hiring manager's decision, but you can control, "I'm going to wake up and I'm going to improve my online presence. And I'm going to tend my garden and make my space represent my skills, to the best of my ability." And that's completely within your control. And that's what I really like about it, right? I can't hire you, but I can help you improve your portfolio, that's how I look at it. Just, what's in your control? And your graft and what can you do as a developer, to help help reduce the risk of taking a chance on you and hiring you?
Kent C. Dodds (18:49):
Oh, wow. Yeah, that was really great. I think that there were a couple of things that I'm thinking about there. One, is that you mentioned how the EggHead repo is your portfolio. And I think that's a key takeaway there, is that, your portfolio isn't just a nice fancy design on a website, which makes me feel great, because I am not a designer. And this is why folks at EggHead, you all are helping me rewrite my website. Because, I can't take the time to become a good designer so I can present my stuff in a way that looks nice.
Joel Hooks (19:30):
Kent C. Dodds (19:31):
I have other things that I want to do with my time. And I think that's an important distinction. If I wanted to, I'm sure that I could, I think anybody could become a great designer, but I don't think that there's any shame in saying, "Hey, this is one area that I'm weak in." And before I made the website that it is today, it was just literally a white page with text on it. And I could be as eloquent as you could imagine, but that's not going to go over well, with the way that it looks like. And people are just going to look over that and be like, "Oh, okay. I guess he doesn't care." I even had this little note at the bottom that said, "If you're unimpressed with my website, it's because I'm too busy doing other awesome things."
So, at some level there does have to be something that makes your site look interesting and presentable. And I'm curious, what's your take on getting people, or even hiring people to help you fill in the gaps of... I'm not trying to value proposition myself as a designer. And so, I'm okay having a designer. Where's the line for you on how much help you get to create your portfolio?
Joel Hooks (20:44):
So, the design on my personal, joelhooks.com is done by somebody else too, I didn't do it. I collaborate with amazing designers all the time. So, I'm spoiled in that regard. At the same time, that space, I want it to look like my level, right? They did some illustrations and helped with the overall look and feel. It's funny, because when I got the designs, it actually brought a literal tear to my eye. I'd never- [crosstalk 00:21:13].
Kent C. Dodds (21:12):
Wow, they really nailed it.
Joel Hooks (21:14):
Yeah, it's interesting how design can move you like that. And the same is true for EggHead, right? I did not do the design. I have some input, right? But, I did not do the design. If you aren't a designer, and hiring designers is not within your means. I think you can get them actually pretty reasonably, if you look around and talk to some designers you like, you'd probably be surprised at how much, just a basic page design that you can riff off of would cost you. It's in the several hundreds of dollars probably for that thing. But, if you're not a designer and you want something to look good and you want to build a portfolio that is presentable. And I think that's a good goal. All you got to do is go out and find those examples. Build a mood board basically, take screenshots, find five different pages that you really like and grab the elements that you like from each of them and merge them into a layout that works for you.
I think, keep it simple. There's sites that'll show you typography combos that you can use, to mix typography. Because, that's usually important for presentation. Get some good type, do a basic structure. Tailwind is amazing for bringing in just a basic, foundational design system. You could go to tailwind UI if you really wanted to start mixing and it makes it easy on yourself, is to bring those elements in. And I think that templating, versus going, and you can go buy a theme too, right? You can purchase-
Kent C. Dodds (22:54):
Joel Hooks (22:55):
Keep it simple, get a theme, or use a theme as an inspiration and build off of that, is another way to look at it too. Unless you are a designer, right? You aren't presenting a design portfolio, you're presenting a developer portfolio and what that needs to be, is clean and readable and present your skills as a developer, not so much as a designer. I think, there's some base minimum that you might need to do. I don't think, I don't know. Maybe, just a straight HTML page with no CSS whatsoever would be fine, but you can probably do a little better than that, I would- [inaudible 00:23:35].
Kent C. Dodds (23:35):
[crosstalk 00:23:35] Yeah, as long as it's a little more tastefully done. Yeah. Yeah, that's true. Mine was literally black text centered. It was so bad.
Joel Hooks (23:47):
Kent C. Dodds (23:47):
It was just a place I could drop a link and, "Here's where you can find more stuff on me." But, yeah. So, I think that's good, and that's an enabling for people who are like, "Yeah, I can't make my thing look good." It doesn't have to look stellar. What really differentiates portfolios... Actually, let me put that to you as a question. What do you think really differentiates a portfolio? If I was looking at my portfolio and trying to assess, what I need to change? Or, how I can stand out? What is the important parts of the portfolio I should be looking for?
Joel Hooks (24:22):
So, I really like to see... One, it's just an introduction, right? And when we're talking about portfolio, I'm going to be specific about your portfolio site. Hopefully, it's your full name.com, or something related to you. So, when you're searched, or you're sharing that, it's very, obviously your space. For me, I have joelhooks.com and that's great. And if you can get that and one, have a name that's searchable, that's fantastic. But, put it on your own domain and start building there. And one of my favorites is Max Stoiber's and Max has built a site that just introduces himself, and then gets into, who he is? Where he's at? And lists some accomplishments, with links. And then, has a simple sharing section, that shows the open source projects that Max has worked on, and then gets into the blog aspect of the site.
And I love the way that's presented, because there's not a lot of design involved. There's a nice, consistent column width, very readable text, but it's not, design heavy. And it's one of my favorite examples of a purely developer blog/ portfolio site. And I think, clean and readable is achievable for almost anybody. And then, you get into novelty on top of that. And novelty is fantastic, but not as critical as clean and readable and presenting the work that you've done.
Kent C. Dodds (25:56):
Yeah. If we're talking about the garden metaphor, that's putting the gnomes out there, or whatever it is just to add a little bit of flare to what you've already got. That extra stuff, isn't what's critical to having a garden. You need to have something growing, but once you get something growing now you've got time to add that extra little bit of flare, put sound effects in, or whatever it is that you wanted to do, to make it uniquely yours. So, I think, that makes a lot of sense. And one of the thing that you mentioned, you started talking about examples, Max's site. I think that could also be helpful when you're trying to assess your own portfolio, and you mentioned earlier about taking screenshots of five of your favorites, just measure your portfolio up to some of your other favorites, or look at some other favorite portfolios and see what is common among them and like, "Oh, okay. That's why I like this." And try to bring that to your own, right?
Joel Hooks (26:53):
Yeah, absolutely. And it's not like you're going to go plagiarize somebody's space. I don't think you need to do that to look and be inspired by, and there's a big divide between plagiarizing, cut and paste, or just totally biting somebody's work and taking elements that you really like and incorporating them into your own work. And that's a balance and I don't think people should go out and copy it. But, if you're stuck on the design aspect of what it is you're trying to present, there's plenty to go out there and draw from and get inspired by, to create your own space. I totally 100% agree, keep it simple to start. Work within your capacity, and then add, and iterate on that. And preferably whatever the space is, whatever the expanse of your online garden is, it should be something that you want to work on too.
If you don't want to work on it, if it's a chore, then that's another barrier that I see pretty frequently, right? You'll make something and you don't enjoy working on it. And then, how are you ever going to motivate yourself to get in there and spend the time you need to do, to improve it, or add to it, or keep it fresh over time. If it's not a space that you like. Josh Como, I'm probably butchering his last name.
Kent C. Dodds (28:16):
Yeah, yeah, Mm-hmm (affirmative).
Joel Hooks (28:17):
He has a really great book about, your first portfolio, right? It's really targeted at junior developers, or newer career developers that don't have a portfolio at all. And he has just an absolutely wonderful book about creating a strong developer portfolio. And it's very focused on the design and initial content aspects of it, but it's a wonderful resource. And you could go in there and work through what he says in that book and really come out the other side with, with a nice space that you can build on.
Kent C. Dodds (28:51):
Hmm. Yeah, josh is definitely an inspiration for me in my portfolio. Josh's thing is out of this world. So, yeah-
Joel Hooks (29:00):
[crosstalk 00:29:00] Yeah, everything he does is high quality. For absolutely sure.
Kent C. Dodds (29:04):
Joel Hooks (29:04):
Josh just brings the heat on everything he touches.
Kent C. Dodds (29:10):
Yeah, yep. It's really impressive stuff. Well, cool. So, Joel, we're toward the end of our time. Was there anything else that you wanted to mention before we wrap up?
Joel Hooks (29:20):
So, on EggHead, if you go to egghead.io/portfolios, we're curating a list of portfolios that we really love. And when you land on there, you'll see that a lot of these are very design-forward and it's just the nature of collecting portfolios. But then, some of them are on the plainer, more developer-focused. And there's a lot of great ideas on here, and we're going to build this over time. So, if you're interested in that, go check it out and you can see what other folks are doing.
Kent C. Dodds (29:51):
Yeah, I think that's great. Getting inspiration from each other as you know, that's how the world goes round, I guess. So, as we wrap up, we do have a homework assignment for you all folks. So, the homework assignment for you, is to set aside 20 to 30 minutes to assess your own portfolio. So, think about, what does this communicate about me? And does that match what I want it to communicate about me? Is there anything missing that I want to make sure that I call out for potential employers, or partners, or whatever? Is there anything you have to add to that Joel?
Joel Hooks (30:26):
Yeah. And if you have something that you want me to check it out @jhooks on Twitter and you can send it to me and I'm always happy to look at them, and maybe offer an opinion too. Yeah, we'll see.
Kent C. Dodds (30:37):
That's awesome. That's really nice of you to offer. Cool. Well, thanks everybody, this has been great. Thanks, Joel. Appreciate your time. And yeah. And you already mentioned your Twitter, so reach out to Joel there, follow him. And with that, we'll just say goodbye. Thanks everybody.
Joel Hooks (30:52):