Mohammad Samiul Islam is probably the brightest star in the sky of NSUPS. Arguably the best problem solver NSUPS has ever seen, he was the workhorse of the legendary NSU BugLovers team that qualified for the 2016 ACM ICPC World Finals. But even more than his problem solving skills, his peers at NSUPS remember him for his wonderful humane qualities. Ever so kind and helpful, he is a much beloved figure in the community. Majority of the current structure of NSUPS is created on the foundation laid by him. Even after becoming a full time Software Engineer, he is always actively helping out NSUPS students, and is always one phone call away for advice and help.
Mohammad Samiul Islam finished his studies at North South University in 2018. His team NSU BugLovers qualified for the ACM ICPC World Finals in 2016 after finishing 3rd at Dhaka regional and 4th at Amritapuri regional contest in 2015. He is currently living in London, UK, where he works as a Software Engineer at Google’s London office. He lives there with his wife Nabila Ahmed (also from NSUPS) who works as a Software Engineer in the same Google office with him. Samiul Islam is also an avid manga reader and is a lifelong fan of One Piece.
Recently Samiul Islam sat down with us and gave us a super interesting interview where he candidly spoke about his days as a competitive programmer, his Software Engineering career, his involvements with NSUPS and about so many other things. You can read the full interview below.
When did you complete your graduation?
I completed my graduation in April 2018.
Could you tell us about your career as a Software Engineer so far?
- HackerRank: My first official part-time job was as a Problem Setter for HackerRank. Back then I was still actively participating in programming contests and as such was looking for a kind of work that won’t distract me too much from my goal. This was the perfect job! I used to spend time reading Number Theory books to come up with problems. I preferred Number Theory because creating a dataset for them was so easy!
- MuktoSoft: Right after coming back from World Finals 2016, I was really eager to start my Software Engineer career. I applied for a part-time role at Mukto Software Ltd (now rebranded as Codemarshal) and they agreed after taking an interview. I worked there for around a year. I used to work mostly on research related tasks here. For example, I was once tasked to research the use of static analysis on codes to figure out its time-complexity (not possible). I learnt a lot about compilers while working on this project, though can’t remember anything about compilers anymore.
- AlgoMatrix: Next I moved to a start-up called AlgoMatrix. One of the founders, Forhad vaia, had contacted me right before the start-up got created and I decided to join them to experience the “start-up culture”. Unfortunately, I had to take a break soon since my university workload increased in the last two semesters.
- Shopee: After I graduated, I moved to Singapore to join a company called Shopee. While working there, within the first month, I interviewed at Google. Within another month, I got an offer from Google. So by the time my probation period ended in Shopee, I was out of the company and back to Bangladesh, waiting for my visa to the UK.
- Google UK: I am working in the Android Frameworks team now, where I mostly focus on Package Management and System Updatability of Android Operating System.
Some notable achievements in your Competitive Programming career?
- Champion at SUB IUPC 2015: Notable cause this was the only IUPC (Inter University Programming Contest) that we managed to win in our whole career.
- 4th at ACM ICPC Asia Amritapuri Site 2015: This was the contest that qualified us for ACM ICPC World Finals 2016.
- Honorable Mention at ACM ICPC World Finals 2016: Though we didn’t do very well in this contest, it still wraps up the whole journey quite well.
How did being involved with NSUPS and Problem solving in general, help you in your career?
- It made preparing for coding interviews very easy (I still have to prepare for other areas).
- I now think about corner cases a lot. Very useful when writing tests.
A memorable experience from your programming contest career that you would like to share?
I have so many memorable experiences that it’s really hard to choose. How about I tell you about my “first” programming contest?
Back then, I used to study at AIUB. It was my first semester and I was still exploring different things back then. I didn’t start my “competitive programming” career yet. In fact, I didn’t even know there existed such a thing.
It all started with a leaflet on the notice board at the campus: “Intra University Freshmen Programming Contest 2011 Fall”. The notice said that there will be a programming contest only for the freshmen’s at the end of the semester. When I saw the notice, it was the middle of the semester, probably November. The contest date was December 25 (yup, I remember the exact date!)
It seemed interesting, so I decided to participate in it. After asking a few seniors about how I should be preparing for it, someone suggested I practiced on UVA, cause that’s the kind of problems I would have to solve. So I went to UVA and decided to practice a bit.
Yeah. I couldn’t solve “The 3n + 1 problem” for a long time. It was frustrating. I practiced for 3 days anyways. Then I moved on.
Next I tried to think for myself and come up with strategies for increasing my chances to win the upcoming contest. Somehow, I got the idea that “sorting” algorithms are crucial to programming contests. In class, I had already learned how to code “Bubble Sort” using C language and found on the internet that it is considered very slow. So I decided to learn new sorting algorithms to give myself an edge!
So I looked it up on the internet and learned a few more sorting algorithms such as, insertion sort and selection sort. Back then I didn’t understand the concept of time-complexity, so I was under the impression that I had learned a vastly superior sorting algorithm than Bubble Sort. I dreamt that while my peers will be struggling with “Time Limit Exceeded” due to using the slow inferior Bubble Sort, I will be swimming to victory using the “superior” “fast” insertion sort in my codes.
But it still didn’t feel enough. I wanted to prepare a bit more. So for the next advice, I probably went to the internet for advice, cause the next thing I did was so insane that only the internet would be able to give such advice: I started reading “The Art of Computer Programming” by Knuth!
I remember going to AIUB library to look for this book and finding it! I thought: “This is it! Once I finish this book, I will be a pro! Blah Blah <internal monologues of day dreaming>”. I can’t really remember a lot about what happened after I started reading the book. I guess the first few pages/chapters was about describing the model “computer” that we will be studying? All I remember is that it was boring. I still persevered through it. Finally I found something interesting at the end (second or third chapter, not the end of book): How to calculate Greatest Common Divisor (GCD).
The book described the algorithm well, but I didn’t really understand it. So I memorized the GCD algorithm. It was 4-5 lines anyways. Next came the time-complexity analysis of the algorithm, which was around 2-3 pages long (maybe? Can’t remember). Anyways, I didn’t read those obviously. I was already satisfied with my gains.
With 3 AC on UVA, 2 new “superior” sorting algorithms and a GCD algorithm, I was feeling really lucky.
On the day of the contest, I arrived on time sharp at 9 am. One of the judges came out of the “Judging Room” to take a look at how many contestants there were and was shocked to see that only 4 people came to participate in the contest! It was just me, my two friends from the same Batch and a student from EEE. Apparently, the last freshmen contest had over 40+ contestants, so they were expecting a lot more. So they decided to postpone the contest a bit. When the judge came out again at 9:30, the numbers had actually decreased instead! The EEE student left the contest arena after becoming impatient. The judges decided to start the contest before the numbers fell even more…
And so the contest started with just three of us. There were a total of 10 problems in the contest and it ran for 5 hours. It’s funny how there were more judges than contestants. I think there were 7 judges in that contest, all senior students from AIUB.
I think I managed to solve 4 problems in that contest. First one was the give away, second was a simple probability problem, third required GCD (yay!!!!) and the fourth required sorting. For the fourth problem, I obviously used my “super fast” insertion sort. Since it was a freshmen contest, the judge was kind enough to make the value of N < 1000 in the sorting problem, so O(N^2) solutions passed. I totally thought I would get TLE if I used bubble sort though.
At the end of the contest, one of the judges presented the analysis of the problems. They also mentioned that they run a “ACM ICPC” programming club and if we are interested we could join. Then they mentioned that they have a Coach, Jane Alam Jan, creator of LightOJ and a World Finalist, training them. But unfortunately, we won’t get the opportunity to train under him. Why? Because the coach had just gotten a job offer from Google and he was leaving the country soon. Then they told us some inspiring stories about our coach and how competitive programming had helped him get the job at Google.
I won the contest. It was a wonderful experience. I came back learning a lot from that contest. But more importantly, I came back inspired to learn more about competitive programming. “If a person can really get a job at Google by doing competitive programming, then perhaps I should give it a try too? Even if I don’t get a job at Google, I will still be able land somewhere decent probably.” — my thought.
What are your hobbies outside programming?
Assuming I don’t have to be regular about something for it to be my hobby:
- Reading Manga
- Reading Chinese Webnovels, e.g, The King’s Avatar, Library of Heaven’s Path
- Playing Ukulele (started playing it recently)
As a problem solver, what type of problems did you like to solve?
I liked Combinatorics, Network Flow, Dynamic Programming, any twist on classical algorithms.
Didn’t like: Data Structures, String.
What is a typical day in the life of Mohammad Samiul Islam like?
Assuming we are talking about a typical day before the pandemic started:
- Wake up around 6-6:30 am.
- Breakfast + Quite time till 9:00 am
- Start getting ready for work. I am usually at the office by 10.
- Work and stuff.
- Head back home at 6. At home by 6:30.
- Freshen up by 7 pm.
- Assuming I don’t have to cook, I have the time for myself till 9 pm.
- 9 pm to 10:30 pm: Dinner + washing dishes + watching netflix with family.
- Asleep by 11 pm.
This is the typical template for weekdays, which I admit, is not very interesting.
Any advice for the new generation of aspiring Problem Solvers?
Try to build discipline, instead of searching for motivation. Motivation will come and go, but discipline will stick with you for longer.