Skills of a Successful Software Engineer

Book description

Skills to grow from a solo coder into a productive member of a software development team, with seasoned advice on everything from refactoring to acing an interview.

In Skills of a Successful Software Engineer you will learn:

  • The skills you need to succeed on a software development team
  • Best practices for writing maintainable code
  • Testing and commenting code for others to read and use
  • Refactoring code you didn’t write
  • What to expect from a technical interview process
  • How to be a tech leader
  • Getting around gatekeeping in the tech community

Skills of a Successful Software Engineer is a best practices guide for succeeding on a software development team. The book reveals how to optimize both your code and your career, from achieving a good work-life balance to writing the kind of bug-free code delivered by pros. You’ll master essential skills that you might not have learned as a solo coder, including meaningful code commenting, unit testing, and using refactoring to speed up feature delivery. Timeless advice on acing interviews and setting yourself up for leadership will help you throughout your career. Crack open this one-of-a-kind guide, and you’ll soon be working in the professional manner that software managers expect.

About the Technology
Success as a software engineer requires technical knowledge, flexibility, and a lot of persistence. Knowing how to work effectively with other developers can be the difference between a fulfilling career and getting stuck in a life-sucking rut. This brilliant book guides you through the essential skills you need to survive and thrive on a software engineering team.

About the Book
Skills of a Successful Software Engineer presents techniques for working on software projects collaboratively. In it, you’ll build technical skills, such as writing simple code, effective testing, and refactoring, that are essential to creating software on a team. You’ll also explore soft skills like how to keep your knowledge up to date, interacting with your team leader, and even how to get a job you’ll love.

What's Inside
  • Best practices for writing and documenting maintainable code
  • Testing and refactoring code you didn’t write
  • What to expect in a technical interview
  • How to thrive on a development team


About the Reader
For working and aspiring software engineers.

About the Author
Fernando Doglio has twenty years of experience in the software industry, where he has worked on everything from web development to big data.

Quotes
A must-have for aspiring software engineers. I wish I had it when I started 10 years ago.
- Adhir Ramjiawan, Dotdigital

Great tips on how to get started in your first engineering job.
- Owain Williams, Spindogs

Demystifies skills you need to be successful at any IT company.
- Chris Villanueva, Fulton-Nevets Domestic Holdings

Covers critical practices for engineers looking to reach the senior level.
- Jess Daubner, DISCO

