Syed Akif Azwad is currently a Software Engineer II at Optimizely, where he works on the Netspring team, a warehouse-native analytics platform. He earned his BSc in Mathematics from Shahjalal University of Science and Technology and has more than four years of experience building backend systems with Java and Spring Boot.
Before joining Optimizely, Akif worked on enterprise IoT device management, video streaming, and ride-sharing platforms. Throughout his career, he has gained hands-on experience with technologies such as Redis, MongoDB, Kafka, RabbitMQ, Kubernetes, Elasticsearch, and various AWS and GCP services. Outside of work, he enjoys studying computer science fundamentals, backend architecture, and competitive programming.
Akif applied for the Software Engineer II position at Optimizely through LinkedIn.
The hiring process consisted of five virtual interview rounds: two Data Structures & Algorithms interviews, two System Design interviews, and one Behavioral interview.
Phase 1: Data Structures & Algorithms
The first interview focused on problem-solving. Akif was given a palindrome-related problem and initially approached it with a brute-force solution. As the discussion progressed, he explored recursive decomposition and identified the overlapping subproblems that naturally led to a dynamic programming solution.
When asked whether the solution could be optimized further, he was unable to derive the most efficient approach. The interviewer then introduced Manacher’s Algorithm and explained how it achieves linear-time complexity for solving palindrome problems.
To prepare for this round, Akif reviewed common algorithmic patterns, including recursion, dynamic programming, trees, graphs, binary search, and greedy algorithms. Although he already had a competitive programming background, he spent additional time practicing coding problems in Java and improving his ability to communicate his thought process while solving problems.
Phase 2: Data Structures & Algorithms
The second round began with a fast exponentiation problem. Akif first discussed the straightforward solution before identifying important edge cases, such as handling large exponents and negative powers. He then optimized the solution using Binary Exponentiation.
Since he completed the problem relatively quickly, the interviewer introduced another challenge involving two knights on a chessboard and determining the minimum number of moves required for them to meet. Akif proposed a recursive solution, which the interviewer found satisfactory.
His preparation for this interview closely mirrored the first round, with an emphasis on solving coding problems, identifying edge cases, and clearly articulating his reasoning throughout the interview.
Phase 3: System Design
The third interview began with a discussion of Akif’s previous projects before transitioning into a system design exercise: designing a platform similar to Google Photos.
He started by gathering functional and non-functional requirements, followed by capacity estimation and high-level architecture design. His proposed solution included a Spring Boot backend, Amazon S3 for image storage, MongoDB for metadata management, Redis for caching, CDN integration, and database replication to improve scalability.
During the feedback discussion, the interviewer noted that while the high-level architecture was solid, they had expected more emphasis on low-level design, including service-layer interactions and data-access abstractions. The interviewer also expected security considerations, such as the use of presigned URLs for secure file uploads and downloads, to be explicitly addressed.
To prepare for this round, Akif studied scalability, caching strategies, database design, API design, distributed systems fundamentals, and common backend architecture patterns. He also practiced discussing architectural trade-offs using real-world systems and his own project experience.
Phase 4: System Design and Coding
Since the previous system design interview was not considered a definitive pass, an additional technical round was scheduled.
The interview began with an in-depth discussion of Akif’s previous projects. He was then asked to design and implement a bidding service for an eBay-style platform. After clarifying the requirements, he implemented the solution while applying object-oriented design principles and keeping maintainability in mind.
Throughout the session, the interviewer explored alternative approaches and architectural trade-offs, making the interview feel more like a collaborative engineering discussion than a traditional coding assessment.
For preparation, Akif reviewed object-oriented design principles, SOLID principles, and common backend design patterns. He also revisited his previous projects to prepare for discussions around technical decisions, implementation challenges, and architectural trade-offs.
Phase 5: Behavioral Interview
The final interview focused on behavioral and communication skills. Topics included motivation, teamwork, conflict resolution, communication style, and collaboration.
A significant portion of the conversation also revolved around Akif’s previous projects, particularly the technical challenges he encountered, the lessons he learned, and how he worked with teammates and other stakeholders.
To prepare, he reflected on his professional experiences and reviewed examples of difficult situations, important technical decisions, and instances where he had to balance competing priorities or navigate disagreements.
Final Outcome
A few days after the final interview, Akif was contacted by the HR team to discuss his availability and potential joining date while the hiring manager completed the final approval process. Shortly afterward, he received the official offer and joined Optimizely as a Software Engineer II.
Special thanks to Syed Akif Azwad for taking out the time to share his recruitment experience with me. If you have any queries, feel free to contact him at akifazwad6969@gmail.com
How Shift-Left Testing Helps Us Build Better Software