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
Tips for Succeeding in Computer Science
Explore top LinkedIn content from expert professionals.
Summary
Succeeding in computer science means mastering core principles, building practical skills, and maintaining a growth mindset as you tackle new challenges. Computer science is the study of how computers work, how to program them, and how to solve problems using technology.
- Master fundamentals: Focus on understanding core concepts like algorithms and data structures, which stay relevant even as tools and frameworks change.
- Build real projects: Create and maintain your own applications to develop problem-solving skills and gain hands-on experience with debugging and design.
- Communicate clearly: Practice explaining your ideas, asking questions, and writing documentation to collaborate well and make your work accessible to others.
-
-
10 years of software engineering lessons Am I missing anything critical? 1. Go deep before you go wide. Master one language before chasing new frameworks. 2. Learn a strongly typed language like Java or Kotlin. It changes how you design systems. 3. Data structures, algorithms, and design patterns matter. You’ll use them constantly. 4. Debugging is a core skill. Think in first principles, not memorized fixes. 5. Ship something end to end. Nothing teaches you more than maintaining a real app. 6. Don’t chase every new framework. Understand principles and learn tools as needed. 7. Getting into FAANG or a top-tier company can be life changing for growth and pay. 8. Interviews are a skill. Treat them like one and they become predictable. 9. Don’t job hop every two years. Deep trust and ownership take time. 10. Promotions are a system. Learn what leadership values and align to it. 11. Keep a brag document. Memory fades, receipts don’t. 12. The top 1% of engineers get outsized rewards. Aim for impact, not activity. 13. Soft skills become the real bottleneck. Communication and empathy scale your influence. 14. Take full ownership of your work. Your career grows with your responsibility. 15. Stop waiting for permission. Success favors action. 16. Learn to say no. Impact depends on protecting your time. 17. Don’t ignore AI. The next great engineers will master it early. 18. Invest in your setup. Focus on ergonomics. 19. Remember a job is temporary. Skills and habits stay with you. 20. Read more. Not all readers lead by all leaders read. 21. Learn to write clearly. Your writing determines how far your ideas spread. 22. Mentorship matters. Both giving and receiving it accelerate growth. 23. Build public artifacts like talks or posts. They boost your visibility. 24. Build strong ties with PMs and designers. Great products are team sports. 25. Document your decisions. Future you will thank you. 26. Prioritize long-term code health. Refactors are cheaper early. 27. Build side projects. They keep your curiosity alive. 28. Don’t confuse complexity with sophistication. Simplicity wins. 29. Be known for something. A niche makes you memorable. 30. Learn to influence without authority. 31. When you feel stuck, teach. Explaining brings clarity. 32. Build relationships early. Networking works best when it’s genuine. 33. Protect deep work hours. Distraction kills true level output. 34. Don’t compare your path. Compounding careers look nonlinear. 35. Every career has seasons: growth, plateau, burnout, recovery. Respect them. 36. Workplaces change fast. Adapt or risk irrelevance. 37. You can’t outwork bad direction. Strategy beats hustle. 38. Don’t let perfection delay shipping. Excellence comes from iteration. 39. Be reliable. Consistency beats brilliance over time. 40. Keep learning, but also keep living. Your best ideas often come outside code.
-
I’m 39. Here are 10 things I wish I knew at 21 about programming. (After spending 15+ years working as a software engineer at Amazon, Paytm, Google & startups) If you’re just starting out or in your 20s this might save you years of trial and error. [1] You don’t need to know everything There’s too much in tech frameworks, tools, languages. Mastering one thing deeply beats being average at 10. → Learn one language well. → Go deep. Build. Break. Rebuild. Depth compounds. Breadth follows naturally. [2] You won’t remember everything You’ll forget syntax. APIs. Even concepts. That’s fine. What matters is knowing how to figure things out when you need them. Google, docs, and AI tools are part of the workflow. [3] Tutorial hell is real Watching videos ≠ learning. You feel productive but can’t solve a single problem on your own. → Limit tutorials. → Write code. Break things. Debug. That’s how you learn. [4] Don’t compare your journey Some start at 14. Some at 24. Some have CS degrees. Some don’t. The only person you should compete with is who you were yesterday. [5] Communication > Code Your ability to explain things clearly is more important than your ability to write clever code. → Speak up in meetings. → Write clear docs. → Ask better questions. This alone can 2x your career growth. [6] Focus on solving problems, not writing code Code is a tool. The real value is in solving real-world problems. → Understand the business impact. → Ask “Why?” before “How?” [7] Learn by reading code You’ll learn more by reading code from good engineers than by doing 100 tutorials. Open-source projects. Internal repos. PRs from seniors. Study their structure, naming, logic. [8] Ask for help (early and often) Struggling silently is not noble. It’s inefficient. Asking questions shows you care enough to grow. [9] Build side projects Nothing teaches you more than trying to build something from scratch. You’ll learn architecture. Debugging. Tradeoffs. And you’ll finally understand why those tutorials taught you what they did. [10] Growth is slow until it’s not You’ll feel stuck for months. Then suddenly everything will click. Trust the process. Keep showing up. Your future self will thank you.
-
A collection of learnings from my 15-year Software Engineering career at companies like Meta, Pinterest, and Walmart. 1. To learn how to code, you must write code in an unstructured environment. Tutorials can help initially, but don't get stuck in tutorial hell: these engineers can't actually solve problems. 2. The only way to learn how to write good code is to write a bunch of terrible code first. It is fundamentally about the struggle. 3. Debugging is effectively playing a game of detective. Becoming an expert debugger in a large, complex codebase will make you extremely valuable to any company. 4. For software engineers, most of what you learn in school won't be relevant on the job. The biggest value of a university education is your network. Invest in getting to know students and faculty. Don't worry too much about grades. 5. Networking is about building long-term relationships built on trust and value. Give more than you take and your network will grow rapidly. Remember this phrase: "Your net worth is your network." 6. Everyone in tech faces imposter syndrome. Consider imposter syndrome as an opportunity to learn from people who are further along. Actively seek out feedback and talk to people. 7. Tech interviews are immensely broken and your interviews will probably differ from your job. View interviews as a learning opportunity where you get to meet some other cool, smart people. 8. Realize that the average person will spend < 10 seconds scanning your resume. No one is as interested in you as you, so you need to keep things short. Your resume should be 1 page long. 9. Feedback is the secret to rapid career growth. Make it easy for others to give feedback by introspecting and asking for specific parts of your behavior. A lazy “Do you have any feedback for me?” will often be met with a similarly lazy “Nope, you’re doing great!” 10. If you're not sure what company to join, go to a larger, well-respected company (FAANG) as your first job. Junior engineers benefit from the consistency and stability of Big Tech. 11. Onboarding is a magical time when you get a free pass to ask as many questions as possible, request people's time, and build foundational relationships. Work with a sense of urgency when you're new to a company. 12. The relationship with your manager is the most important relationship you'll have in the workplace. You should proactively drive meetings and feedback with your manager; don't wait for them. 13. Getting promoted as an engineer is not just about skill or output. You also need scope and trust. Most promotions are deliberately planned months in advance. If a promotion is important for you, bring it up with your manager well in advance. 14. Most engineers don't negotiate their offers, but they should. The most important tool for negotiation is leverage. This means competing offers. I put this all together in a 1.5-hour video here: https://lnkd.in/gAH4Q2pD
-
If you're in your 20s as a software developer, here are 21 rules to remember to become an amazing engineer when you hit your 30s. I was ‘YOU’ once. These are lessons nobody taught me, but they came with experience that helped me make a strong impact at Microsoft with my team. 1. Don’t get too attached to your own code; stay open to improvements. 2. Complexity will come back to haunt you during on-call rotations. 3. Aim to resolve underlying issues, not just the surface symptoms. 4. Remember, users care about the functionality, not the elegance of your code. 5. Keep track of design decisions and document them for future reference. 6. Every piece of code you write adds maintenance risk—think twice. 7. Software is a continuous process; it’s never truly “done.” 8. Make sure you fully understand the problem before jumping into solutions. 9. Write clear and informative commit messages for your future self and others. 10. Avoid adding dependencies that aren’t essential to reduce potential issues. 11. Code reviews are a great way to share knowledge within the team. 12. Every choice in code is a compromise; weigh the pros and cons. 13. Remember that an estimate is not a guarantee. 14. Release early and refine often; iteration improves quality. 15. Following coding standards helps avoid unnecessary debates. 16. Design with future maintenance in mind to save effort later. 17. Everyone has a hard time understanding code they didn’t write. 18. Don’t hesitate to ask for assistance when you’re stuck. 19. You’ll always be learning something new in this field. 20. Simplicity in design pays off in the long run—don’t overcomplicate. 21. Don’t assume your first solution is the best; iterate and refine.
-
Spending time on DSA was the toughest and most rewarding part of my CSE journey in college. It’s what helped me crack Samsung, Microsoft, and Walmart. If I were starting from zero in 2025, here’s exactly how I’d approach DSA again with 10 lessons I wish I knew earlier: 1. Learn One Language Well Don’t waste weeks picking the “best” programming language. C++, Java, Python, it doesn’t matter. If you know how to reverse a string, loop through an array, and use hash maps, you’re ready to start. 2. Build Confidence First Solve 10-20 easy problems to get your rhythm. The goal is to build confidence, not mastery. 3. Avoid Over-Planning Resources You don’t need the perfect roadmap before starting. Pick any decent resource: Striver’s Sheet, Neetcode, or GFG, and just begin. 4. Focus on Patterns, Not Problems Instead of memorizing solutions, focus on patterns like sliding window, recursion, and dynamic programming. 5. Don’t Fear Stuck Moments The biggest growth happens when you’re stuck and trying to debug a broken idea. Spend 20-30 minutes struggling before checking the solution. Look at hints but not the full code. 6. Proof Over Solutions Don’t just implement the solution prove why it works. For Example: For binary search, explain why the low = mid + 1 and high = mid - 1 updates actually work. 7. Move Up the Difficulty Ladder Once easy problems feel repetitive, start tackling medium-level problems. They teach optimization and edge cases. Example: Go from “Climbing Stairs” (easy) to “Longest Increasing Subsequence” (medium) to level up. 8. Track Time Taken Per Problem Solving a problem in 2 hours vs 20 minutes is a massive difference. Use timers to build a sense of speed vs quality. Initially, aim for accuracy. Later, focus on speed once you’ve grasped the concepts. 9. Practice Random Problems When doing revision, randomize your practice. In interviews, you won’t know the topic beforehand, so build this muscle. Instead of only solving dynamic programming, mix it up with graphs and arrays. 10. Join Contests for Real-Time Pressure Live contests (Leetcode, Codeforces) test your ability to think fast under pressure. Participate in at least one contest per week to sharpen your competitive edge. If you stick to it, the skills you develop here will stay with you for life whether it’s in interviews, building scalable systems, or leading engineering teams. Start today. The results are worth it.
-
10 Critical Skills For Thriving In Tech (And How You Can Master Them) I've been leading teams at Google for nearly 17 years. What I've seen: The top performers? They aren’t just great at building systems. They drive impact, build trust, and make things happen. Here’s what I’ve seen in those who rise to the top: 1. Take Action. Experiment. - Identify problems and start solving them. - Iterate quickly to reduce risk. 💡 Tip: Ask: “What’s one small thing to move this forward?” 2. Be a Trusted and Reliable Teammate. - If things change, reset expectations early. - Dependability makes or breaks teams. 💡 Tip: Be willing to say no. Part of being reliable means protecting your time. 3. Results Focused. Understand the Big Picture. - Work on what moves the needle. - Think end-to-end. Optimize for impact, not just output. 💡 Tip: If you don’t know why something is important, ask questions. 4. Learn Relentlessly. Stay Curious. - Regularly ask, "What’s one thing I can improve?" - Always be learning new technology, systems, and ideas. 💡 Tip: Small, consistent learning sessions add up over time. 5. Progress Over Perfection. - Ship, learn, iterate. No system is perfect. - Done is better than perfect. 💡 Tip: Decide what 'good enough' looks like before you start. 6. Guard Your Focus. Protect It Ruthlessly. - Block time for deep, uninterrupted work. - Minimize distractions and context switching. 💡 Tip: 2-hour focus blocks make a huge difference. 7. Make the Complex Simple. - Simplify code, systems, and ideas. - If you can’t explain it simply, you don’t understand it well enough. 💡 Tip: This is a skill that takes practice. Find opportunities to explain complex topics simply. 8. Communicate Ideas Clearly. - Explain complex concepts in simple terms. - Does it need that many words? Probably not! 💡 Tip: Before hitting send, cut 20% of your words. 9. Make Others Better. - Mentor others. - Share knowledge freely. 💡 Tip: Teaching others is a great way to solidify your own knowledge. 10. Understand User Needs. - Build for the customer and understand the business - Keep user experience at the center of decisions. 💡 Tip: Before solving a problem, ask: ‘Is this the right problem to solve?’ Master these, and you won’t just be another engineer. You’ll be someone people trust to lead, innovate, and drive impact. Which of these do you think make the biggest difference? Drop it below! -- ♻️ Reshare to help you network. ➕ Follow me, Melody Olson, for career and leadership insights.
-
✨ 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
-
If you’re just starting your journey in technology - especially technology and financial services - welcome to the most exciting time in history to build, learn, and lead. The tools and pace have changed, but the principles of lasting success are immutable. Here are three items of guidance I give folks entering the workforce: 1. Always Be Curious The best technology professionals aren’t the ones who know everything, but they’re the ones who never stop learning. Curiosity is your career’s greatest fuel. Ask “why” until you understand, and then ask “what if” to reimagine the why. Technology continues to evolve - and this evolution will grow at an explosive pace as it has been. Don’t just think about YOUR system, think about THE ecosystem. Learn how systems work, how data flows, and most importantly, how people use what you build. Understand how your business operates and how your work connects to customers, colleagues, and the company’s mission. The best technologists break down silos. Understand where your industry is headed. Regardless of where in the IT value chain you are, understand clearly that each and everything you do - sling code, configure a firewall, manage a project, etc. - everything you do is an integral part of the collective success of your firm. Strong foundations will carry you through every new wave of technology. 2. Prioritize Relationships Technology is powerful, but relationships move mountains. Learn to translate between business and tech, between vision and execution. Connection is your hidden superpower. Be the trusted advisor and partner that our business partners deserve. Learn, empathize, relate, advise. You will ONLY win if your business partners win. You might have different specializations, but business or IT, the team is one and the same. It’s YOUR team. Individual brilliance can solve problems, but only great teams create progress. Collaborate generously, share credit freely, and lift others as you rise. True innovation happens when egos take a back seat to shared purpose. Technical skills open doors, but soft skills keep them open. Learn to listen, to communicate clearly, to influence without authority, and to handle conflict with grace. Emotional intelligence will make you the kind of technologist people want on every project. 3. Be The Best You That Ever Youd Your reputation will travel faster than any code you deploy. Be reliable, be dependable, and do the right thing - especially when no one is watching. Trust is the ultimate currency in this field. Technology rewards imagination, but impact comes from execution. Dream big, stay grounded, and remember that progress beats perfection every time. Remember that you’re not on an island - ask for help, learn from others, find a mentor. The future needs more technologists who are curious, kind, and courageous. If that’s you, keep going. In this Age of AI, you’re not just shaping what I am confident is going to be your stellar career, you’re shaping the world.
Explore categories
- Hospitality & Tourism
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Healthcare
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development