What I’ve Learnt So Far as a Software Engineer
I’ve been programming professionally for about three years now, and I’ve learned a lot, mostly about consistency, deliberate practice, and patience. Things take time, and it’s important not to be too hard on yourself. One key takeaway: you don’t have to know everything. Instead of focusing on tools, frameworks, and programming languages, focus on the fundamentals of computer science. Over time, this knowledge compounds, and your foundation grows stronger.
If you have a solid grasp of computer science concepts, networking, data structures, and algorithms, everything else becomes secondary and easier to pick up. I’m still learning, and this list will evolve, but here’s what I’ve learned so far as a software engineer:
1. Understand the Problem You Are Trying to Solve
This is something I’ve struggled with and still do at times. Before jumping into coding, take a step back and gain context about the problem. It’s tempting to dive straight into the code, but it's crucial to clarify the problem first. Reach out to stakeholders, clear up assumptions, and consider the edge cases. Coding is the easy part; understanding the problem enough to build the right solution is the challenge.
2. I Still Don’t Know Everything
Software engineering is vast and rapidly evolving. It’s impossible to learn everything. Instead, focus on building small projects, experimenting with things you find interesting. Pick a programming language, dive deep into it before moving on to the next one. I also recommend reading books—good books condense the author’s experience and can help you avoid their mistakes.
3. Find a Mentor or Coach
Surround yourself with engineers more senior than you. Pick their brains, ask for advice, and learn from their experiences. This can help you fast-track your career. Attend virtual events, network on LinkedIn, and reach out to people who inspire you to ask how they got to where they are today.
4. Always Be Interview Ready
I always keep interviewing, whether I have a job or not. If a recruiter reaches out on LinkedIn, I’m open to having a chat—not necessarily because I want the job, but because I want to hear what others are working on. Keep interviewing so you’re always prepared for new opportunities. To succeed as a developer, you need to be good, ready, and know when to move on.
5. Be Comfortable with Your Tools
Imagine a carpenter who doesn’t know how to use a hammer or a butcher with a blunt knife. As a developer, you need to be efficient and effective with your tools. Invest the upfront time to master your tools—your programming language, IDE, and operating system. Over time, this investment will significantly improve your productivity.
6. Automate, Automate, Automate
If you find yourself doing a repetitive task more than twice, automate it. Write scripts or tools to automate away manual work. This is a high-leverage activity that boosts productivity and frees up your time for more important tasks. Think about it—spending one hour a week on a manual task adds up to 52 hours a year that you could have spent doing something else.
7. The Best Code Is No Code
Try to reduce the amount of code you write. If a non-technical solution works, use it. If there’s a well-maintained library, leverage it instead of reinventing the wheel. Extra code adds complexity, which eventually leads to bugs. Less code is better code.
8. Great Engineers Think Like Designers
The best software engineers think deeply about the user experience of their code. They have empathy for the people who will be using or maintaining the code. They ask themselves: Who will use this? Why will it be used? How will it be used? Keeping the user in mind is central to good engineering. Prioritize code readability, which leads to maintainability and long-term reliability.
9. Keep Your Process Lean
Agile development is popular, but being truly agile means building in small chunks, learning from each iteration, and keeping things simple. Don’t over-optimize for the future, as the future is uncertain. Keep it lean—less is often more in software development.
10. Data Is the Most Important Part of Your System
The priority of any system should be data integrity. Organize your data in a maintainable, scalable, and reliable way. Your data will likely outlast your codebase, so spend time ensuring it's clean and well-structured. This effort will pay off in the long run.
11. Don’t Be an A**hole
Respect everyone and back your opinions with data. Don’t look down on anyone, but also don’t idolize others. Be kind and empathetic to your peers. When reviewing code, criticize the code, not the person. It’s important to voice your opinions, but always do it respectfully. We all started from somewhere, and we’re all on our individual journeys, so let's support each other.
These are just some of the things I’ve learned so far in my journey as a software engineer. Feel free to share your own learnings in the comments—let’s grow together.