

Soft Skills Engineering
Jamison Dance and Dave Smith
It takes more than great code to be a great engineer. Soft Skills Engineering is a weekly advice podcast for software developers about the non-technical stuff that goes into being a great software developer.
Episodes
Mentioned books

Nov 16, 2020 • 33min
Episode 236: Making mistakes and Lowball offer
In this episode, Dave and Jamison answer these questions:
Questions
Can you talk about making mistakes at work? How do you handle it, how do you frame it when you talk about it, do you try to minimize or be honest about it, how soon is it to pretend nothing went wrong and you’re doing great, etc. Thanks!
Hello there, Huge fan of the show here, I often laugh hysterically listening to it on long commutes and people think I am on drugs.
I just finished grad school in a foreign country and i am in the middle of negotiating a job offer with a company whose field of expertise is my passion.
All seem to be going well and i have a feeling that the company is hugely interested in me. HOWEVER when we arrived at the salary subject i found that WAN… WAN… they want to pay me a fresh graduate salary even though i have 3 years of part-time and 1 year of full-time development experience abroad; i know their decision is not based on my skills as i did not even have to do a technical test (we mainly talked about the tools i used in the past and the work i did related to that field and it was convincing enough).
As i see the situation, I have 2 options of either take their offer and use it as a learning experience before switching to a well paying company or say No and go on Vettery?
Let me know what you would do in my case.
Merci
Show Notes
Patrick McKenzie’s article on salary negotiation: https://www.kalzumeus.com/2012/01/23/salary-negotiation/

Nov 9, 2020 • 27min
Episode 235: Bus factors and toxic time bomb
In this episode, Dave and Jamison answer these questions:
Questions
I work as an IC in a team which owns 3 very different and large parts of the system. Our team is 4 experienced engineers and 1 intern. Historically each person was assigned to a single part and, as you might expect, we have a bus factor problem. With this layout we’re making as much progress as possible and it helps us to compete on the market but creates a dangerous situation if someone would decide to leave (spoiler: I will).
What would you do if you were IC, team lead or a manager in such a team? We’re already exceeding headcount so it’s not an option.
I am a developer with 1.5 years of experience, and was put on a greenfield project to rapidly develop a new application. We have a contractor that came onboard to help with the process. On the very first day of meeting this person I noticed their propensity to not allow anyone else to talk and interrupt.
Fast forward several months and this person has really become a micromanager, they’re requesting the source files from our UI contractor, they got another person kicked off the project because they didn’t like the changes they were making interfering in their development process, they have constantly hoarded all the real dev work and work frequently until 9pm.
I have voiced my concerns to the PM, mainly about the bus-factor, since layoffs are likely coming and this person likely won’t be converted.
At this point I am just tuning out on this project. I do the scrap issues the contractor basically doesn’t want, but I am seeking learning opportunities elsewhere within the company and have nearly zero interest in the project which I see as a ticking time bomb.
What would you recommend? I could potentially escalate the issue to the manager of our team but I basically see working with this individual as toxic and the PM as autopiloting to the finish line.
Show Notes
https://www.computerworld.com/article/2534312/the–640k–quote-won-t-go-away—-but-did-gates-really-say-it-.html - apparently the bill gates quote is apocryphal

Nov 2, 2020 • 29min
Episode 234: Job hopping and untenable counter-offers
In this episode, Dave and Jamison answer these questions:
Questions
How can I stay at a job for a long period of time?
I’m on my second job after graduating and as I’m approaching my first year at this company I’m already thinking of moving somewhere else. A similar thing happened at my previous job where I stayed for around 15 months.
I feel that by switching companies so often I’m hurting both my personal development and future employability. At the same time the easiest way to get a better role or a raise is to switch jobs.
What should I do? Have I just not been lucky enough to find a company that offers better career progression which would give me a reason to stay? Is the problem with me? How did you deal with this in your own careers? How about when you’re making hiring decisions - are you wary of hiring frequent job switchers?
Great podcast btw, keep it up
Is firing the new counteroffer?
A junior dev on my team confronted us with an offer he got from another company. He is already paid at the limit of his range, his upcoming performance review is “not great, not horrible”. The amount offered to him would put him in our lower senior range and there is no justification for that at all.
He made it clear he is in a complicated financial situation (got his bank account emptied and credits maxed out).
I don’t see a path to him getting close to the salary he got offered in the next year or even longer. We are not a company that fires people if they do not grow at a certain rate, but given his situation he is probably not going to stick around for long.
He also made it clear he would like to stay if not for the salary, but now I am thinking it might be the best for the company to fire him, maybe even for him. Is that cruel, which other options am I missing?
Given your eternal backlog of questions your advice is probably coming late, I would still be interested in it.
Thanks for all the other advice, it’s both entertaining and very helpful.
Best from Colombia

