To my sister, a new software engineer
My sister just started her first job as a software engineer. I wrote her this letter to share some of the things I’ve learned in my five years in the tech industry.
Happy first day of work! I put together this list of things to keep in mind as you’re starting your job. You probably already know some of it, and other parts might not be relevant since you’ve already interned at your new company, but I’m passing it along because it’s all stuff I would have found helpful when starting at my first couple of jobs.
The first few weeks
These are some questions you should seek answers to within your first days and weeks at your job. Most of the time, your manager is the person to whom you’ll be asking these questions.
- What is the onboarding process? How do I learn the codebase? Are there bootcamps with other teams (weeklong rotations where you sit with a different team than your own and do small bugs/tasks with the team)? How can I learn about the work of the teams that my team interacts with frequently?
- What is expected of me? By what point should I be fully ramped up, productive, and working independently? (At places I’ve worked, this is usually around the 6 month mark.)
- What are the roles within my team? Are there PMs, designers, or analysts? Set up a 30 minute one-on-one meeting with each of them to get to know them and the work they do.
- Who is my point of contact if I have questions?
- Can I set up regular pair programming sessions for my first few weeks with another engineer on the team?
- What are my team’s procedures around sending out code reviews, tracking work, and deploying features? Do we use agile? Waterfall? Something else?
- What are good internal mailing lists to join? Is there one for lectures? New college grads? Women in tech?
- How does my manager handle one-on-ones? How often are they? Does my manager set an agenda? (The book The Manager’s Path by Camille Fournier has good notes about one-on-ones and driving the meeting and your own career development.)
After a few weeks, if you are completing your assigned work quickly and easily, you can ask for more challenging work (but be careful you are not unintentionally sending a signal that you’re not happy with the team or work you’ve been assigned to).
It’s also good to understand your team’s business goals. You can ask these questions to your manager or mentor, or to a product manager or business analyst working with your team.
- How does my team’s work fit into the company’s strategy?
- What are our key metrics? (Number of users? User retention rate? Amount of revenue?)
- Are there internal dashboards related to my team’s work that track our metrics?
- When does planning occur? Is it on an annual basis? How are new ideas generated? Does the roadmap ever change between planning cycles?
- Find a mentor who you can meet with for half an hour every other week. This can either be someone who’s relatively fresh out of college (1–2 years) or who’s a more senior engineer (5–10 years out). Ask your manager to help you identify someone who would be a good mentor.
- Are there competency matrices for each job level? Review the competencies for your current job title as well as those for the next level up.
- Work with your manager to create goals — you can set 3 month, 6 month, and 1 year goals. Use the competency matrix as inspiration. You can use the OKR (Objectives and Key Results) format for writing goals. (This post by Melissa Mandelbaum also outlines an excellent framework for crafting a personal growth plan.)
- Start thinking about aspects of your job where you’d like to become proficient. Is it specific programming languages? Good software engineering practices? Giving code reviews? Providing feedback on architectural decisions? Helping to investigate architectural decisions? Giving a talk at a team meeting, or all hands, or meetup, or conference?
- How do annual reviews work? Do engineers usually set goals after the annual review period?
- One way to keep track of your progress is to take notes each day on the work you’ve done. At the end of each month, you can summarize your daily notes into monthly highlights. This will make it much easier to write your self-evaluation during the annual review period.
- At some point (maybe around annual reviews) you’ll probably be asked to give peer feedback. Keep a running doc with notes on your teammates — both things they’ve done well and constructive feedback, so that when you have to write reviews you have something to work from.
- Promotions — of course this isn’t something you want to be focused on too early, but it’s maybe something to start thinking about as you hit the six month to one year mark. It depends on the company, but it’s pretty common for the first promotion level in software engineering to happen around the one year mark. (At places I’ve worked, successful engineers who join right out of college can get promoted when they’ve been at the company for under a year.) What do you have to do to be performing at the next level? Once you can demonstrate you’re doing that, you’re eligible to be promoted.
- Where do you want to be in 5 years? (It isn’t too important to have a concrete idea of this — in fact it’s possibly better if you don’t — but it never hurts to start thinking about it.)
- There’s roughly three routes you could go at a tech company: stay in the individual contributor track, and become senior there; go into engineering management; or switch into product management or business development. Whichever of these you want to pursue, the first step is becoming a really solid individual contributor engineer.
Zooming out a bit —
- Work/life balance — Working hard is good. Your first year in this job is going to be one of the highest growth periods of your life. At the same time, you do need to ensure you have some balance. If for an extended period of time you’re working so much that you’re not able to get enough sleep, or you’re not eating well, or you’re not able to get outside or do anything else on weeknights, talk to your manager about adjusting your workload so you can operate in a sustainable way.
- Keep it in perspective — it’s always good to keep in mind that this is only your first job out of college. No matter what happens, you’re going to keep doing interesting things, and exciting and serendipitous things will happen to you over the next several decades of your career.
Kvelling so hard,