Looking for feedback on resume and/or portfolio

Hi - I am a career changer that has started applying for software engineering jobs. Any advice on my resume and/or portfolio would be appreciated. Thanks.

Resume:

Portfolio: petefowler.dev

1 Like

OK, keep in mind that I’m a harsh critic …

It looks rather boring. It looks like a Word document from 1998. It’s very top down, prosaic styling. I don’t like people to go crazy with design on these thing, but we can do more than this.

It’s very word dense. Nothing pops out at me. You have 5 seconds to convince the HR intern to keep reading before they move onto the other 127 resumes they need to see before lunch. And with this little experience, it should be one page.

Your first paragraph is too long and tells us things that everyone will say. Don’t say that you’re “highly motivated”. Everyone says they are good at “problem solving” and “critical thinking”. So what does it tell them when you say it. Nothing. It’s like if a politician says that they are honest and look out for the little guy. Yeah, that’s the same script everyone else is reading. This paragraph should be half as long and should summarize you - what kind of job you are looking for in what tech stack. That is what they are trying to figure out in this paragraph - is it worth reading the rest of the resume. I read that and I have no idea what kind of job you want in what kind of work.

The Projects section…

OK, that’s good, but I still think it is too long. I would bold the techs that you use, to make them pop. Don’t list eslint or prettier - they’re just going to roll their eyes. Did you use a querty keyboard? Did you use an editor? They don’t care. Those are just tools that everyone uses. Unless you wrote some custom linter or prettier rules, those are just add and configure. I would also drop the word “vanilla” - the fact that you don’t mention “React” or “Sass” implies that.

I think “built a spinning leaf …” and “utilized dynamic…” is too much detail, like you’re trying to pad out a resume. Those things are just part of building the app.

Make these less wordy and too the point. Don’t micro list everything you did. They’re more interested in the techs that you used. If you used some special patter (PubSub, etc.) then that might be worthy.

I dubious that you built an AI player…

A classic something game, built with JS, CSS, and Webpack

  • Built with OOP and ES6 modules and wrote detailed Jest unit tests.
  • Made the screen flow responsive and added haptic feedback for a good mobile UX.

I don’t care about anything else in there.

Work Experience …

Don’t say “gained experience in …” - it sounds weak. Just say “used …”

The “Created …” line is too wordy. Just say:

Built pixel perfect React components from Figma diagrams

You don’t need to mention that you made pull requests. It would be like applying for a chef job and telling them at your last job you chopped carrots and diced onions. Yeah, they know.

Speaking of which, above the Projects section, I think should be a section like “Skills”, like a multi column list of skills. There you can mention git. List all the techs and patterns and whatever. Those are keywords that will grab attention. And all the others. That will grab their eye. That will tell them what they need to know if a few seconds. That is one of the most important sections, imho.

Any job that isn’t coding related should be just one line. Heck, I’d combine the medical and combine the news - they don’t care. I mean it’s good to list them, but don’t waste valuable real estate and attention because it’s not going to help. Those are good things to bring up in an interview, if you think those skills will help you, or maybe to briefly mention in a cover letter, but for a dev resume, they want to know what you’ve built, what you’ve learned, and what techs you know. Everything else is a distraction.


Those are my thoughts. As I said, I’m a tough reviewer, but that was my reaction.

2 Likes

Thanks - Some great info here. Do you have any suggestions on what to do with styling. I thought colors and columns and whatnot were discouraged.

I realize it’s not powerful to use vague self-assessments such as “highly motivated” and talk about soft skills like critical thinking and communication in the summary, but what else do you talk about when you are changing careers and have no professional experience in the field?

What about something like this? “Software engineer completing Flatiron School’s software engineering program. Built a Battleship game with an artificial intelligence player and contributed to open source projects outside the school curriculum. I bring strong problem-solving, communication, and team collaboration skills from a background in journalism, private investigation, and healthcare.”

I wanted to mention sometimes spending long days coding to demonstrate that I am motivated, but is that pointless?

At this point I am not sure if I want to specialize in front end or back end web development or try to stay full-stack. Do you think I really must specify a role I am looking for in the summary? Or just change it each time to match the job description?

Would you just leave the third project with one bullet point about winning the award then? There wasn’t anything too spectacular about it, it’s just a basic React SPA.

What I refer to as AI is a computer player in a Battleship game, which fires randomly until hitting a ship, and then fires adjacent squares until it gets another hit, and then tracks the axis of the ship and fires along the axis until it sinks it. What should I call it if not AI? It was one of my best pieces of code so far so I thought it worth mentioning.

