Building a Career in Software: A Comprehensive Guide to Success in the Software Industry

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Software engineering education has a problem: universities and bootcamps teach aspiring engineers to write code, but they leave graduates to teach themselves the countless supporting tools required to thrive in real software companies. Building a Career in Software is the solution, a comprehensive guide to the essential skills that instructors don't need and professionals never think to teach: landing jobs, choosing teams and projects, asking good questions, running meetings, going on-call, debugging production problems, technical writing, making the most of a mentor, and much more. In over a decade building software at companies such as Apple and Uber, Daniel Heller has mentored and managed tens of engineers from a variety of training backgrounds, and those engineers inspired this book with their hundreds of questions about career issues and day-to-day problems. Designed for either random access or cover-to-cover reading, it offers concise treatments of virtually every non-technical challenge you will face in the first five years of your career―as well as a selection of industry-focused technical topics rarely covered in training. Whatever your education or technical specialty, Building a Career in Software can save you years of trial and error and help you succeed as a real-world software professional. What You Will Learn • Discover every important nontechnical facet of professional programming as well as several key technical practices essential to the transition from student to professional • Build relationships with your employer • Improve your communication, including technical writing, asking good questions, and public speaking Who This Book is For Software engineers either early in their careers or about to transition to the professional world; that is, all graduates of computer science or software engineering university programs and all software engineering boot camp participants.

Author(s): Daniel Heller
Edition: 1
Publisher: Apress
Year: 2020

Language: English
Commentary: Vector PDF
Pages: 257
City: New York, NY
Tags: Command Line; Debugging; Ethics; Reliability; Best Practices; Writing; Public Speaking; Productivity; Career; Teamwork; Soft Skills; Job Applications; Personal Growth

