devbook
Team & Process

Soft Skill

Essential soft skills for software engineers and technical professionals

Soft Skill

Technical skills get you hired, but soft skills determine how far you'll go in your career.

Communication

Written Communication

Clear Documentation

❌ "The thing doesn't work sometimes."

✅ "The user authentication API returns a 500 error 
when the password contains special characters. 
Steps to reproduce:
1. Navigate to /login
2. Enter valid email
3. Enter password with @ symbol
4. Click submit
Expected: Successful login
Actual: 500 Internal Server Error"

Effective Emails

Subject: [Action Required] Database Migration - Friday 3PM

Hi team,

We're migrating the user database this Friday at 3PM PST.

Action Required:
- Stop all deployments after 2PM
- Monitor #incidents channel during migration
- Test your features post-migration

Timeline:
- 2:00 PM - Deployment freeze
- 3:00 PM - Migration begins
- 3:30 PM - Estimated completion
- 4:00 PM - Deployments resume

Questions? Reply or ping me on Slack.

Thanks,
John

Code Comments

// ❌ Unhelpful comment
// This function processes data
function processData(data) {
  // ...
}

// ✅ Helpful comment
/**
 * Validates and transforms user input for storage
 * 
 * Removes HTML tags to prevent XSS attacks and normalizes
 * whitespace. Throws ValidationError if input exceeds 1000 chars.
 * 
 * @throws {ValidationError} If input is invalid or too long
 */
function processData(data: string): string {
  // ...
}

Verbal Communication

Stand-ups

Yesterday:
- Completed user authentication feature
- Fixed bug in payment processing

Today:
- Working on OAuth integration
- Code review for Sarah's PR

Blockers:
- Waiting for API key from external team

Technical Explanations

Explain to different audiences:

For Engineers:
"We're implementing a Redis cache layer with an LRU 
eviction policy to reduce database load."

For Product Managers:
"We're adding a caching system that will make the app 
faster and reduce server costs."

For Executives:
"This optimization will improve user experience and 
reduce infrastructure costs by 30%."

Collaboration

Pair Programming

As Driver

  • Think aloud
  • Explain your reasoning
  • Be open to suggestions
  • Take breaks

As Navigator

  • Give space to think
  • Ask clarifying questions
  • Suggest alternatives
  • Stay engaged

Code Reviews

Giving Feedback

❌ "This is wrong."
❌ "Why would you do it this way?"
❌ "This code is terrible."

✅ "This will throw an error if the array is empty. 
Consider adding: if (!items.length) return []"

✅ "I see you're using a for loop here. Have you 
considered Array.map()? It's more idiomatic and 
easier to read."

✅ "Great solution! One small thing: we can simplify 
this using our existing utility function."

Receiving Feedback

✅ "Good catch! I'll fix that."
✅ "That's a great point. I'll update it."
✅ "I see what you mean. I was thinking X, but Y makes more sense."

❌ "That's how it's supposed to work."
❌ "This is fine as is."
❌ "Whatever, I'll change it."

Meetings

Before

  • Review agenda
  • Prepare questions
  • Test screen sharing

During

  • Be present (close distractions)
  • Take notes
  • Ask questions
  • Contribute ideas

After

  • Send summary/action items
  • Follow up on commitments
  • Share relevant resources

Problem Solving

Asking Good Questions

SMART Framework

❌ "It doesn't work."

✅ "The login API returns a 401 error when I use 
the production credentials in the staging environment. 
It works in development. Could this be a CORS issue?"

Components:
- Specific: What exactly is broken?
- Measurable: What's the error/behavior?
- Actionable: What have you tried?
- Relevant: What's the context?
- Time-bound: When did this start?

Before Asking

  1. Search documentation
  2. Check error logs
  3. Try debugging
  4. Search Stack Overflow
  5. Review similar code

When Stuck

  • Explain the problem
  • Show what you've tried
  • Share relevant code
  • Describe expected vs actual behavior

Debugging Approach

Systematic Method

1. Reproduce the issue
2. Isolate the problem
3. Form hypothesis
4. Test hypothesis
5. Fix and verify

Example:
Problem: Users can't log in

1. Reproduce: Confirmed login fails with test account
2. Isolate: Check logs → Database connection error
3. Hypothesis: Database credentials expired
4. Test: Check credential expiry → Expired yesterday
5. Fix: Update credentials → Login works

Time Management

Prioritization

Eisenhower Matrix

Urgent + Important     | Not Urgent + Important
- Production bugs      | - Technical debt
- Security issues      | - Learning
- Blocker tickets      | - Documentation

Urgent + Not Important | Not Urgent + Not Important
- Some meetings        | - Busy work
- Some emails          | - Distractions

Focus Techniques

Pomodoro Technique

25 min work → 5 min break → Repeat 4x → 15-30 min long break

Time Blocking

9:00-11:00   Deep work (coding)
11:00-12:00  Meetings
12:00-1:00   Lunch
1:00-2:00    Code review
2:00-4:00    Deep work (coding)
4:00-5:00    Communication (email, slack)