Here is another version where I tried to cut out and shorten a lot of things and incorporate your advice. It seems impossible to keep it to one page unless I just cut out the previous career stuff entirely. I thought it might be important or worth mentioning since the unique background seems like something that might set me apart from the thousands of other boot camp grads.

fyi rather than writing javascript to create the nav button/link scroll behaviour, you can achieve this a lot more easily with css

Give your target elements an id, then target that id with an anchor tag with the attribute href="#projects" (rather than using buttons), then apply scroll-behaviour: smooth to your html tag

With regards the javascript, if you ever find yourself copy and pasting the same few lines of code, you should always stick those lines in a function. In general you should seek to reduce repetition as much as you can.

Hello!

I’m a graphic designer and can give you a few tips on effective typography:
Work with structure, contrasts and whitespace, like in my example:

Number of the section in red, the headlines are two sizes bigger than the text, enough space to give everything room to breathe.

Skills structured with vertical lines are small details that can add to the design, but just working with good contrasts and enough whitespace will already boost the quality of your text. Also try to use the same layout on all sections, consistancy makes a good design.

I’m going to be blunt about the resume too - no offense intended at all, but the number of times you use “some”, “something”, and “somewhere” in place of an actual name or place honestly makes it hard to tell how much of the resume might actually be factual or fake info, and it comes across as a negative impression. I mean, you don’t need to anonymize your resume this much, because more than anything else it makes it extra difficult to give you actual helpful feedback. I believe 100% that nothing bad will happen if you just provided your actual info. Who cares if someone did look you up online? The most that anyone would do is look up your LinkedIn profile, GitHub, portfolio, and blog, which would all be public anyway when you apply to a job. So there’s no harm in just providing your actual info.

Others might have differing opinions on this, but if all you’ve done is a coding bootcamp, calling yourself a software engineer already is overstating things. IMO it’d be better to call yourself an aspiring web developer, or web development student, especially if you haven’t completed the coding bootcamp.

All of your projects can be reduced to a single bullet point for brevity. You’re just wasting space with the extra bullet points that don’t add much.

Contributing to open source is good, but you shouldn’t actually call yourself an OSS contributor if you aren’t credited in a particular OSS project, and if you’re going to cite OSS contributing on your resume, you should back that up with a link to a well-known OSS project that you’ve made significant contributions to. Because literally anyone with coding ability can contribute to an OSS project. It’s really not a significant thing that should be called out on a resume.

Your previous non-dev work experience can all be reduced to single bullet points as well. There’s absolutely no need to go into extra detail on previous non-dev jobs when you’re applying to dev jobs.

Remember to cite specific and concrete accomplishments and achievements on your resume. Those kinds of things are what grab attention. Not vague things like “critical thinking” or “communicated empathetically” or similar. Be specific and concrete, and write down things that will be impressive. Don’t be merely descriptive. That doesn’t grab any attention.

Do you have any suggestions on what to do with styling. I thought colors and columns and whatnot were discouraged.

I think columns can work. And I agree that colors should be subtle. But it’s more just the density, the lack of font variation (though, that can be overdone, too.) I would look at some other resumes to get ideas. Read some articles.

What about something like this? “Software engineer completing Flatiron School’s software engineering program. Built a Battleship game with an artificial intelligence player and contributed to open source projects outside the school curriculum. I bring strong problem-solving, communication, and team collaboration skills from a background in journalism, private investigation, and healthcare.”

Again, that is (somehow) too specific and too vague. The purpose of that first paragraph (imho) is to be a brief summary of who you are. I would expect something like:

I am a software engineer looking for an entry level position. I enjoy both frontend (React) and backend work (Ruby/Rails). I live in the Denver area but would consider relocating for the right opportunity.

The HR manager can read that and instantly decide if you are even in the ballpark. They got exactly what they need to know for the initial screening and you haven’t wasted their time with platitudes.

I wanted to mention sometimes spending long days coding to demonstrate that I am motivated, but is that pointless?

It’s like the old adage about filmmaking - don’t tell them, show them. They don’t care how many hours you say you’ve coded, or how much you say you’re motivated. They want to see (in lieu of degrees and certificates, or at least in addition to) results of things you’ve done. I know you don’t have a lot yet, but padding out the resume with blather will not impress them - they smell it a mile away and it they don’t like it.

At this point I am not sure if I want to specialize in front end or back end web development or try to stay full-stack. Do you think I really must specify a role I am looking for in the summary? Or just change it each time to match the job description?

I think you can mention more than one - as in the example I gave. But “software engineer” can mean 1000 different things, or which you are really only aiming for 2-3. Narrow it down for them.

Would you just leave the third project with one bullet point about winning the award then? There wasn’t anything too spectacular about it, it’s just a basic React SPA.

