Software Engineer's Experience

Some Lessons Learned in Software Engineering

As I reflect on my journey as a software engineer, I realize that the path to mastery is paved with countless lessons learned, some through triumphs and others through trials. In this blog post, I share 51 hard-earned insights gleaned from years of navigating the ever-evolving landscape of technology and teamwork. Join me as we explore the wisdom distilled from the codebase:

  • Vim > Emac: Embrace the power of Vim for efficient coding.
  • Learn to say no: Prioritize tasks and commitments to maintain focus.
  • Be honest, early: Transparency fosters trust and prevents surprises.
  • JavaScript is fun: Find joy in the language’s versatility and creativity.
  • Disagree and commit: Respect differing opinions while driving towards a common goal.
  • People love estimates: Provide realistic timelines to manage expectations.
  • TypeScript is awesome: Harness the benefits of static typing for robust code.
  • Always ally with product: Collaborate closely with product teams to align technology with user needs.
  • Keep It Simple Stupid (KISS): Strive for simplicity in design and implementation.
  • Add context to Pull Requests: Enhance collaboration by explaining the rationale behind code changes.
  • Always expect to pivot, always: Embrace change as a constant in the software development lifecycle.
  • You don’t need advanced Math: Focus on practical problem-solving over theoretical concepts.
  • Present solutions, not problems: Offer constructive suggestions when addressing challenges.
  • Become comfortable with failure: Learn and grow from setbacks in pursuit of excellence.
  • Good people make bad decisions: Understand that everyone is fallible, including oneself.
  • Be familiar with the art of DevOps: Bridge the gap between development and operations for seamless deployment.
  • You won’t always work on fun stuff: Embrace the diversity of tasks in software engineering.
  • Make technical tests match the job: Assess candidates based on relevant skills and requirements.
  • Stop giving unstructured interviews: Design interviews that evaluate candidates effectively.
  • Don’t worry about your 10-year plan: Stay adaptable in a rapidly changing industry.
  • Never compromise your mental health: Prioritize well-being amidst the demands of work.
  • Lots of lines of code != Good Engineer: Value quality over quantity in code contributions.
  • Nearly everyone works on legacy code: Embrace the challenges of maintaining and refactoring existing systems.
  • Never let a mentor touch your keyboard: Foster independent problem-solving skills through guidance.
  • Interview for logical thinking and attitude: Assess problem-solving abilities and cultural fit in interviews.
  • Fundamentals > Language and Framework: Master core principles that transcend specific technologies.
  • Don’t be fooled by free pizza and ping-pong: Look beyond perks to evaluate workplace culture.
  • This too shall pass…it’s hard now, it will pass: Maintain perspective during difficult times.
  • Get involved with other areas of the business: Understand the broader context of your work.
  • A technical leader’s role is to guide not decide: Empower team members to contribute and grow.
  • The zone is real, you will get trapped for hours: Balance deep focus with regular breaks to avoid burnout.
  • Do not measure success by the number of commits: Value impact and quality over quantity.
  • Enjoy the learning curve of being a junior engineer: Embrace growth opportunities and mentorship.
  • Celebrate World Programmer Day, why the heck not: Acknowledge and appreciate the contributions of programmers worldwide.
  • Fast-paced environment = Expect to be overworked: Set boundaries to maintain a healthy work-life balance.
  • Do not give multiple-choice timed tests in interviews: Assess candidates’ abilities authentically.
  • You do not need a degree to be a Software Engineer: Focus on skills and experience in the field.
  • Let go of the ego. Trust people with the hard tickets: Foster a collaborative and supportive team environment.
  • Cheating is encouraged (Stack Overflow, Chat GPT…): Utilize resources responsibly to solve problems effectively.
  • If you need to talk, reach out to someone, me, anyone: Prioritize mental health and seek support when needed.
  • You are more, much more, than the sum of your career: Define success beyond professional achievements.
  • Move towards brilliance and away from brilliant assholes: Cultivate a positive and inclusive workplace culture.
  • Be obsessed with the data, success metrics everywhere: Make informed decisions based on empirical evidence.
  • If it can be done via Slack or Email, don’t book a meeting: Respect colleagues’ time and prioritize asynchronous communication.
  • If you want your team to be vulnerable, be vulnerable first: Lead by example and foster a culture of openness and honesty.
  • Create sacred work/life boundaries early and stick to them: Preserve work-life balance to sustain long-term productivity and well-being.
  • If it’s not written down, it’s not worth the paper it’s written on: Document decisions and agreements for clarity and accountability.
  • Avoid fillers like ‘but’, ‘however’, try to listen without responding: Practice active listening and empathy in communication.
  • People-first work cultures will not look to trick you in interviews: Seek environments that prioritize employee well-being and growth.
  • If you are the smartest person in the room, get out of that room: Surround yourself with diverse perspectives and continuous learning opportunities.
  • If your startup CEO is not obsessed with fundraising, be worried: Evaluate the alignment of company goals and priorities.

In conclusion, the journey of a software engineer is marked by continuous learning, adaptation, and growth. By embracing these lessons, we navigate the complexities of our field with wisdom and resilience, striving to make meaningful contributions and create positive impact in the world of technology. Let these insights serve as guiding principles as you embark on your own journey in software engineering.

Leave a Reply

Your email address will not be published. Required fields are marked *