Table of contents

  1. inside front cover
  2. Skills of a Successful Software Engineer
  3. Copyright
  4. dedication
  5. contents
  6. front matter
    1. preface
    2. acknowledgments
    3. about this book
    4. Who should read this book
    5. How this book is organized
    6. About the code
    7. liveBook discussion forum
    8. about the author
    9. about the cover illustration
  7. 1 Becoming a successful software engineer
    1. 1.1 What you don’t need
      1. 1.1.1 Bachelor’s degree in CS or related degree
      2. 1.1.2 Knowing the software development lifecycle
      3. 1.1.3 A math, physics, or similar degree
      4. 1.1.4 Certifications
      5. 1.1.5 The desire to work in a fast-paced environment
      6. 1.1.6 Experience
    2. 1.2 Useful skills to have
      1. 1.2.1 Patience
      2. 1.2.2 Determination
      3. 1.2.3 An eternal student mindset
      4. 1.2.4 Accepting criticism and learning from it
      5. 1.2.5 Knowing how to communicate
    3. 1.3 What about after you get the job?
    4. Summary
  8. 2 Writing code everyone can read
    1. 2.1 Your code needs to work
      1. 2.1.1 Good is better than perfect
      2. 2.1.2 Working, then optimized
      3. 2.1.3 Sometimes terrible code actually helps
    2. 2.2 Code for people, not for the machine
      1. 2.2.1 Self-documenting code is a lie
      2. 2.2.2 Readable code > one-liners
    3. 2.3 Overengineering: The first capital sin
      1. 2.3.1 Spotting a case of overengineering
    4. 2.4 The random bug mystery
      1. 2.4.1 Performing a root cause analysis (RCA)
    5. 2.5 You have to aim to be a developer
    6. 2.6 SOLID, DRY, and other funny terms
      1. 2.6.1 SOLID: Making your code strong as a rock
      2. 2.6.2 KISS your code
      3. 2.6.3 Keep your code DRY
      4. 2.6.4 YAGNI, another funny word
    7. Summary
  9. 3 Unit testing: delivering code that works
    1. 3.1 Why unit test your code?
      1. 3.1.1 What about using unit tests today?
    2. 3.2 What to test
      1. 3.2.1 Test one thing at the time
      2. 3.2.2 Make sure you test a unit of code
      3. 3.2.3 Only test your own code
      4. 3.2.4 Don’t test external calls
      5. 3.2.5 Stick to testing what’s on the rug
    3. 3.3 How to write your tests
      1. 3.3.1 Your new best friend: Dependency injection
      2. 3.3.2 Tame the big four: Mocks, stubs, spies, and dummies
      3. 3.3.3 Unit tests are not meant to be run manually
    4. 3.4 When should you write your tests?
    5. Summary
  10. 4 Refactoring existing code(or Refactoring doesn’t mean rewriting code)
    1. 4.1 What does refactoring mean anyway?
    2. 4.2 What do you do before you start refactoring?
      1. 4.2.1 Version control is your friend!
      2. 4.2.2 Unit tests are all the rage
      3. 4.2.3 Baselining your code
      4. 4.2.4 I love it when a plan comes together
    3. 4.3 What to focus on when refactoring
      1. 4.3.1 Magic values
      2. 4.3.2 Everyone’s doing everything
      3. 4.3.3 You’re too primitive!
      4. 4.3.4 Obsessive use of switch or if statements
      5. 4.3.5 Duplicated duplicated code
    4. 4.4 How to perform code refactoring
      1. 4.4.1 Common refactoring techniques
      2. 4.4.2 Tools to reduce human error
      3. 4.4.3 Refactoring best practices
    5. 4.5 What if you don’t need to refactor your code?
    6. Summary
  11. 5 Tackling the personal side of coding
    1. 5.1 How are you learning?
      1. 5.1.1 You’re not supposed to know everything
      2. 5.1.2 The internet is great, but so is a formal education
    2. 5.2 Side projects
      1. 5.2.1 The case for side projects
      2. 5.2.2 What’s wrong with side projects?
      3. 5.2.3 What about working on open source projects?
    3. 5.3 Asking your online friends for help
      1. 5.3.1 Making mistakes
      2. 5.3.2 Avoiding the naysayers
    4. 5.4 Learning to communicate with others
    5. Summary
  12. 6 Interviewing for your place on the team
    1. 6.1 The tech interview experience
      1. 6.1.1 What can you expect from a tech interview?
      2. 6.1.2 Warning signs you should look out for
    2. 6.2 Things you should never say during a tech interview
      1. 6.2.1 What do you do here, exactly?
      2. 6.2.2 I don’t know, I’ve never done that before
      3. 6.2.3 I hated that place because ...
      4. 6.2.4 I’ve built multiple SPAs using SSR with MERN
      5. 6.2.5 Well, nobody uses that anymore
      6. 6.2.6 It’s listed on my resume
      7. 6.2.7 No, I don’t have any questions
      8. 6.2.8 I’m a React developer
      9. 6.2.9 Oh Linux? I hate Linux, I’m a Windows guy
      10. 6.2.10 I don’t know what unit tests are
    3. 6.3 What to expect from the offering after your interview process is over
      1. 6.3.1 Not everything that shines is gold
      2. 6.3.2 Actually useful perks
    4. Summary
  13. 7 Working as part of a team
    1. 7.1 Getting your manager to love you
      1. 7.1.1 Task-tracking software is not the devil’s tool
      2. 7.1.2 Meetings!
      3. 7.1.3 I plan, therefore I code
      4. 7.1.4 Don’t reinvent the wheel
      5. 7.1.5 What you should never say to your manager
    2. 7.2 Being a good teammate
      1. 7.2.1 Make peace with your testers
      2. 7.2.2 Leave your ego at the door
      3. 7.2.3 Learn how to work remotely
      4. 7.2.4 Be social
    3. 7.3 Working on your own skills
      1. 7.3.1 Continuous learning
      2. 7.3.2 Measuring your learning progress
      3. 7.3.3 Learning from code reviews
    4. Summary
  14. 8 Understanding team leadership
    1. 8.1 Understanding your leader
      1. 8.1.1 Key traits of a good leader
      2. 8.1.2 Hard truths to hear from your leader
      3. 8.1.3 Constantly asking for status updates
      4. 8.1.4 Understanding task assignments
    2. 8.2 The 90-10 rule
    3. 8.3 Correcting your leader
    4. 8.4 Dealing with clients
      1. 8.4.1 Correcting the client
      2. 8.4.2 Angry clients
    5. 8.5 Feedback is mandatory
      1. 8.5.1 Why is feedback so important?
      2. 8.5.2 Different types of feedback
    6. 8.6 Thank you
    7. Summary
  15. index

Product information

  • Title: Skills of a Successful Software Engineer
  • Author(s): Fernando Doglio
  • Release date: July 2022
  • Publisher(s): Manning Publications
  • ISBN: 9781617299704