If it’s what you have, then go for it. You list the three best projects you have. Hopefully you are working on new projects, too.

Would you just leave the third project with one bullet point about winning the award then? There wasn’t anything too spectacular about it, it’s just a basic React SPA.

That is not what I would call AI. I’m no expert in AI, but to me that is just a strategy that you programmed in. AI wouldn’t need you to program in a strategy. It would teach itself strategies through experience. It would start to make predictions like “He put his sub here, so his battleship is probably here …” Given enough time and experience, it would come up with strategies that would never have occurred to you. I would just say “Coded intelligent firing strategies for computer player.”

It seems impossible to keep it to one page …

You can do it. It took me a few tries.

… unless I just cut out the previous career stuff entirely.

Or unless we tighten it up.

Again, I would group the two nursing ones together and the investigation ones together.

Heck, when I did my first coding resume, I was on my 3rd career and had studied in 5 different colleges/universities. I got it down to one page. I had spent years as a professional musician, music lessons teacher, arranger, transcriber, musical director, chess teacher, electronics teacher, and academic tutor. That all got combined into two lines “Musician/Teacher/Tutor” with “Playing music (on sea and land) and teaching music/chess/etc.” underneath it. I left off proofreader and grant writer - they got the idea. It’s OK if those are a little vague - they don’t really care. If they do, they will ask about it in the interview. You’re not hiding anything - you just aren’t overloading them with every detail and are focusing on the details they need the most. That is a good thing.

I thought it might be important or worth mentioning since the unique background seems like something that might set me apart from the thousands of other boot camp grads.

Yes, worth mentioning. People noticed that I had a background in music, that I had a degree and years of experience. A few asked questions. Yes, I think it really helped. But I’m not going to cram those details in my resume - it would just either crowd out information they need, make it difficult to find, or remove aesthetically pleasing white space.

Your new resume…

It’s getting better.

The header…

Do we need your zip code? It just seems odd to me, out of place.

Could your links be off to the right, in a borderless table? It would create a little more space and be less jumbled. I think your link for the portfolio should show the address - someone may print this out - at least then they could get to your portfolio.

The intro…

I already discussed it above. If you want to talk about your strengths and what you learned from your previous careers, that is a paragraph in your cover letter, not your resume.

The skills…

I still think those skills should be in columns. It is easier for the eye to track if the starts of words line up. I would create 3-5 columns. Some of those can be combined. “Ruby/Rails” - “JavaScript/TypeScript” - if you say “GitHub”, do you have to say “git”?

You can remove the word “Technical” and just call the sections “Skills” and “Projects”. They know that these aren’t your artistic skills or your emotional development projects.

The projects…

It looks better.

A link to the blog post?

For the last one, do you need to explain to them what a recipe app is? Can’t it just be one line: “A React recipe website with a JSON server - won school award for code and CSS”

Experience…

Again, both medical things can be combined into one, with no bullet point - you don’t need to explain what the job is - they don’t care.

I would just have:

Foo Surgical Center - Bar Hospital
Nurse - post anesthesia and intensive care

With the formatting, and location and date range, of course. Just give one date range - don’t worry about the gap. If they ask about it, you can explain they won’t care about that. They might be curious about the type of work you did - if they are, they will ask. Do the same thing for the last two jobs. And like I said, get rid of the bullet points.

OK, look at it from my perspective. You state the job as “Post Anesthesia Care Nurse”. OK, I have a mental picture in my head. Then you explain it as “Managed postoperative patients coming out of anesthesia”. What in that second line are you telling me that wasn’t obvious from the first line? If I am dumb enough to not have a clue what that job is, the explanation won’t help. And all the care about is a vague idea, anyway. Unless it involves programming, they don’t care. It’s good to be short about things they don’t care about - you’re saving their time. It’s not deceptive - it’s polite. This isn’t your tell-all biography - it’s a list of things that they think is important to make the decision on whether or not to move forward.

I think we can easily get this down to one page. With my suggestions, we can save 1 line in the header, 1-2 lines in the intro, 9 lines in the experience… I think we might add a line or two in the skills.

You might also be able to save a little space …

I hate to eat up which space, but doing that a little is worth getting it on one page.

You can always shrink the margins a little, especially the top one.

The spacing between sub-sections? Does it need to be a full height line? The start of each project, experience, and education is clear from the bold font - I might just do a half height separation. Honestly I think that would look a little better. As it is, it looks like you just used a CR for separation, as opposed to doing styling.

Again, just spend some time looking at other resumes. Google “best resume designs” or “good resumes for programmers” and stuff like that. Keep in mind that some of those designs might get too extreme, but you might get some ideas.

At the risk of more shameless self-promotion, years ago I wrote a doc on my thoughts on getting a first job.