Oct 26, 2020 • 34min
Episode 233: Manual unit testing and WFH demotivation
In this episode, Dave and Jamison answer these questions:
Questions
My (very large) company has an alternative definition of “unit testing”. Unit testing at this company refers to when a developer manually tests their code in whatever interface the code is associated with after they write it. An example usage would be a standup status update such as “I finished writing the code for ticket x I am just doing unit testing to make sure my code works”. My concern is that there is very little real unit testing at this company and the I think the misuse of this term makes it harder for real unit testing to become more prevalent. Is this worth speaking up about?
Feeling Isolated and demotivated while working from home.
With COVID 19 pandemic we have been working from for more than six months and looks like it will be another six months at least before we get back to work.
We are already a geographically distributed team and with work from home the interactions within team have become harder. We do have once week team meeting but there are more than 20 people and it is usually a tech talk.
Sometimes I go days without interacting with the team outside of slack/email. I have realized this tends to make me more distracted or demotivated.
Interacting with team members and seniors within team gives big picture information, ongoing projects etc. that helps keep me motivated.
I have tried proposing virtual happy hours or even meetings within small groups who working closely once a week or so. Understandably not everyone is enthused about virtual happy hours. Do you guys have any other suggestions?
Show Notes
https://www.martinfowler.com/bliki/UnitTest.html
https://www.amazon.com/Art-Gathering-How-Meet-Matters/dp/1594634920
https://threadreaderapp.com/thread/1304143989939949568.html

Oct 19, 2020 • 33min
Episode 232: "Junior" developer and NDA'd
In this episode, Dave and Jamison answer these questions:
Questions
First I want to say thank you and I really love the show and all your helpful advice. I think it has made be become a better developer.
I am a current junior in high school and the lead developer (intern) of the small non profit with approximately 10 college and graduate interns on it. School has recently started to push me away from the project (not enough time in the day) but I still want to be a source of help. I wrote a very significant portion of the code for the current application, however the founder wanted this to be shipped as quickly as possible and this led in a sense to a bit of a cobbled together mess of microservices and no documentation. My main problem is that although I feel I have the technical skills to lead the team, I really do not have much experience in terms of team management, especially in the case of leading a development team. During the main development of the application, it mainly consisted of me and this other developer writing the code. However now that they are gone, I am the only person (along with someone else who kind of has an understanding) with knowledge and familiarity of the code base. Sorry this is long, but I guess what I am asking is how can I (i) create a team structure that will not only prepare interns for real world development as well as making sure that the application remains after I move on and (ii) help build processes and structure that will allow people to meaningfully contribute to the code base.
Also, just for more information, I have not yet added unit tests or code reviews. Most of this just usually became just as me.
I work in AI startup and planning to change my job. My contract is full of NDAs about pretty much everything. How do I talk with companies and recruiters about things I do when I’m not allowed to disclose project details like technologies or libraries used, algorithms for data manipulation, or even where we take data from, bought or downloaded. I can’t say anything more than “I work on AI and we do music manipulation in a programming language”. What do I say?

Oct 12, 2020 • 16min
Episode 231: Freedom for me not for thee and optimizing for growth
In this episode, Dave and Jamison answer these questions:
Questions
Hey Dave & Jamison,
I have a problem with a more senior engineer in my project, I cannot really predict or follow his thought process.
They introduced best practices about organizing code, Git branching, software versioning, etc. to the project. Which is great, because I like well-defined processes. And I followed those processes happily.
Now, there are some occasions where the senior engineer violates one of the processes.
When they do that I ask why, then they give me the reason and I nod because I think that make sense.
Fast forward a little, and I also choose to violate the process the same way, for the same reasons. During the code review, the senior engineer rejects my approach because it “does not make sense”. SurprisedPikachu.jpg
I tried a few times to challenge them in these situations but more often than not they either stood their ground or gave the “agree-to-disagree” nod which demoralizes me. So now, I’m inclined to just follow what they say if this situation happens.
I understand that there is some nuance for a certain thing to go a certain way, but when this happens I am always left puzzled and spend time re-calibrating the idea/approach.
What is the best way(s) to deal with these kind of people?
Anyway, love the show and keep up with the good work!
Do you think that a job that helps you constantly grow is more important than a job that promises titles?

Oct 5, 2020 • 29min
Episode 230: Not seeking promotion and taking code
In this episode, Dave and Jamison answer these questions:
Questions
Taylor asks,
Is it frowned upon to not want to be promoted and get more responsibility? I want to keep a good work-life balance but feel that saying so will have my manager think less of me.
Hi Dave and Jamison, love your show! The time has come to quit my job and I am wondering if I should keep a copy of the scripts I wrote for the project?

