My Experience as a Software Engineer So Far

My Experience as a Software Engineer So Far


10 min read

Hey everyone, I'm back! ๐ŸŽ‰ It's been a while since my last blog post, but this time I'm here to stay. Life threw me a challenge to write a blog before the weekend and I'm all in to win ๐Ÿ’ช.

Alright, let's jump right in! ๐ŸŒŠ

As the title suggests, this blog is about my three-year journey in engineering. Yes, it's been three years โ€” well, technically 1.6 of those were as an intern, but who's counting? ๐Ÿคทโ€โ™‚๏ธ These years have been nothing short of crazy, filled with immense learning, company experiences and some seriously intense coding marathons.

It's tough to sum up all the lessons I've learned, but I'll do my best to capture the gist of it.

๐Ÿ’ป It's Not Always About Coding

Understanding the importance of product thinking, participating in design decisions, and providing feedback is crucial. It's not just about writing code, it's about understanding the bigger picture and how your work fits into it.

When you engage in product thinking, you start to see the product from the user's perspective. This means considering how features will be used, what problems they solve, and how they can be improved.

Participating in design decisions allows you to contribute to the overall user experience. It's about collaborating with designers to ensure that the product is not only functional but also intuitive and enjoyable to use. Your technical insights can help shape the design in ways that make it more feasible and efficient to implement.

Providing feedback is equally important. Whether it's during code reviews, design discussions or product planning meetings, your input can significantly impact the outcome.

๐Ÿ” Every Pixel Matters

UX is crucial. Even the smallest detail, like a single pixel, can significantly influence how users perceive and interact with your application.

Truly, deeply, madly care about your users โค๏ธ

Truly, deeply, madly care about your users โค๏ธ

I clearly remember this one time I spent hours tweaking a small transition in an animation. At first, it felt like a tiny, insignificant task that wouldn't matter. But the boost in user satisfaction was huge. That experience showed me how important it is to focus on even the smallest details.

๐Ÿ’ก Mistakes Happen, Learn from Them

Mistakes are inevitable, but the key is to learn from them and grow. Every mistake you make provides an opportunity to improve and refine your processes, ultimately making you a better developer and strengthening your team's workflow.

For instance, there was a time when we accidentally broke the prod because of a small oversight during the testing phase.

This incident could have led to finger-pointing but instead, we took it as a learning experience. We decided to implement a "testing plan" that required thorough verification by all team members involved in the project. This plan included detailed checklists, peer reviews and multiple rounds of testing to catch potential issues before they reached prod.
This experience underscored the importance of learning from our errors and using them as stepping stones toward better practices and more robust solutions.

๐Ÿ”„ Review Your Own Code

Reviewing your code before asking others to review it can significantly streamline the entire review process, making it both easier and faster.

By taking the time to go through your code meticulously, you can identify and correct mistakes, optimize performance and ensure that your logic is sound. This approach not only enhances the quality of your code but also makes the reviewer's job much simpler.

When you review your own code, you can catch syntax errors, logical flaws, and potential performance bottlenecks that might have been overlooked during the initial dev phase.

Moreover, self-reviewing your code allows you to think critically about your implementation choices and consider alternative solutions that might be more efficient or elegant.

Ultimately, this habit of self-reviewing not only improves the quality of your code but also contributes to your growth as a developer.

๐Ÿ“ž Setting Priorities - OnCall

Developers might not like interruptions but when you're on call, customer needs come first.

This responsibility requires you to be available and responsive, often outside of regular working hours, to address urgent issues that could impact the user experience or system performance.

Being on call taught me to prioritize effectively and handle emergencies calmly. It was stressful but incredibly rewarding to resolve critical issues promptly. I learned to quickly assess the situation, determine the root cause of the problem and implement a solution under pressure. This experience not only improved my technical skills but also enhanced my ability to stay composed and focused during high-stress situations.

๐Ÿ” Go Deeper into Issues

Even if you don't know everything at first, diving deep into issues is super helpful. By really looking into problems, you learn a lot and get better at what you do. It's totally fine to ask for help when you need it, but trying to figure out the root cause on your own can be a great learning experience.

This way, you can spot patterns, understand how things work, and get a better handle on the subject. Over time, this habit not only makes you more skilled but also boosts your confidence in handling tough problems by yourself.

๐Ÿ™‹ Ask for Help

Don't hesitate to ask for help when you need it.

I'm currently reading a book called Thinking in Bets, which emphasizes the importance of being comfortable with uncertainty and admitting when you don't know something.

The book suggests that saying, "I'm not sure," is not a sign of weakness but rather a step towards finding the right answers. By acknowledging your limitations, you open the door to learning and collaboration.

I once faced a particular problem that was beyond my expertise. Initially, I hesitated to ask for help, fearing it would make me appear less competent. However, when I finally reached out to a colleague, their advice was invaluable. They provided insights and solutions that I hadn't considered, which not only resolved the issue but also expanded my understanding of the subject.

๐Ÿ† Take Ownership

Take ownership of your code and the product you work on. This means taking full responsibility for the quality and functionality of your contributions.

When you take ownership, you are more likely to feel a sense of pride in your work, which can lead to greater job satisfaction and motivation.

๐Ÿ› ๏ธ Improve Old Code

When working on old code, it's important not to blame the previous developers. Instead, focus on improving the code.

Aim to leave the codebase in a better condition than you found it.

