Engineer Career Growth, 1st Hire to Independence You learned to code, passed the interview, maybe a successful internship. That’s all over, you made it. Your first job as a software engineer. Whether you’re self-taught or college-educated is irrelevant. You have no idea what you’re doing, nor do you grok half the words people around you are saying. Strap in. How do you progress from newborn fawn to comfort delivering small- to mid-size features independently (often correspond with your first promotion)? Learn. You’re going to learn. You are being paid to learn, soak it in. OK, “learn”, great. How? What? • What is the workflow for what to build, what you need to change, doing that work, and shipping the feature? •What are these “unit tests” people keep talking about. Why am I spending all this time writing them? • Other people look at my code before it ships? I’m supposed to look at theirs? • Someone asked me how long this will take. I said 20 minutes and my lead pulled a bag over my head and dragged me into a closet. What gives? I.e. the arcane art of estimation, and how to convincingly lie about, er “pad”, estimates. • Find bugs in production, especially transient ones, and fix them • Develop requirement sense. What questions to ask when given requirements? • What metrics are, types, why they matter, and how to read them. • Developing a deep love/hate relationship with your IDE and any other tool you use • Calibrating on when to ask for help. Don’t ask every time you get a compiler or runtime error, but don’t wait a week, either • You don’t understand your feature until you can explain it to someone else • What makes for a good design document, and how to respond when in your first review the participants tear it up like the cow lowered into the raptor enclosure • Learn some problems are solved when you’re not working on them, and how to do something else productive when you hit a wall • what to do when you break something really bad, and how to never break it like that again • competently explain how one major subsystem of your product works to a technical peer that has never worked on it • miss a deadline. Understand why. • tell a non-tech stakeholder why something is impossible and have them believe you without your manager or lead helping • Learn that what you built is not sacred. You’ll hate it and rewrite it in a few months, or it will get canceled and never ship • Design a mid-size feature or subsystem yourself, get it reviewed and approved without someone rewriting it, implement it yourself, demo it, ship it, have it work • Find out why that weird thing happened last month via app and data store logs • Come to peace with delivering something imperfect, and know best intentions won’t get it fixed • Have your lead point people in your direction for a subsystem or feature • Document something that people are scared about You’ll get the hang of it. Probably. Good luck, god speed. https://lnkd.in/gvtCUDmG
This is excellent! I'll be joining my first job in 1-2 weeks and this is going to be phenomenal advice. I'll try and incorporate most of these points there. Loved the "develop love/hate relationship with your IDE". Doesn't matter love it or hate it, both need you to know your tool from the inside out. You develop an opinion, and get to excel in the tool use at your company. I understand why "tell a non-tech stakeholder why something is impossible without assistance from lead or manager" is crucial as well. It'll help groom the overall soft skills and reduce scope creep(learnt about it from an Asana blog) greatly. "Come to peace with delivering something imperfect". I have some absurd obsession of perfecting a specific module or class until it looks perfect for the time being. And then refactoring the whole code when something gets added. I understand that this way of doing things is inefficient and won't take me far in my career (or life). This is something I'll have to work on, and would love to have some advice on how to tackle it. "Document something people are afraid of". Absolutely, gonna do that very very soon. I love exploring technical stuff. Enhances my understanding of computer science and engineering further.
Great points! Will add some non-tech stuff too: - Learn to network or find someone who can help - Find a mentor who has gone through and try to get the understanding of Team/ Department/ Organization dynamics - Understand what success looks like - Help others and seek help - Go through the policies and procedures (especially the Internet usage and Security)- it is boring but important - Recognize and Thank others (even if their contribution did not help “this” time) - Understand what is being recognized by your Manager, Their Peers, Your Organization - Understand the goals of your team and understand how your day today work aligns with those - Share fresh ideas. Many experienced people will thank you for that. (Truncated list)!
Thanks for sharing.
Perfect framework to follow and live by.. not just for rookies, even for seasoned professionals.. Thanks for sharing..