Sep 28, 2020 • 27min
Episode 229: Other people's code and moving into product management
In this episode, Dave and Jamison answer these questions:
Questions
I have been working at a large tech company for two years now, after I graduated college. My job title is ““Software Engineer””, but I have barely written any code on my job in the past two years. I’m on a product team that doesn’t own any infrastructure, and when the product managers want us to build something, we find out which teams in the company own the infrastructure and stitch a product together. We often get push backs because usually the infrastructure we need to build a product belong to some entirely different team who do not have stakes in the product we’re building.
I am worried that my coding skills are deteriorating, since most of my time at work are not spent on coding. For example, meetings where people hash out how to do something in a system none of us are familiar with, chasing down people in other teams to ask them to squeeze out time from their busy schedule to help my team, and completing process paperwork. On the rare occasions when I do make code changes, it’s been copy-and-pasting another section of the code/config and changing a few parameters.
It seems to me that success on this job depends mostly on knowledge of the different internal systems, as well as the social capital of knowing people on different teams. Is this normal? Is this what software engineering is about?
Hi there! Love the show and your fun but useful answers.
I have a career question and would love to hear what you think.
I’ve been an Engineer for several years now and was recently asked if I’d like to move into Product Management. At first this sounded great. I’d get to set the direction of the product, get involved with strategic planning and roadmap meetings, and generally have more input into my squads work.
The thing is … that isn’t what it is at all. Most of the time I am fielding requests from marketing and sales people for sales collateral, sitting on customer calls, and digging through dashboards to find enough ‘evidence’ to prove why we should prioritize the backlog the way I have in mind, and I have even become the ‘bad guy’ when the squads ideas don’t line up with the Product team.
Have I made a terrible mistake? Is Product Management really a good move for Engineers?

Sep 21, 2020 • 26min
Episode 228: Unpaid team lead and banking hours
In this episode, Dave and Jamison answer these questions:
Questions
I’m a team lead right now, but I’m leaving the company. When I discussed with my manager, I recommended a team member to take over my position and suggested raising his salary. In the end, the manager asked that team member to take over as team lead, but refused to raise his salary or even give him the title.
He said he needs to prove that he can take responsibility as a team lead. Then he will get the title and raise. But I feel they just want to procrastinate and save the money.
What can I do to help my team member fight for the title and raise?
Hi Dave and Jamison. You have a great show and I really enjoy listening. I am currently a software engineer at a small/medium sized tech company in the healthcare industry. I was recently asked to interview for a similar role at a pretty large hedge fund. I am wondering if there would be a big culture shift if I were to end up making that change. I am under the (possibly inaccurate) impression that for bankers something like an 80+ hour work week is common. I’m wondering if this impression is accurate, if it extends to the finance industry as a whole, and how much it extends to developers rather than bankers/traders if so. I also remember you guys mentioning in a previous episode that video game developers also typically work long hours. Are there other industries where this culture is typical?

Sep 14, 2020 • 31min
Episode 227: Junior expectations and manager flakiness
In this episode, Dave and Jamison answer these questions:
Questions
What should I expect from a junior develop, and how can I help them grow?
A junior developer joined my team of 4 a few months ago. He has learned things at a reasonable speed but it is still hard for him to implement new features without any help or existing code to copy.
In past jobs, I usually gave juniors simple, easy tasks, but we don’t have that simple tasks in my current job because we’re working on complicated internal systems.
Also other junior developers spent lots of their private time learning. I don’t think this junior has spent any time learning in his private time.
I don’t want to ask them to learn in their private time, but I just can’t help feel annoyed about the fact that he still cannot pick up a well-defined task in our backlog and complete it by himself. I think he really needs to take some time learning some basics like networking and some skills like keyboard shortcuts of text editors. I know there is lots to learn. However, sometimes I lose my patience when I have to repeat myself.
In addition to lack of knowledge and skills, I feel that he always waits somebody to tell him what to do and explain everything to him. I tried to tell him the whole picture of the project before explain a specific task, but I couldn’t see any improvement.
What could I do to help him (or make myself feel better)?
I’ve worked with 3 managers in the past 2 years at my first company and all of them seem to have trouble producing results from team meetings and one on ones. More specifically, my managers have mentioned things/events/changes they would plan to do with the team or me and several weeks/months go by and the idea is never mentioned again. At times it felt like maybe it was me that was unable to produce the outcomes of said ideas or that maybe I was some sort of a lost cause. However, my most recent manager doubled the ratio of ideas:results, so I don’t think it’s just me. For my one on ones, we have a long running list of things we talk about and even the trail there doesn’t seem to amount to anything.
How do I hold my manager accountable for things they say or plan to do? How do I bring up these conversation on one-on-ones without making it seem like I’m the one managing them?