2022 will remain a watershed year in my career as a Software Developer. Although I had begun working as a Java developer in 2020, it was in 2022 that I truly embraced software development as a field and convinced myself that this indeed was my calling.
The year started with me convinced that I had to move to an organization where I had greater exposure to software design, and where I could write Java code to my heart's content. Hence I began by devoting myself to Data Structures and Algorithms. I stuck to grinding out problems Leetcode, attending weekly contests. Not only did I conquer my fear of Graph Algorithms, but rather got to a point where I could code medium Graph problems within 10-15 minutes. Unsurprisingly, I was able to land two offers by March and faced my first real challenge of the year - handling competing offers.
How to deal with competing offers and which one to accept?
The thought of having multiple offers at hand seems like a lucrative dream until the said scenario has come to pass. However, I decided to be guided by the following factors in my decision making
The overall financial package - You shouldn't go for an offer with a vastly inferior financial package. My rule of thumb was to not consider an offer which was 20% lesser than the best offer I had at hand.
The nature of teams and the work they do daily - I reached out to members of my prospective teams on LinkedIn and resorted to cold messaging to know about the work, team culture etc. This was the deciding factor, as I got to know that one of the teams was more client-oriented, while the other was involved in product development from scratch.
Tech Stack - I got to know that one of the companies was working on a monolith code, and that was a major red flag as I wanted exposure to microservices architecture.
Further tips which can help you make the right call while choosing between offers:
Try to know which team you'll be working for in your new organization before making a decision.
Reach out to members of that team on Linkedin. This can make or break your career trajectory for the next year or so.
Try to delay your decision as much as possible, as the more time you buy the more informed your decision will be.
Resist pressure from recruiters, by declining calls, and listening to them more than speaking. Keep your answers succinct - "Yes, Hmmm, Ok, Let me think" are your friends. The more you use them, the better your negotiations will be.
Nonetheless, 10 months later I can happily share that I made the right call as the organization that I joined, has taken my career in the right direction. Being the founding member of a new team, involved in the development of systems from scratch, I got exposed to several new challenges and thus new learnings.
Technical Learnings of 2022
Springboot - Our systems extensively use the Springboot framework of Java for the development of RESTful APIs. Working on the projects, I got to learn about several new annotations, the autowiring of beans, and making the code extensible through the use of application properties.
Design Patterns - I was able to implement "The Strategy Pattern" in our code, which helps our Payment System seamlessly switch between different PSP Integrations based on the location of the incoming requests.
Database Design - An optimal design of the database, to ensure quick reads, indexing, and foolproof record keeping(critical for a payments system).
CI/CD - Gitlab, Helm Charts, SonarQube
Unit and Integration Testing - JUnit 5, Mockito Framework, Rest Assured
Agenda for 2023
As we look ahead to 2023, I have already decided on my learning goals for the upcoming year.
I aim to continue ahead on my front-end learning path and hope to get proficient in React by March.
I'd like to pick up DevOps and hopefully pass the Kubernetes certification.
The final point on the agenda is learning a systems language, preferably Rust by the end of 2023.
Signing off on what has been a great year professionally, I look ahead with optimism and share my best wishes with you all.