Deep Work

  • Block distractions
  • Single task focus
  • Schedule deep work time
  • Protect focus time

Emotional Intelligence

Self-Awareness

  • Recognize your emotions
  • Understand your triggers
  • Know your strengths/weaknesses
  • Accept feedback gracefully

Empathy

Instead of:
"Your code is buggy."

Try:
"I found an issue. Let's debug it together."

Instead of:
"This requirement doesn't make sense."

Try:
"Can you help me understand the use case for this?"

Handling Stress

Healthy Coping

✅ Take breaks ✅ Exercise ✅ Talk to colleagues ✅ Set boundaries ✅ Ask for help

Unhealthy Coping

❌ Work longer hours ❌ Skip meals ❌ Isolate yourself ❌ Ignore the problem ❌ Burn out

Mentorship

As a Mentor

  • Listen actively
  • Share experiences
  • Provide guidance, not answers
  • Encourage growth
  • Give constructive feedback

As a Mentee

  • Come prepared
  • Ask specific questions
  • Take notes
  • Apply feedback
  • Follow up

Giving Presentations

Structure

1. Hook (30 seconds)
   "Last month, our checkout page had a 45% abandonment rate."

2. Problem (2 minutes)
   "We discovered three major friction points..."

3. Solution (5 minutes)
   "Here's what we built..."

4. Results (2 minutes)
   "Abandonment dropped to 28%..."

5. Takeaways (1 minute)
   "Three lessons learned..."

Tips

  • Know your audience
  • Use visuals
  • Tell stories
  • Practice
  • Time yourself
  • Prepare for questions

Conflict Resolution

Approach

  1. Listen: Understand all perspectives
  2. Clarify: Ensure you understand correctly
  3. Find Common Ground: What do you agree on?
  4. Explore Options: What are possible solutions?
  5. Agree on Action: What's the next step?

Example

Conflict: Disagreement on technical approach

❌ Bad:
"My way is better. Let's just do it."

✅ Good:
"I see your point about performance. I'm concerned 
about maintainability. Can we explore a middle ground? 
What if we optimize the critical path and keep the 
simpler approach for less-used features?"

Networking

Building Relationships

  • Attend meetups
  • Contribute to open source
  • Share knowledge (blog, talks)
  • Help others
  • Stay in touch

LinkedIn

  • Keep profile updated
  • Share learnings
  • Engage with content
  • Connect meaningfully

Twitter/X

  • Share technical insights
  • Engage with community
  • Build in public
  • Be authentic

Career Development

Setting Goals

SMART Goals

❌ "Get better at React"

✅ "Complete the Advanced React course and build 
a side project using hooks, context, and suspense 
by end of Q1"

Specific: Advanced React concepts
Measurable: Course + project
Achievable: 3 months
Relevant: Career growth
Time-bound: End of Q1

Continuous Learning

  • Read documentation
  • Follow industry leaders
  • Take courses
  • Build side projects
  • Attend conferences
  • Read technical books

Personal Branding

  • Create content
  • Contribute to open source
  • Speak at events
  • Help others
  • Be consistent

Difficult Conversations

Giving Critical Feedback

Framework: SBI (Situation, Behavior, Impact)

"In yesterday's meeting (Situation), 
when you interrupted Sarah multiple times (Behavior), 
it made her feel unheard and slowed down the discussion (Impact). 
Could we try letting people finish their thoughts?"

Receiving Criticism

✅ "Thank you for the feedback. Can you give me 
specific examples so I can improve?"

❌ "That's not true. You're wrong about me."

Remote Work Skills

Communication

  • Over-communicate
  • Be responsive
  • Use video when possible
  • Set clear expectations
  • Document decisions

Boundaries

  • Set working hours
  • Create dedicated workspace
  • Take breaks
  • Log off intentionally

Async Work

  • Write clearly
  • Provide context
  • Don't expect immediate replies
  • Use threads effectively

Work-Life Balance

Setting Boundaries

✅ Define work hours ✅ Turn off notifications ✅ Take vacation ✅ Separate work/personal ✅ Say no when needed

Preventing Burnout

  • Take regular breaks
  • Exercise regularly
  • Maintain hobbies
  • Connect with people
  • Get enough sleep

Leadership

Leading Without Authority

  • Influence through expertise
  • Build consensus
  • Help others succeed
  • Take initiative
  • Communicate vision

Decision Making

  • Gather information
  • Consider perspectives
  • Evaluate trade-offs
  • Make timely decisions
  • Communicate reasoning

Key Takeaways

  1. Communication is crucial - Most problems are communication problems
  2. Empathy matters - Understand others' perspectives
  3. Collaboration over competition - We're better together
  4. Keep learning - Technical and soft skills both
  5. Take care of yourself - You can't pour from an empty cup
  6. Build relationships - Your network is your net worth
  7. Give feedback kindly - Be constructive, not critical
  8. Ask for help - It's a strength, not a weakness