It takes more than great code
to be a great engineer.

Soft Skills Engineering is a weekly advice podcast for software developers.

The show's hosts are experienced developers who answer your questions about topics like:

  • pay raises
  • hiring and firing developers
  • technical leadership
  • learning new technologies
  • quitting your job
  • getting promoted
  • code review etiquette
  • and much more...

Soft Skills Engineering is made possible through generous donations from listeners. A heart with a striped shadowSupport us on Patreon

A speech bubble

Why should you listen?

Here's what listeners say:

Recent Episodes

Latest Episode

Episode 400: Underperforming intern and upskilling


In this episode, Dave and Jamison answer these questions:

  1. I’m a junior software engineer who has been placed in charge of a handful of graduates and interns who have joined my team. The project is fairly technical.

    For the first two weeks, the new starters were pair programming. That went well, and after talking to each new starter they were eager to start working individually.

    We’re one month in and I’m concerned about the performance of one of the engineers, “Morgan” (fake name). Morgan has completed a degree from a good university we often hire from but appears to lack any knowledge of software development. As a result, Morgan seems to struggle with researching and working through problems beyond following tutorials. I got the impression that while pair programming Morgan didn’t contribute much.

    Is there anything I could do to give Morgan the boost needed to start rolling? I’m sure I could spoon feed Morgan, but it would monopolize my time when I’m already spending time with the other new starters on top of my own tasks.

    I want to give Morgan a shot, but I don’t know what to do. At what point do I tell my manager about my concerns?

    Things I’ve encountered:

    • When told to insert a colon to fix a syntax error, Morgan didn’t know what a colon was.
    • Morgan didn’t take any subjects at university on data structures or algorithms, which made it hard to explain the tree used for caching.
    • Morgan wanted to do some DevOps having done some at university. Morgan appears to have no understanding of Docker.
    • Morgan said they studied React at university but has demonstrated a lack of understanding to write React code.
    • The last issue Morgan worked on required them to read some source code of a library to verify its behavior. Even after explanation Morgan didn’t understand how to find the calling ancestor of a given function.
    • Morgan has never heard about concurrency.

    Even all these issues in aggregate would be fine with me, but the continual resemblance and behavior of a stunned mullet isn’t encouraging. After being told to research a concept, Morgan must be told the specific Google query to type in.

    Thanks, and apologies for the essay!

  2. Listener Confused Cat asks,

    I spent just over four years on a team where technical growth was lacking. Recently, I transitioned to a new team within the same company, and I’m enjoying the atmosphere, the team dynamics, and the opportunity to engage in more challenging software development tasks. Fortunately, my motivation is beginning to resurface.

    However, I’ve noticed that my technical skills have become somewhat rusty. While I can still deliver systems and features, I feel like I’m falling behind compared to some of my peers. This self-awareness is causing me to doubt myself, despite receiving no negative feedback from my current team or supervisor. It’s not just imposter syndrome; I genuinely feel the need to upskill.

    How can I navigate this situation effectively? What strategies would you suggest for advancing my skills while holding a senior position and preventing feelings of inadequacy from affecting my performance?

A smiling speech bubble

Episode 399: Higher paid than my boss and crossing over to management


In this episode, Dave and Jamison answer these questions:

  1. Listener Jim asks,

    I am currently a senior software engineer in a well funded (but not profitable yet) startup. I am highly effective and well regarded, to the point where the tech lead also comes to me with questions and always takes my technical input onboard. I also get along very well with the rest of the team and with my manager. I am confident that I am in a good position to bargain for a decent pay bump, however there’s a chance I might be asking for pay that exceeds the salary of the tech leads or even my manager’s. Would it be a hard no from the start if that’s the case? Do you know of situations where certain people were paid higher than someone from a higher position? Thank you, I’m loving the show!

  2. I did it. I crossed over…

    I’ve been a software engineer for nearly 25 years. I worked my way from junior to senior, staff to principal, and for the last six years I’ve been a technical articect.

    I’ve been very deliberate in my caraeer path and told myself that I would always be on the tecnical side of the wall rather than the managerial side. Most of my boses over the years have been former technical folks that just seemed to have step off the technology train at some point. Maybe they couldn’t keep pace with the rapid changes in their older age, or maybe they just didn’t like IC work, who knows? But I always had this feeling about them, like “they just don’t get it anymore”, or “their technical knowledge is so outdated, how can they make good decisions”? Much like a teenager looks at their parents who stepped off the fassion train many years prior and now doesn’t want to be seen in public with them.

    Well, I just accepted a job leading a team; with headcount, and a budget, and the works. It was not the role I really wanted, but in this market, I didn’t have a ton of choices. It’s billed as sort of a hybrid Architect/Manager role, but it *feels* like I crossed a threshold. I feel like my future will be that of a retired race horse living out the last of his days if the middle-management pasture. So, 2 questions:

    1. What can I do to not become a hollowed out shell of myself as the technology train eventually starts to out pace me, and eventually speed away at ludicrous speed, because I’m not “doing it” every day
    2. Is this just the envitable for every SE? I mean, I don’t see a lot of 70 year old coders, so this is normal, right?
A smiling speech bubble

Episode 398: Tech lead for contractors and how to detach my ego from my work


In this episode, Dave and Jamison answer these questions:

  1. How do you mentor a junior-level contractor?

    My company has been hiring a lot of contractors lately. Sometimes they hire out a full team form the contracting shop to build a particular feature. Other times, it’s an individual developer, but with the same general mandate: implement some specific set of features from our backlog over x number of months, then move on to the next project somewhere else. Generally this happens when we have extra budget that needs to be spent for the year, etc.

    It works well enough when the contractor is experienced and able to self-direct and focus on just getting the work done; but sometimes the contractor is less-experienced and needs lots of guidance and mentorship.

    Hiring and mentoring a less-experienced full-time developer is a long term investment. Over time that person will become more productive and hopefully stay with the company long enough to provide a net benefit. But when the person is only contracted for a short time, it seems we’re effectively paying the contracting agency for the opportunity to train their employees for them.

    As a senior engineer / tech lead, should I devote the same amount of time to mentorship and growth of these contractors, or should I just manage their backlog and make sure they only get assigned tasks that are within their ability to finish before the contract runs out?

  2. Hello, I have a really hard time not attaching my identity to my work. I know I’m not supposed to, but i really take pride in what I do and i feel like if I don’t, my performance would take a hit. But where this really bites me is taking it really personally when things go wrong (like when a customer submits a bug report and I find that it was something I wrote, or when I take down prod and have to involve a whole bunch of C suite people to address and post mortem the issue). I understand humans make mistakes but it eats me up so much inside every time. I know all these things but I have a hard time really internalizing them especially when things go south at work. What are some practical ways I can train myself to approach things without emotion?