I would also add that you probably don’t need to redact so much from your resume when you post it here. I would definitely block your phone and email, but the name of every company - most people don’t do that.

``Looking at your portfolio…

As a joke, you might add below your name "(no relation :wink: ) - there is a famous programmer with the same last name. I don’t know, maybe not.

Your skills on the landing section - good. I would also have a section below that that lists all of your other skills. Just list them all (within reason). Or have a separate section for that.

I’d have a link to your resume pdf.

I took a look at the famous Battleship game…

As far as playing, it looks pretty good. I might make the game squares a little more opaque. I might have a key - I lost track of which blue was what. I can fire the same square more than once? I might add a score board.

Things like this:

      if(axis === 0) {
        axis = 'x';
      } else {
        axis = 'y';
      }

could be:

      axis = (axis === 0) ? 'x' : 'y'

or probably:

      axis = axis ? 'y' : 'x'

although it does look odd to me to switch between number and string.


  if (type === "carrier") {
    length = 5;
  }
  if (type === "battleship") {
    length = 4;
  }
  if (type === "sub" || type === "destroyer") {
    length = 3;
  }
  if (type === "patrol boat") {
    length = 2;
  }

Use a switch?


  const isGameOver = () => {
    if (sunkShips === 5) {
      return true;
    }
    return false;
  };

how about:

  const isGameOver = () => sunkShips === 5;

I don’t know, in general it looks competent. I would want it to be more readable. That is something they will be looking at, Is this someone we want to let in our code base? Readability is very, very important, but it’s also hard to teach. Have you read Clean Code? I don’t like that there are so many global variables and so few files.


Looking at your recipe thing so I can see your React (what I do)…

  const [ recipeIndex, setRecipeIndex ] = useState(0);  // Used to iterate another recipe of day
  const [ recipes, setRecipes ] = useState(false); // List for recipe of day
  const [ recipe, setRecipe ] = useState(false); // Currently shown recipe of day
  const [ card, setCard ] = useState(''); // Card for current recipe of day

You rely too much on comments. Every time I want to add a comment, I stop and ask myself if the code can be organized better or if I can use a better variable name or if I can wrap this code in a well named function. About the only time I put a comment is if there is something from an outside module over which I have no control.

Instead of:

const [ card, setCard ] = useState(''); // Card for current recipe of day

why not:

const [ currentRecipeCard, setCurrentRecipeCard] = useState('');

now there is no need for the comment and wherever it is used, it will be very clear.


  const [ recipes, setRecipes ] = useState(false); // List for recipe of day

why is the default state false? I think null or even undefined would be more semantic.

Then this

  useEffect(() => {
    if(recipes !== false) fetch2();
  }, [recipes, recipeIndex])

should be

  useEffect(() => {
    if(recipes) fetch2();
  }, [recipes, recipeIndex])

“fetch1” and “fetch2” are terrible names. And if you passed in the setters, you could make those pure functions - easier to move out of the way and test.


I wouldn’t have all that logic in App.js. That should be in something that handles the recipe main page or whatever. App should just be about setting up the app.


This is a big no-no.

const key = 'redacted';

at the very least that should be in a .env file. Probably it should be in a microservice that your app calls so the key can be hidden.


const [ loaded, setLoaded ] = useState(false);

and

    loaded === 'API' ? 

Wait, what type is “loaded”? What does that variable mean?

For that matter:

        setLoaded(loaded => 'API');

could just be:

        setLoaded(()=> 'API');

or

        setLoaded('API');

In Details.js, in your JSX is a long set of nested ternaries - hard to track with the eyes. Why not do a return early pattern for the spinner. And the other two sections are almost identical - why not have one? You could have what is different in smaller ternaries or as variables before the return. It would be smaller and easier to read.


  <div style={imageLoaded ? {display:'none'} : {} }>
    {Spinner()}
  </div>

should be

  <div style={imageLoaded ? {display:'none'} : {} }>
    <Spinner />
  </div>

In Recipe.js:

  function like(e) {
    e.stopPropagation();
    if(liked === false) {
      // do something
    } else if(liked === true) {
      // do something else
    }
    setLiked(liked => !liked);
  }

Why the else if? Is there another posibility?

  function like(e) {
    e.stopPropagation();
    if (liked) {
      // do something
    } else {
      // do something else
    }
    setLiked(liked => !liked);
  }



Those are just some thoughts. Those are thing kinds of things that get noticed in code reviews.

Thanks again. I really appreciate the detailed feedback. The resume was anonymized for some reddit thread where the instructions said to do that. I don’t care too much about it or I wouldn’t have posted the portfolio site.

@kevinSmith This is very helpful! Thank you.