Refactoring an old codebase can be tough, but it's super rewarding. By cleaning up and optimizing the existing code, you can really boost the app's performance. This usually means spotting and fixing inefficiencies, getting rid of redundant code, and updating old practices to match current standards.

One big perk of refactoring is that it makes future maintenance a breeze. Cleaner, well-organized code is easier to understand and tweak, which means fewer new bugs when changes are made. Plus, better code readability helps new team members get up to speed faster, making the whole team more productive.

From my experience, tackling an old codebase not only improved the app's performance but also gave me a huge sense of accomplishment. It let me use best practices and modern techniques, leading to a stronger and easier-to-maintain codebase

๐Ÿ“„ Document Your Work

Writing down what you do is super important for a bunch of reasons. Over time, it's easy to forget the details of what you've done, especially after a few years. By keeping good records, you can track your progress and achievements easily.

Plus, documentation is a great reference for you and your team. It helps everyone understand why certain decisions were made, how features were implemented and what solutions were used to tackle problems. This is handy when you go back to old projects or when new team members join and need to catch up quickly.

๐Ÿค Collaboration is Key

Working effectively with your team is vital for the success of any project. It's important to share knowledge openly, ensuring that everyone is on the same page and has access to the information they need. Clear communication is essential, it helps to avoid misunderstandings and ensures that everyone knows their responsibilities and deadlines.

Supporting each other is equally crucial. This means being available to help your teammates when they encounter challenges, offering constructive feedback and celebrating each other's successes.

๐Ÿš€ Embrace Challenges

Challenges are just opportunities in disguise. Embrace them, and you'll grow both personally and professionally. When you face a challenge, it pushes you out of your comfort zone and makes you think creatively to find solutions. This not only improves your problem-solving skills but also builds resilience and adaptability.

Every obstacle you overcome adds to your knowledge and expertise, making you better at what you do.

So, the next time you face a challenge, don't shy away from it. See it as a chance to learn, grow, and make meaningful contributions to your work and your team.

โš–๏ธ Balance Work and Life

Maintain a healthy work-life balance. Burnout is a real problem that can mess with your productivity and happiness. It's super important to take care of yourself just as much as you focus on your work.

Set some boundaries between your work and personal life. This could mean stopping work at a certain time each day, taking regular breaks and making sure you have time to chill and unwind. Do things you enjoy and that help you recharge like hanging out with family and friends, pursuing hobbies or just taking a walk outside.

Remember, taking care of your mental and physical health will not only make you feel better but also boost your work performance. When you're well-rested and happy, you're more creative, focused, and productive.

๐ŸŽ‰ Celebrate Achievements

Celebrate your milestones, no matter how small they seem. Recognizing your accomplishments is super important because it boosts your morale and keeps you motivated.

Whether it's finishing a tough project, learning a new skill, or just meeting a deadline, take a moment to acknowledge your hard work and dedication. This could be as simple as treating yourself to something you enjoy, sharing your success with your team or just taking a moment to reflect on what you've achieved.

Celebrating these moments not only makes you feel good but also encourages you to aim for even greater achievements in the future.

๐Ÿ—ฃ๏ธ Effective Communication

Communication is crucial, especially when you're working with a team. Sharing your ideas clearly and making sure you understand others can save you from a lot of mix-ups and mistakes.

I remember once I misunderstood a requirement because it wasn't explained well. That mistake cost me a whole week of work. Now I always double-check and confirm everything before diving into a task.

โฐ Time Management

There was a time when I had to juggle multiple high-priority tasks simultaneously. Each task demanded my full attention and had strict deadlines. To handle this, I started by listing all my tasks and identifying which ones were most urgent and important. I then broke down each task into smaller, manageable steps and allocated specific time slots for each step. By doing this, I could focus on one task at a time without feeling overwhelmed.
This approach allowed me to meet all the deadlines without compromising the quality of my work.

๐ŸŒˆ Enjoy the Journey

Lastly, enjoy the journey. The ups and downs, the late nights, the breakthroughs - they're all part of the engineering adventure. Embrace every moment, whether it's a tricky bug that keeps you up at night or the joy of finally solving a complex problem. These experiences make you a better engineer and a stronger person.

Take time to appreciate the small wins, like successfully deploying a new feature or getting positive feedback from users. These moments make all the hard work worth it.

Remember, the learning never stops. Each project, each line of code, and each collaboration with your team is a chance to grow. Stay curious, ask questions, and don't be afraid to try new things.

The journey is just as important as the destination and by enjoying it, you'll find more satisfaction in your work and stay motivated to keep going.

To wrap things up, my engineering journey has been quite the rollercoaster, packed with valuable lessons and experiences. From tackling tough projects to working with awesome teammates, every step has helped me grow as an engineer.
There's always more to learn, and sharing what we know is the best way to grow together. By swapping ideas and insights, we can all get better at what we do.

I encourage you to stay curious and keep exploring new tech and methods. Engineering is always changing and there's always something new to check out. Whether it's a new programming language, a cool tool or a fresh way to solve problems, jumping on these opportunities will keep you ahead in the game.

Stay tuned for more insights and stories from my ongoing adventure in the world of engineering! I can't wait to share more of my experiences, challenges and wins with you ๐Ÿš€.

Did you find this article valuable?

Support Adyasha Mohanty by becoming a sponsor. Any amount is appreciated!