Software Developer Life
Copyright 2018 David Xiang. All rights reserved.
No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning, or otherwise, except in the case of brief quotations embodied in critical articles and reviews, without the prior written permission of the publisher.
ISBN paperback: 978-1-7323459-0-4
ISBN ebook: 978-1-7323459-1-1
FIRST EDITION
To my father who has given me underrated career advice over the years and to my mother who got me through my first C class.
Contents
Acknowledgments
Thank you to all my friends who have shared their stories.
0: Introduction
W eve made a dent into the 21st century and software has been eating the world. Suspenseful tech dramas play out in the news, boot camps churn out entry-level developers in a matter of months, and theres even an HBO show dedicated to Silicon Valley. In the midst of these trends lies a severe lack of attention to the daily life of the developerthe day-to-day reality that surrounds each line of code. There are plenty of resources available to help the budding developer learn how to code, but what about everything else?
My name is Dave Xiang. I grew up in suburban Massachusetts. My extra time went into playing Starcraft and leveling up Everquest characters. My extra money went into playing Dance Dance Revolution at the local arcade. I majored in Electrical/Computer Engineering (ECE) at Carnegie Mellon (CMU), got a job straight out of college as a firmware developer, and transitioned into full software-mode a few years later. Though I am no veteran developer, Ive been through the paces in my eight years as a professional and have held a number of distinct developer roles.
Let me give you some backstory. This all began with a video I uploaded to YouTube way back in 2013. Like every Millennial, I wanted to do something. It started off with an embarrassing vlog, a couple breakdancing demo reels, and then I uploaded a video explaining the basics of RAM. I didnt think much of it at the time, but it was well received. The video didnt go viral exactly, but it gave me an idea, a hint of potential.
A few years and a bunch of uploads later, and Ive built a decent fan base of ~40K subscribers. My content reflects all that Ive learned throughout my career, packing significant personal experiences into short, vlog-style videos. My aim was to create a space where people could come learn about new technologies and get a better understanding of life as a professional programmer. The many positive comments online Ive received have kept me motivated.
I am not an illustrious coderI havent created my own programming language, and I dont have a white wizards beard. Ive held a handful of cookie-cutter software jobs and have a knack for story-telling. As such, this book aims to help students, new professionals, and anyone looking for a sneak peek inside the world of software.
With respect to my content, the analytics never lie. My softer content consistently gets more watch time than my technical videos. The stuff about daily life, interview rejections, and How to be a Better Programmer have always resonated more with viewers.
Throughout this book I have drawn on personal experiences, but it is also filled with many perspectives and unique stories from my friends. I went around and interviewed everyone I know that is, or has ever worked with, a software developer. Everyone has a special story to tell and a wealth of advice to share. Their names may have been changed but their stories never will.
This book consists of 40 chapters. Each chapter is influenced by someones experience in the tech world. Ive included a mix of concrete advice, abstract meta-principles, and entertaining stories. Each chapter belongs to one of five categories:
Career
Learning
Coding
Daily Life
Stories
This book is a highlight reel of software development life. Enjoy!
David Xiang
1: Peer-Vs.-Peer [Stories]
E very fall, Carnegie Mellon University hosts a job fair called the Technical Opportunities Conference (TOC). For many students, this event is a counter-productive stretch of two hours that leaves people feeling unexpectedly depressed about their future. The universitys student center fills up with job booths while hordes of students wait in line to speak with a handful of company reps. The reps are usually CMU alumni looking to fill their hiring pipeline with fellow Tartans.
The competition is stiff and more often than not, the conference provides students with zero productive leads. Regardless, CMU recommends that everyone attend. We practice wearing our over-sized suits, get an opportunity to professionally present ourselves, and get a taste of the fabled real world thats waiting for us outside university grounds. This conference purposefully promotes peer competition and serves as an unbiased progress marker for students; how well you navigate the booths reflects your current aptitude.
Looking back, its impressive the difference one year makes for the typical undergraduate.
Looking back, its impressive the difference one year makes for the typical undergraduate. As a freshman, the non-introductory classes the sophomores are taking seem light years away. Sophomores get jealous of the shiny internships that the juniors are getting. Once youre a junior, seniors taking their capstone projects and getting fat job offers start to intimidate you. By the time youre a senior, you grudgingly bow your head to seasoned professionals with real jobs, even though some of them are no more than a year or two older than you.
NVIDIA always had a cutthroat presence at the TOC. Founded in 1993, NVIDIA is a living legend in Silicon Valley and they are still killing it today. At CMU, they gained TOC-notoriety through the use of a simple but terrifying 3-question quiz.
There were two flavors of quiz, Analog and Digital, each capable of demoralizing the unsuspecting underclassmen. These quizzes were NVIDIAs way of rooting out the incompetent: an easy and effective way to filter down the magnitude of students pouring through their booth. When I took them, the analog quiz covered voltage differentials and asked you to explain what an amplifier was doing. The digital quiz made you map out some gates, reason through some logic, and enumerate a truth table.
You never really fail the quiz, you just fail yourself. Once you get to the front of the queue, youre handed your questions and ushered into a staging area of standing desks. Around you, any number of sweaty students are staring pale-faced at their own test sheets. After filling out the questionnaire, you wait in line again to review your responses with an official NVIDIA judge. Overlay this whole scene with a subtle but very clear power differential between student and employer, and you should have a good picture painted in your head of what this tech-based cattle market is like.
First time around, I failed myself. I looked at the quiz, realized I couldnt do any of the problems, and quietly excused myself from the booth. I was doing everyone a favorone less person in line for the other students and one less incompetent prospector to discourage for NVIDIA. Ill always remember that moment; as I walked away, I felt the laser burn of all those eyes following me out of the booth.
Fast-forward one year. I was a budding junior; a little smarter but still hating the TOC. First things first, I headed straight back to NVIDIA, because I remembered the questions and thought I knew the answers. This time, I finished the quiz and made it to the final line. Unfortunately, it turned out I still didnt know the answers; I scored about a 1.5/3 and proceeded to botch my interview with the NVIDIA rep. My rsum went straight into the please-do-not-call-back-these-students pile. I would have been crushed except that I saw underclassmen doing the
Next page