Contents......Page 5
About the Author......Page 7
Acknowledgments......Page 8
Introduction......Page 9
Part I: Career......Page 11
What Is the Job?......Page 12
What It Means to Grow......Page 13
Ten Principles......Page 14
Your Relationship with Your Employer......Page 16
Resume Review and Recruiter Phone Screen......Page 18
Decision......Page 19
Resumes......Page 20
Example......Page 21
Passing Engineering Interviews......Page 22
What They’re Looking For......Page 23
Preparation......Page 24
On the Day......Page 25
Passing the Rest of the Interview......Page 26
Further Reading......Page 27
Recruiters......Page 28
What You Need to Know As a Candidate......Page 29
Level and Title......Page 30
Equity Compensation Basics......Page 32
Equity Compensation Taxation in the United States (Why You Should Consider Exercising Early)......Page 33
Share Salary Information As Much As Possible......Page 34
Negotiating......Page 35
Read Every Day: The Practice of Study......Page 38
Finding a Mentor......Page 40
Making the Most of Your Mentor......Page 41
Having Your Own Project Ideas......Page 42
Performance Reviews......Page 43
Self-reviews......Page 45
Stop Worrying About Title......Page 46
On Fear, Confusion, and Self-Loathing: Starting New Jobs......Page 47
When to Change Jobs......Page 48
How to Change Jobs: Going Out in Style......Page 50
Maintenance Is for Suckers: Choosing Teams and Projects......Page 51
The Transition to Management......Page 52
Adaptability Is Everything......Page 54
The Model......Page 55
Protecting a Corner of Your Life......Page 56
Bouncing Back......Page 57
My Experience......Page 58
Part II: Day to Day at the Office......Page 59
Project Management......Page 60
The Foundation: A List and a Graph......Page 61
Keeping Stakeholders Informed......Page 63
Keeping Close Collaborators Informed......Page 64
Four Laws......Page 65
Schedules and Estimation: The Basic Algorithm......Page 67
Leading a Project......Page 68
What to Say......Page 69
When Gentle Requests Don’t Work......Page 71
Paying for Information......Page 72
Effective Meetings......Page 73
Before: Agenda......Page 74
During: Start with Agenda Review......Page 75
During: Review Action Items......Page 76
After: Meeting Notes......Page 77
A Note on Meeting Etiquette......Page 78
Time Management and To-Do Lists......Page 79
Effective Calendaring......Page 80
Scripting Everything......Page 81
Just Do Something......Page 82
Keep a Worklog......Page 83
Interview Focus Areas......Page 84
Coding......Page 85
Architecture......Page 86
Domain Knowledge......Page 88
Attitude......Page 89
The Nuts and Bolts of Interviewing......Page 90
Decisions......Page 91
Software Methodologies and the Generality of Good Engineering......Page 92
Scrum......Page 93
Manners......Page 95
Giving Credit......Page 96
A Word About Charm and Positivity......Page 97
When......Page 100
Empathy; Show Your Trust......Page 101
Acknowledge What’s Good......Page 102
Qualify Your Certainty......Page 103
Deliver Feedback 1:1......Page 104
Tough Love......Page 105
Receiving Feedback......Page 106
The Nature of the Relationship......Page 107
Managers Have Their Own Problems: Optimizing the Collaboration......Page 108
Upward Feedback......Page 109
Tricky Subjects......Page 110
You Want More Feedback......Page 111
Slow Advancement......Page 112
Project Dissatisfaction......Page 113
Feature Requests......Page 114
Debugging and Technical Questions......Page 115
Bug Reports......Page 116
Reputation and Personal Brand......Page 117
Running Toward Fires......Page 118
The Necessary Form......Page 119
Political Capital......Page 120
The Evil Form......Page 121
Professionals Maximize Business Value: In Which Open Source is Stealing From the Shareholders… Sometimes......Page 122
Saying No Is Not Your Job......Page 123
Personal Reliability......Page 124
Knowing Our Limits: The Epistemology of Software Engineering......Page 125
Chapter 8: Leading Others......Page 128
Vision and Identity......Page 129
Team QA......Page 130
Communication......Page 131
Harmony......Page 132
Your Purpose As a Mentor......Page 133
A Vector of Skills......Page 134
Agenda Doc......Page 135
Probing Questions......Page 136
Exercises......Page 137
Reviews and Postmortems......Page 138
Putting the Pieces Together......Page 139
Interns......Page 140
Managing Your Emotions......Page 142
Yes, Things Are Broken (You Can’t Fix Everything on Your First Day)......Page 143
Kindness: Plans A, B, and C......Page 144
In a Meeting or by Email......Page 145
One on One......Page 146
Plan D......Page 147
Making Mistakes......Page 148
Chapter 10: Professional Conduct......Page 150
A Word About Complaining......Page 151
A Word About Office Dating......Page 152
Choosing Our Words Carefully......Page 153
Alcohol with Colleagues......Page 154
Part III: Communication......Page 155
Chapter 11: A Holistic Look at Engineering Communication......Page 156
Receiving......Page 157
Transmitting......Page 158
Efficiency......Page 159
Choosing a Medium......Page 160
Chat/Instant Messaging......Page 161
Drive-By Questions (Going to Someone’s Desk)......Page 162
Synchronous Phone Calls......Page 163
Chapter 12: Technical Writing......Page 164
A Note About Structure......Page 165
Editing......Page 166
Remove Words......Page 167
Get the Context Right......Page 168
Spelling, Grammar, Capitalization, and Punctuation......Page 169
The Art of Sending and Not Sending Email......Page 171
Salutations......Page 172
Signatures......Page 173
The Importance of TL;DR......Page 174
Large Mailing Lists......Page 175
The Importance of Links......Page 176
The Technical Announcement......Page 177
The Technical Question......Page 178
The Project Status Update......Page 179
Requesting a Meeting......Page 182
The Intro Email......Page 183
Reduce Your Inbound......Page 184
Email Cadence: The Power and Cost of Fast Replies......Page 185
Chapter 14: Describing Problems and Asking Questions......Page 187
Magic Template: Asking for Help Debugging......Page 189
Magic Template: Asking For Help with a Production Issue......Page 190
Magic Template: Everything Else......Page 191
Chapter 15: Public Speaking......Page 192
Part IV: Technical Skills......Page 194
Master Language Conventions......Page 195
Naming......Page 196
Commenting......Page 197
Commit Messages Are Underrated......Page 198
Testing......Page 199
Open Source Conservatism......Page 200
Inject Dependencies......Page 201
Performance Last or a List of Priorities for Your Code......Page 202
Receiving Code Reviews......Page 203
Reviewing Code......Page 204
Beyond the Code......Page 205
The Philosophy of Debugging......Page 207
Debugging Menu......Page 209
Running Experiments......Page 211
Think About the Future......Page 214
Design for Failure......Page 215
Build for Debugging (or Observability Is Everything)......Page 216
Build For Rollback......Page 217
Plan for Overload......Page 218
Data Layer Isolation (In Which Database Migrations Are Our Biggest Problem)......Page 220
Chapter 19: Mastering the Command Line......Page 221
Shell......Page 222
Information Discovery and Text Manipulation......Page 223
Local and Remote Sessions......Page 224
Git......Page 225
Miscellany......Page 226
Chapter 20: Operating Real Software......Page 227
On Call......Page 228
Five Principles......Page 229
Incident Response......Page 230
Roles......Page 231
Key Mitigation Checklist......Page 232
Fear, Excitement, and Learning......Page 233
Tracking the Threads......Page 234
Bus Factor > 1......Page 235
Example: New Component......Page 236
Tests Should Always Work......Page 237
Index......Page 238