A Thought Framework for Approaching Any Software Job This is a simple way I’ve come to think about how to approach software work, mostly built from lessons I learned the hard way. Take what I’ve figured out over the years and make it your own. 1. Start by figuring it out yourself. Whatever task lands on your plate, take the first stab at it. Explore it yourself before running to someone else. Ask LLMs, search the web, poke around the codebase, read whatever documentation you can find, run the project, debug things, and try tracing how the logic and data flow through the system. It’s okay if you don’t fully get it. This raw, first-hand exploration is gold. It’ll teach you things you didn’t even know you needed to know. 2. But don’t torture yourself trying to do everything alone. Large codebases can be confusing, messy, and poorly documented. Sometimes, even getting the project to run locally feels like jumping through hoops, like weird proxy settings, broken scripts, flaky permissions, you name it. So give it a day. Try sincerely. But if you’re still lost, ask. Ask your teammates, your mentor, senior engineers, whoever. Don’t sit in silence thinking you’re supposed to figure it all out alone. And don’t worry about how “silly” your question sounds. Especially if you’ve already tried on your own. The quicker you ask, the faster you’ll move forward. And trust me, asking those basic questions often leads to deep understanding. 3. Get comfortable with being confused, often. Software is full of unknowns. You’re not failing when you’re confused, you’re learning. Even the most experienced engineers get stuck. The key is not to avoid confusion, but to develop a habit of moving through it. 4. Document as you go. When you figure something out, especially something that took you a while, WRITE IT DOWN, THEN AND THERE. Could be a doc, a README update, a Teams message, or just a quick note to your future self. This helps you solidify your learning, and it’ll probably help the next person too. 5. Don’t just fix the bug. Understand the system. Sometimes, it’s tempting to go straight for a patch, make it work, close the ticket, move on. But slow down. Try to zoom out and understand how the system works. Where else does this piece connect? What assumptions are baked in? The deeper your understanding, the better your solutions will be. 6. Build relationships with your team. People matter. Get to know your teammates. Understand who works on what. Build trust. When you have questions or need help, it’ll be easier to reach out. And when others know you’re doing your part, they’ll be more willing to support you. This isn’t a rulebook. Just a mindset that helps me stay grounded and keep moving forward in complex projects. If it helps you too, even a little, mission accomplished!
Tips for Learning on the Job in Software Engineering
Explore top LinkedIn content from expert professionals.
Summary
Learning on the job in software engineering means constantly improving your skills and understanding by tackling real-world problems as part of your daily work. This approach is about gaining practical experience, adapting to new challenges, and growing your knowledge through hands-on tasks and collaboration.
- Explore independently: Take initiative to investigate tasks and problems on your own before seeking help, using available resources like documentation, tools, and code reviews.
- Document discoveries: Write down solutions, insights, and lessons as you learn, which helps reinforce your knowledge and supports your colleagues.
- Build team connections: Develop strong relationships with teammates so you feel comfortable asking questions, sharing ideas, and creating a supportive learning environment.
-
-
I'm a Software Engineer working at AWS, with over 7 years experience. The last few years of my life has taught me a lot. If I could talk to my younger self or any other junior engineer for that matter, here's what I would tell them: [1] Learn fundamentals, not frameworks. Frameworks change quickly, but core concepts stay with you your whole career. Strong fundamentals make you adaptable, confident, and effective anywhere. [2] Design before coding. If you can’t explain your solution clearly, then the implementation will be unclear too. Draw it. Write it. Challenge it. Then build it. Good design reduces rework and gives you a direction worth building. [3] Read code, not just write it. Study the systems you work in and understand why things were built the way they are. Reading code builds real context — and context makes you faster, wiser, and more effective. [4] Write for humans first, computers second. Choose clear names, small functions, and simple logic, and follow the practices set by your team and engineers before you. Maintainable code makes everyone’s job easier. [5] Know when not to build. Not everything needs more code, sometimes the best solution is removing or reusing what already exists. Favour simplicity, avoid premature abstractions, and keep your systems lean. Code is a liability. [6] Write things down. Design docs, architecture notes, and thoughtful PR descriptions show your thinking. Writing brings clarity, and clarity helps the entire team move faster. [7] Don’t shy away from operations / devops. Many engineers avoid this work, but understanding how your code runs in production is one of the most important parts of the job — build it, own it, run it. It leads to safer judgement. [8] Become great at debugging. Most engineers can build features, but not many fewer can fix issues under pressure. Learn how to troubleshoot calmly using logs, tracing and systematic problem solving. [9] Own your career path. If you’re in a job that doesn’t help you grow, work with your manager to change that. If things still don’t improve, find a place that supports your goals. Your career is yours to steer. [10] Communicate clearly and earn trust. Be honest about what you know and what you don’t. Listen carefully, share progress early, and follow through on what you promise. [11] Keep pushing yourself and don’t give up too quickly. There will be tough days and difficult problems. Stay patient, and keep pushing through. Growth often happens right after things start feeling uncomfortable. Resources to level up as software engineer: → The Pragmatic Engineer with Gergely Orosz for industry insights. → System Design One by Neo Kim for system design fundamentals. → Coding Challenges with John Crickett for real world project ideas. → Connect with engineers like Anton Martyniuk, saed, Alexandre Zajac, Demitri Swan, Sanchit Narula, Daniel and Mohamed A. for daily engineering wisdom. #softwareengineering
-
I am a Software Engineer at Meta with almost 2 decades of experience. Here’re the 5 learnings if you want to grow faster as a SWE: 1. Know the next level before promotion After you are performing well at your current role expectations, start approaching the next level. - Learn from seniors, understand their perspective - Look for areas you can help & can get noticed In short, prove that you deserve the promotion before you ask for it. 2. Become your own user - go on reddit or twitter threads - read through the users feedbacks and conversations - be empathetic & maybe have a conversation with few users This shift helped me move beyond just shipping features to actually improving the experience. 3. Data is your saviour Start diving into logs, events, and exceptions more deeply. - Where are users spending the most time? - What’s making them drop off? - What are the most common exceptions? - Which workflows are unintuitive? You can make better engineering decisions if you spend some time consuming the data 4. Every problem is not yours to solve Ask yourself: - Is this issue truly high-impact, or am I just trying to get it off my plate? - Is this a problem I should solve, or is it better to guide someone else to take it on? - Delegating was tough at first. But it’s crucial to identify your problems and delegate rest. The best engineers I’ve worked with aren’t the ones who take on the most work—they’re the ones who ensure the right work gets done by the right people. 5. Be a force multiplier - document more to save others time - build tools and scripts that automate tedious tasks - Guide others to help achieve their goals Your team will move faster, and you will become more valuable—not just as an engineer but as a force multiplier. => Final Thought: The biggest shifts in my career didn’t come from just writing better code—they came from these small shifts. If you’re looking to grow as an engineer, try incorporating some of these steps into your own journey. Raman Walia
-
I’m often asked by software developers how they can grow—especially those early in their careers. I rarely tailor my answer to someone’s skill level. The truth is, the same habits that help you level up early on will carry you through your entire career. Here are six I always come back to: 1. Ask why before you build. Don’t just take a ticket and run with it. Ask what problem it solves and why it matters. That context will make you 10x more effective. 2. Ship small and often. You don’t need everything figured out to get started. Build something small that works, get feedback, and keep improving. Progress > perfection. 3. Own your stuff. If you built it, you’re responsible for how it works in prod. That doesn’t mean doing everything alone—it means caring enough to follow through. 4. Review code like it’s part of the job. Reviews aren’t a favor—they’re how you learn. Read more code than you write and ask questions when something doesn’t make sense. 5. It’s OK to mess up. Just learn from it. Mistakes happen. What matters is that you dig in, figure out what went wrong, and share what you learned. 6. Build side projects. Nothing accelerates learning like building something end to end—design, code, bugs, and all. You’ll gain confidence, pick up new skills, and maybe even build something useful. — If you’re doing those things, you’re way ahead of the curve. Keep showing up, stay curious, and keep shipping.
-
The best lessons in software engineering come from things breaking. Nothing teaches you more than seeing a system fail in real-time. Yeah, it’s tough for the business, but from a growth perspective? Nothing comes close. Production failures are the real teachers. Watching experienced engineers handle incidents calmly, breaking down problems under pressure, that’s the stuff that sticks with you. It’s not something you learn from a course or a book. Postmortems are goldmines. I’ve read through RCAs from every outage I’ve been involved in. They’re packed with insights—unusual bugs, system quirks, and optimization tricks. Every postmortem is like finding treasure for a curious mind. If you want to grow fast, don’t skip on-call duty. It might seem scary at first, but the exposure you get is unbeatable. You learn how systems break, how to fix them, and how to communicate under pressure. One tip: Write down your learning from each incident. Over time, you’ll have a personal playbook, full of real lessons that will help you handle similar issues with confidence. There’s no better way to grow as an engineer. Dive in, get your hands dirty, and learn from every failure. It’ll make you sharper, smarter, and ready for anything.
-
✨ What I’ve Learned About Real-World Software Engineering - 3 Months In We spend four years in college studying computer science, building personal projects, grinding LeetCode, and doing internships. But even with all that experience, full-time software engineering in the real world is a whole different game. Here are a few things I’ve learned in my first ~3 months at Capital One that stand out compared to school and internships: 1️⃣ Ambiguity is the norm. In school, assignments are clear-cut. There’s usually one correct answer, and you can ask a TA or professor for help. In the real world, that certainty disappears. You’re often building things no one has built before - not even your manager. There’s rarely a single "right" solution. 💡Tip: Share regular updates with your team. If you hit a blocker, explain what you’re trying to solve, what you’ve attempted, and where you’re stuck. Transparency opens the door for collaboration and support - silence doesn’t. 2️⃣ The codebase is massive. In internships or personal projects, you might be working in a codebase you wrote yourself or with a small team. But in the real world? You’re diving into systems that have evolved over years, or decades, with contributions from hundreds of engineers. 💡Tip: Don’t try to understand everything. Focus on the parts that matter for your work. Ask teammates what’s relevant. GitHub Copilot can help, but people are still your best resource. 3️⃣ Every team speaks its own language. I remember feeling lost in my first few standups. Acronyms were flying left and right, and most were specific to Capital One. It was overwhelming. 💡Tip: Take notes. Don’t hesitate to ask for clarification, during or after the meeting. The first few weeks are all about absorbing how your team and company operate. 4️⃣ You’re always learning. Real-world software engineering goes far beyond writing code. Architecture decisions, cross-team collaboration, communicating with stakeholders - it’s all part of the job. Even now, 2.5 months in, I’m learning something new every day. 💡Reminder: You’re not expected to know everything on day one. These systems have been built over years. Give yourself grace and stay curious. 5️⃣ Testing really matters. In school, a missed edge case might cost you a couple of points. In production, it can break systems, impact user experience, or even cost the company money. 💡Tip: Treat testing seriously. Thoroughly validate your code. For large pull requests, don’t be surprised if the entire team hops on a call just to review it, and that’s a good thing. The jump from school to full-time can feel overwhelming - new team, new stack, new expectations. But over time, you’ll grow into it. Keep asking questions, keep showing up, and trust the process. ~Kevin
-
It's been three months since I joined Amazon Web Services, and I couldn’t be more grateful for the growth, learning, and mentorship I’ve received along the way. During this time, I asked two questions to every senior engineer I met: - What’s helped you thrive as a software engineer? - What advice would you give to a newcomer? Their answers consistently highlighted that growing in this field isn’t just about the number of lines you write—it’s about your mindset, habits, and how you show up every day. Key takeaways - - Ask with Intent – Never hesitate to ask questions. The real problem isn’t asking too many—it’s staying stuck for too long. Timebox your efforts, gather context, and ask thoughtfully. - Stay Curious, Stay Involved – Take initiative to understand what your teammates are working on. Be nosy (in a good way), it accelerates learning and opens more opportunities to contribute. - Own Problems, Drive Solutions – If you spot something that can be improved, don’t just point it out—own it. Take the lead, follow through, and make it better. That’s how you build trust and create real impact. - Document Everything, Communicate Clearly – Writing clearly and concisely is a superpower. It isn’t just good practice—it’s what makes your work scale. Clear docs and communication don’t just help your team today; they save time, unblock others, and make you way more effective in the long run. Future-you (and everyone else) will thank you!
-
For a long time as a new senior engineer, I held back from asking questions and preferred to solve things on my own. 👇🏼 I would spin my wheels for 2-3 days before asking a staff engineer for help. One time they found out how much time I spent. Their response was: “Why did you want so long to reach out for help? You aren‘t alone, let‘s dive in and get you unblocked together.” 😅 There’s a balance between working to unblock yourself, and pulling in others when you need a 2nd pair of eyes. Here are a few tips that have worked well for me: 1/ Don’t ask basic things you can Google / find in docs. 2/ Work to read the code and understand the system on your own. 3/ When reaching out for help, show what you’ve tried and ask specific questions to get unblocked. 4/ If you are pair-programming, “drive the screen.” It’s hard, but you’ll learn much faster. 5/ Document anything new you learn even if it’s not perfect/complete. 6/ Thank whoever helped you and help them back. What other tips would you add? 🙋♀️🙋♂️ - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you liked this post, you’ll probably love my weekly newsletter: https://lnkd.in/e8d5ymr3