I mentioned in my previous post that I had 3 interviews in the pipeline. Well, I decided to forgo the third one as I wasn’t bold enough to attempt the assessment that was sent to me. It’s in Java and I reckoned I needed to at least learn it first.

That left me with 2 possible offers. I got a call yesterday evening from 1 of them and nope, it wasn’t good news. Right, now that it’s done, I’ll share the details.


It was an interview with ThoughtWorks Singapore. I applied for the Graduate Programme where all successful applicants will go throught a 5-week training at the campus in Pune, Inda. You can read more about it here.

The rundown on the interview day was:

  • Opening note by MD for Singapore, Jessie Xia
  • Presentation by a ThoughtWorker
  • A coding assessment for an hour
  • Break and refreshments
  • Pairing exercise with a ThoughtWorker for code refactoring

There were 6 of us – a couple of them are in their 4th year in NUS/NTU, while some are from General Assembly. For the coding assessment, we were handed a brief on a game we were supposed to create in any programming language that we preferred. They called in the Open-closed Hand Game.

How it works.

There are two players – Computer and Player. The Player will always be the first predictor. The Player will input either “CO”, “CC” or “OO” to represent whether he/she has his/her two hands Opened(O) or Closed(C). As the predictor, a number from 1 – 4 needs to be added (e.g. “CO3”) to indicate that the guess is there will be 3 opened hands (i.e. 3 “O”s).  The Player wins with the correct guess, otherwise, Computer predicts next.


“Welcome to the game!”

“You are the predictor, what’s your input?”

Player: CO2


“No winner.”

“AI is the predictor, what’s your input?”

Player: OO


“No winner.”

“You are the predictor, what’s your input?”

Player: CC1


“You win.”

I was so nervous my brain froze. I knew I knew how to write the code but I couldn’t think. I didn’t know where to start. I wrote something but by the end of the hour, I didn’t have a working code.

Everyone else was on either Java, Python or JavaScript. I chose Ruby as it was the one that I knew best.

I was paired up with a ThoughtWorker, Vinh, to refactor the code I wrote. Only 1% of the code I wrote was used so we basically wrote the whole thing from scratch.

We started with unit tests before proceeding to write the production code.

Screen Shot 2018-04-19 at 10.53.19 AM.png

Once we have established the play function, we went on to write the code for the game itself.

Screen Shot 2018-04-19 at 10.56.30 AM.png

Vinh was extremely patient and kind with me throughout the process. The feedback I got from the recruiter yesterday was that I had the right attitude but my coding skills just isn’t quite there yet. She suggested that I continue exploring and polishing my skills and that I can always try to interview at ThoughtWorks again after.

Even though I didn’t get a placement, I genuinely enjoyed my interview with them. They are so giving, personal and professional. I love that they took time to deliberate my performance and shared their evaluation with me despite me being an unsuccessful candidate. Most companies don’t do that and so I’m grateful and appreciate that they do.

A couple of tips for those who are interested in ThoughtWorks:

  • Unit tests are extremely important. Always, always do your unit tests. Don’t know how? Learn. (I sure learnt my lesson cause I was lost.)
  • Object-oriented is important but don’t get all caught up on it. Have a working code to showcase that you know your basics before anything. Refactor after when you have time.
  • Positive attitude. Be nice. Be kind. ALWAYS.

It stung a little (well, a lot, still stings) that I didn’t get through even though I kind of expected that I wouldn’t get it. Who likes getting rejected, right?

I was contemplating on putting it out here as I thought it was quite embarrassing but since I started this blog with the intention to share my journey, I decided that I should share my failures too in the hope that others could learn from my mistakes.

If there’s anyone out there who recently got rejected too, you’re not alone! Also, don’t give up just yet.

Image result for you are your only limit

2 thoughts on “Have an ice cream and keep going.

  1. Hi Liyan , you inspire me a lot , and i wish you luck for your next interview . I tried the code out in python and its working . you can check my blog post on it if you like — https://ilovecodesite.wordpress.com/2018/04/20/openhands-game-in-python/ . I hope you like it .
    If i was there in the interview , the nerves would get the best of me . You did great and it was an experience .
    Have a nice day Liyan and happy coding.

    Liked by 1 person

    1. Thank you, I’m glad you gave it a shot! There are a couple of options to expand this problem.
      1. Player can choose easy or hard for difficulty. e.g the hard AI will only guess the values possible based on it’s own hand state if AI has two closed hands, it would not predict 3 or 4 because it’s impossible.
      2. Allow the player to choose if they want to play against AI or another human. If another human, need to hide player 1 when player 2 is entering their values
      3. When starting the game, allow user to choose the number of players in the game. Adjust the rules accordingly.

      Have fun!

      Liked by 1 person

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s